Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

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.

share|improve this question

put on hold as off-topic by durron597, gnat, Snowman, MichaelT, Bart van Ingen Schenau 13 hours ago

This question appears to be off-topic. The users who voted to close gave this specific reason:

  • "Questions about what language, technology, or project one should take up next are off topic on Programmers, as they can only attract subjective opinions for answers. There are too many individual factors behind the question to create answers that will have lasting value. You may be able to get help in The Whiteboard, our chat room." – durron597, gnat, Snowman, MichaelT, Bart van Ingen Schenau
If this question can be reworded to fit the rules in the help center, please edit the question.

Why don't you ask the professor or someone who teaches the course at your college? It's quite likely that your school will use different tools than my school, so your best bet is to ask the school. Good luck! With that said, I upvoted this question because I'm interested to hear if Java can be used for this sort of thing. I doubt it, but it's not my area of expertise. –  jmort253 Sep 13 '12 at 5:35
C for microcontrolelrs, C++ for larger microcontrolelrs (32 bit), Java for Android. I have heared ADA is cool for small uCs, but that no one uses it ... –  Vorac Sep 13 '12 at 8:31
What's the connection between HDLs and microcontrollers? Hardware design is a huge area, I can't see how it can be mixed with a basic low-level programming course. –  SK-logic Sep 13 '12 at 11:07
ADA for uCs, @Vorac? Finding an ADA compiler for anything other than a very widely used high-end processors (and I'm excluding most microcontrollers) is tricky, and expensive. But agree on C/C++ and probably Java... –  Andrew Oct 4 '12 at 8:36
@SK-logic, you are right, those I listed are programming languages, not hardware design languages. However anything is better than Java ;P. Andrew, there is an ADA compiler for AVR-s. I have heard that no one uses it and is consequently poorly maintained. –  Vorac Oct 5 '12 at 5:25

1 Answer 1

up vote 3 down vote accepted

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.

share|improve this answer

Not the answer you're looking for? Browse other questions tagged or ask your own question.