Continue to Site

Welcome to EDAboard.com

Welcome to our site! EDAboard.com is an international Electronics Discussion Forum focused on EDA software, circuits, schematics, books, theory, papers, asic, pld, 8051, DSP, Network, RF, Analog Design, PCB, Service Manuals... and a whole lot more! To participate you need to register. Registration is free. Click here to register now.

which programming language is a must for an embedded systems engineer?

Status
Not open for further replies.

RishabhG

Member level 3
Member level 3
Joined
Aug 10, 2012
Messages
65
Helped
0
Reputation
0
Reaction score
0
Trophy points
1,286
Activity points
1,815
Which programming language(after C) knowledge is a must for an embedded systems engineer?

I guess Java or maybe Python? I have about a month's time,so I was thinking of learning a language but couldn't decide on which one.

Please suggest some resources to learn the language you recommend through your answer.
 

If you are an embedded system designer, you should have good knowledge on both software and hardware topics. From my point of view, instead of focusing on other similar languages which are only the matter of grammar and some miner differences, you may learn a hardware description language such as Verilog or VHDL. This will increase your insight in the hardware staff.
 

I am actually an undergraduate student who aspires to be an embedded systems engineer. Also I know a little bit about Verilog HDL; I don't really enjoy it! Sorry
 

If you know c, you can try to learn something about micro-controllers. In micro-controllers, using C language you can configure hardware to do funny staff. For example you can design a watch for yourself.
Check the internet for AVR micro-controllers.
 

I didn't mention I am already learning PIC16 MCUs...
 

I know 8051, PIC and AVR MCUs and I have worked with all of them. If you want to learn on of them, AVR is the best.
 

Some Embedded System's project require remote monitoring of some sort. So it is better to learn how to make GUI Applications on .Net platform. I recommend C#.Net
 

@ebrahimi.khoy I am learning PIC.

@qwertyuiop415263 C# or .NET which one? resources please.
 

OVERALL, in the embedded software world: C language is #1, then C++ language is #2, then assembler language is #3.

The only time I ever use assembler are: after reset to initialize critical hardware but before setting up the C environment; rare-times that I need assembly in some interrupts; or take advantage of special assembly instructions to do something; or an algorithm that needs to be done faster than C.

Overall, C++ is overkill for the smallest microcontrollers, plus there isn't enough RAM to fully take advantage of it.

Overall, C is the most useful thing to learn for embedded programming.
 
Last edited:

which programming language is a must for an embedded systems engineer?

I find this all discusion sort of useless. Sorry for that, but the OP is starting this thread having doubts on Python and Java, and after a couple of posts he has concerns on PIC programming.
The answer is that there is no "must". Start using the language you feel comfortable with. Have you made you own research on this? This thread is turning into a debate. It would be better to present your clues on your research about this and then come back with something specific for discussion. In the present status, everyone will answer that the language they use is the best.
 

This has not turned into a crazy debate.

The problem with most low-end microcontrollers is they DON'T HAVE ENOUGH MEMORY to run most languages.

Unless a person moves up the microcontroller family tree to one that has more flash and ram, then you are stuck using Assembly / C / C++ or other low-memory-overhead languages.

Lots of languages have been ported to microcontrollers, but their memory requirements will likely axe a bunch of microcontrollers that you would like to use.

No one listed Lua or eLua. I haven't used it, but I know there is interested in it.
 

Enlightenment said:
The problem with most low-end microcontrollers is they DON'T HAVE ENOUGH MEMORY to run most languages.

Unless a person moves up the microcontroller family tree to one that has more flash and ram, then you are stuck using Assembly / C / C++ or other low-memory-overhead languages.
I don't agree with such an approach. If you need to produce thousands or more of a construction, then cost matters. If you move on to bigger MCUs, then cost is increased dramatically. Those "low-memory-overhead languages" are actually a benefit and not a disadvantage and people are not "stuck" in those languages, but they are using them for some reason. Still, even if bigger MCUs are used I cannot find a reason why to use higher level languages. "Reduced development time" someone would say, but if you consider that many people have their source files (if we are talking about C) portable from one project to another and from one MCU to another, then the high level is in fact the developed part, together with peripherals used for the first time. Portability may not exist in assembly, but accurancy and execution time are benefits that cannot be found in other languages. C is in the middle of all this. Has the benefits of assembly compared to higher level languages, has an accurancy and execution time penalty of course against assembly, but is portable to different MCUs (except the MCU hardware routines).
Still, this is my point of view, but if we are talking about cost reduction techniques via software, then more or less C is the highest level language to be used, maybe c++ in some occasions.


Alexandros
 

If you are interested in writing code for safety-critical embedded systems (say in automotive, aerospace or medical applications), you should learn to program according to the MISRA C standard:

https://en.wikipedia.org/wiki/MISRA_C
 

Alright, let me try to make things more clear.

First of all, I want to learn a language not to program MCUs or FPGAs but to build simple apps.

I have been learning to program PIC MCUs (using C) for some time now(and this post is not for showing my concerns on PIC programming). It has occurred to me that if I want to work on a project that requires me send data to a computer from a MCU and use that data to say plot a graph,make a table or manipulate that data in other ways I need to know a language which can help me build a GUI and do this.

Also I will be continuing to do my programming on PIC as usual; I just thought if I could learn something other than that which I might useful in the future.

Hope you get a better idea of what I am asking.

- - - Updated - - -

Better yet, what are the skills required in order to be an embedded systems engineer?

I guess, one is having experience in programming microcontrollers.
 

It has occurred to me that if I want to work on a project that requires me send data to a computer from a MCU and use that data to say plot a graph,make a table or manipulate that data in other ways I need to know a language which can help me build a GUI and do this.

https://www.edaboard.com/threads/199514/
https://www.edaboard.com/threads/230668/
https://www.edaboard.com/threads/228722/
https://www.edaboard.com/threads/233272/


Better yet, what are the skills required in order to be an embedded systems engineer?

https://electronics.stackexchange.com/questions/3343/how-to-become-an-embedded-software-developer
https://www.edaboard.com/threads/233733/
https://www.edaboard.com/threads/221630/
https://www.quora.com/Embedded-Systems/What-do-Embedded-Systems-Engineers-actually-do
https://www.amazon.com/You-Wanna-Embedded-Engineer-Engineering/dp/0750679530
 
Status
Not open for further replies.

Part and Inventory Search

Welcome to EDABoard.com

Sponsor

Back
Top