Must learn prog. languages for electronics/embedded/VLSI career: C/C++, VHDL, Verilog, and Java
When it comes to programming embedded software, C/C++ remains the most popular. The popularity seems to be growing further extending into even chip programming.
In today's world, if electronics engineer doesn't know C programming in depth, that's going to be severe handicap in most of the areas except in power electronics. Even in power electronics embedded microcontroller is playing increasingly important role in digital control of power, sooner programming skills may become necessity in power electronics.
When it comes to microcontroller programming, assembly language is no more relevant except for 8051 basic programs or such low-end 8-bit microcontroller programs. C/C++ language is near hundred percent used in 32 bit MCU programming. ARM processor core knowledge and C language is becoming important factor in EE's career.
In many situations, very good programming skills in C and C++ language alone can get you a job even if you don't know much of the electronics. But it's a serious career risk to depend on the programming language skills alone. There was a time in early 90s in Bangalore city, electronics and related engineers with programming skills in C language alone can get you a job in multinational companies. C language proficiency was an important factor for candidates to get selected in companies such as Texas Instruments, when it had started operations in Bangalore.
The importance of C++ is also growing in embedded software due to the complexity of systems designed in today's world. The object-oriented programming is required for today's some of the complex electronic systems. C++ is chosen to make the programming simpler in case of object-oriented programming requirements. However choice of a programming language differs from project to project. If there is enough memory space and higher performance processor and big applications such as Linux based apps, C++ is a natural choice.
Well this is about embedded software, when it comes to VLSI design, HDL programming is the basic. Though VHDL, Verilog and System Verilog is becoming popular, HDL is still a first step. The fluency in HDL coding is essential for a digital IC design engineer. In VLSI design, what is more important than coding is, a good understanding of core electronics, in depth understanding of how semiconductor device works? in depth understanding of how basic PN junction diode work? And in depth understanding of how a basic bipolar junction transistor work or a MOSFET work? Even more basic understanding of electrical energy and also complete knowledge of electrical components such as inductor, capacitor resistor, and their mathematical behaviour is required for a VLSI design engineer. Than only comes the importance of HDL programming/coding. Once a VLSI engineer is through with the HDL programming, VHDL (VHSIC HDL) and Verilog is also essential. VHDL is little more typo compared to Verilog which is more like C. VHDL is more descriptive and self-explanatory language but needs lot of typing. Verilog is more like C type syntax. System Verilog is even more advanced and is called as Hardware Description and Verification Language (HDVL). A step further now is another new method called UVM. "Universal Verification Methodology (UVM) is an open source SystemVerilog library allowing creation of flexible, reusable verification components and assembling powerful test environments utilizing constrained random stimulus generation and functional coverage methodologies." defines Aldec in its website. Www.aldec.com is a good source to know various VLSI programming languages.
If you're a FPGA programmer, the combination of C programming and VHDL/Verilog programming makes you better FPGA designer. IP creation and verification using C algorithms is becoming alternate to RTL.
Growing importance of Java in embedded systems: Recently there is some scope for using Java in embedded systems. Main driver is Internet of Things (IOT). Since in IOT it's all about networking, the use of Java, a Internet specific language makes few things simpler and easier and also secure. That's the reason these days some of the developers using Java for developing network intensive embedded systems majorly for Internet of Things applications.
Importance of graphic user interface programming: GUI is nearly must in most of the embedded system applications. Whether it is C or C++ or Java. Graphic user interface programming expertise is essential. Skills such as, compliant to safety and security standards, maintainability of code, the total size of the code matters.
-To be continued--