It is a bit difficult to select a particular language as it depends on the application.
My day job is research in computer science and I normally program in either ML (a functional programming language) or in C. ML is a much more robust and secure language but you're further removed from low-level operations such as bit shifting, and it is for this reason that I think C is the best language for electronic engineers. Assembler has the drawback that it is too hardware specific. Higher level languages don't give you such direct access to registers and memory.
Though C is low level, you can code in a modular/object orientated way. For example by keeping modules in separate files (which then become equivalent to C++ classes) you can hide local functions and data by declaring it static and only have interface functions visible externally. Of course you don't get inheritance and polymorphism except by having some naming code for functions with different types of arguments but the point I'm trying to make is robustness/maintainability of code is really down to how ordered the writing of it is not on the language used.
It is a bit difficult to select a particular language as it depends on the application.
My day job is research in computer science and I normally program in either ML (a functional programming language) or in C. ML is a much more robust and secure language but you're further removed from low-level operations such as bit shifting, and it is for this reason that I think C is the best language for electronic engineers. Assembler has the drawback that it is too hardware specific. Higher level languages don't give you such direct access to registers and memory.
Though C is low level, you can code in a modular/object orientated way. For example by keeping modules in separate files (which then become equivalent to C++ classes) you can hide local functions and data by declaring it static and only have interface functions visible externally. Of course you don't get inheritance and polymorphism except by having some naming code for functions with different types of arguments but the point I'm trying to make is robustness/maintainability of code is really down to how ordered the writing of it is not on the language used.
Top Comments