We discussed about which programming language we learn first ?
Why Computer engineering(CSE) background students are more successful in programming related jobs ?
CSE students learn computer architecture , various programming languages , database, algorithms, compiler, operating system, electronics, security, Microprocessor, Networking etc. In nutshell, you can say they learn all aspects of computer system design and programming.
How the computer architecture can benefit in coding skills ?
Coding skill is a combination of various things including programming language, Mathematics and science behind the domain you are working on. e.g. If you have to write an article on particular subject in English, you must know both English and that subject. You can find software developers for Automotive, Networking, Multimedia, Industrial automation etc. C programming knowledge may be common among them in addition to individual domain knowledge.
Why we need Embedded C to understand even simple Desktop C concepts ?
One can use IDE or command level debugger to do step by step debugging for understanding a particular concept. To understand some C concepts , we may have to enter even in assembly mode or analyze memory. Both assembly and memory management concepts in Embedded system are simpler as compared to desktop.
Do we need hardware to work in Embedded C ?
No you can simply use instruction simulator of IDE. Keil IDE has option for simulator in both C51 and ARM based software development.
Let me share one simple question from Embedkari student community. One can debug this in desktop based IDE or even at onlinegdb.

I don’t recommend such questions for interview but since it was asked by our student, we worked on the same. We have used above program without printf in Keil simulator.
1: Note stack pointer (SP) address and the value 0x05 in that location due to local variable myVar .

2: Second local variable urVar is also assigned same available stack location and it becomes 6 after post increment.

3: Again urVar is also assigned same available stack location and it becomes 7 after post increment.

Why such behavior not restricted by standard ?
As per standard only Static and extern variables will be automatically initialized to zero if not explicitly initialized. So if you want to avoid stack based garbage in urVar, you have three options
- volatile int urVar=0; //can be intialized to any required value
- static volatile int urVar; //It can also be initialized to non-zero
- extern volatile int urVar; // It must be defined outside
Author : Sanjay Adhikari Founder: Embedkari l Ex Motorola | Ex Freescale | Ex NxP | Involved in Training , Recruitment and Consulting
More than 28 years intensive IT experience in designing, developing and supporting various embedded designs in Telecom access networks.
• Implementation of embedded technical support, Hiring & Mentoring of embedded engineers.
• Over 10 yrs experience in handling an embedded-system support team as a Team Lead.
• Provided training to design engineers in using NxP devices, Freescale’s CodeWarrior and Linux BSP.
• Conducted training and demonstration of Freescale technologies in various public events such as Freescale Technology Forum, Design with Freescale etc. It includes 11 national level and five International level seminars
Join Embedkari courses to learn both Desktop and Embedded C