I am thinking to take the next semester a course called “Digital systems architecture”, and I know that we need to program micro-controllers with several programming languages such as C, C++, verilog, and VHDL. I want to be prepared to take that course, but I need to know if I need to study deeper these languages.
At this moment, I have taken one course in basic Java dealing with basic methods, data types, loop structures, vectors, matrices, and GUI programing. Must I study deeper Java and then go with C, and C++? Besides, I know basic verilog and VHDL.
5
During my studies, we used C and VHDL, but C was by far the more prominent language used. And the advantage of learning C is of course obvious even beyond hardware programming. So that’s what I recommend. When you learn C very well, it should give you no trouble to learn Java and C++ later on – it’s just about learning the OOP aspects of both, mostly. After learning C, you will already have a good grasp of the main principles of programming.
And if our professors are to be trusted, the majority of embedded hardware is still programmed with plain old C, so it should be more than enough to land a job. Then you can branch out to either more sophisticated systems still in C, or more modern (and more rare, would you believe?) programming with C++ and others. The majority of embedded hardware is so simple, that using 32-bit MCUs would be incredibly overkill and a waste of revenue and resources.
But of course, it depends on your interest. If you want to program modern hardware, like GPUs, SSD controllers and such, then C++ will possibly kickstart you closer – although Assembly is most likely what you will be using, depending on how close to the “core” you will get with the hardware.
As for Java, C++ and similar, perhaps multimedia hardware (DVD/BluRay players, modern TVs, etc) is the field that uses those languages.