If you want to learn programming then I think you should steer clear of the C family of languages as a first language. Once you've got the basic ideas burnt into your brain then I'd guess you can introduce those languages since a lot of embedded stuff is done in it, although with developments like MicroPython (see Micro Python - Python for microcontrollers) then I'm not sure that it will be as relevant in the future.
I voted for Python as a first language (it has a simple syntax with fewer oddities than a lot of other languages, has fantastic libraries, and there's very little verbiage with it), but just having done some largish programming projects (non-embedded) I really appreciate a strongly typed language with a good IDE, e.g., VB.NET in Visual Studio, although this isn't terribly viable for EE work.
As an aside look at http://www.nhtsa.gov/staticfiles/nvs/pdf/NASA_FR_Appendix_A_Software.pdf for details of the investigation that NASA did into the Unexplained Acceleration problems suffered by Toyota cars in the States. The software was all written in C, and the company has a mandatory programming style that forbids the use of certain parts of the language since they are the ones that tend to cause problems.
As CAR Hoare said "There are two ways of constructing a software design. One way is to make it so simple that there are obviously no deficiencies. And the other way is to make it so complicated that there are no obvious deficiencies.". I think he was referring to C++.
I particularly like the inventor of C++ on the entire topic: "There are only two kinds of programming languages: those people always *** about and those nobody uses.”
If you want to learn programming then I think you should steer clear of the C family of languages as a first language. Once you've got the basic ideas burnt into your brain then I'd guess you can introduce those languages since a lot of embedded stuff is done in it, although with developments like MicroPython (see Micro Python - Python for microcontrollers) then I'm not sure that it will be as relevant in the future.
I voted for Python as a first language (it has a simple syntax with fewer oddities than a lot of other languages, has fantastic libraries, and there's very little verbiage with it), but just having done some largish programming projects (non-embedded) I really appreciate a strongly typed language with a good IDE, e.g., VB.NET in Visual Studio, although this isn't terribly viable for EE work.
As an aside look at http://www.nhtsa.gov/staticfiles/nvs/pdf/NASA_FR_Appendix_A_Software.pdf for details of the investigation that NASA did into the Unexplained Acceleration problems suffered by Toyota cars in the States. The software was all written in C, and the company has a mandatory programming style that forbids the use of certain parts of the language since they are the ones that tend to cause problems.
As CAR Hoare said "There are two ways of constructing a software design. One way is to make it so simple that there are obviously no deficiencies. And the other way is to make it so complicated that there are no obvious deficiencies.". I think he was referring to C++.
I particularly like the inventor of C++ on the entire topic: "There are only two kinds of programming languages: those people always *** about and those nobody uses.”
Top Comments