Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

I am looking for statistics concerning the distribution of programming languages in the embedded sector. Do you know any good websites, articles or books?

I found this as a first reference but am still looking for further information:

http://www.eetimes.com/electronics-blogs/industrial-control-designline-blog/4027479/Real-men-program-in-C?pageNumber=0

I need this for my bachelor thesis which is about programming the HAL of microcontrollers using OOP.

share|improve this question

migrated from stackoverflow.com Aug 10 '11 at 8:58

This question came from our site for professional and enthusiast programmers.

2  
Not a scientific statistic but an anecdotal data point: over 90% of the embedded job offers I receive are for pure C. This seems to be because of the large availability of good standard C compilers for many platforms, and standards such as the en.wikipedia.org/wiki/MISRA_C –  Joris Timmermans Aug 10 '11 at 9:05
    
OOP is not language dependent you can use asm or c or pascal or whatever. –  dwelch Aug 10 '11 at 13:46
    
asm and C will certainly be the primary supported languages for any system. beyond that depends on the architecture and popularity and sometimes the chip vendor's willingness to invest if there is no demand. –  dwelch Aug 10 '11 at 13:47
3  
An additional problem with a survey of this type is that the term "embedded" is quite fluid. A TiVo or a smartphone is quite a different beast than a milling machine, which is yet again quite different than a kitchen timer. But there are people who would classify all of these as embedded devices, and some people who would exclude some of these. And everybody could be right depending on context. –  Michael Burr Aug 10 '11 at 15:54
add comment

3 Answers

According to a VDC survey of embedded developers in 2010:

  • C - 82%
  • C++ - 45%
  • Java - 13%

and it goes down from there. A more readable graphic can be found here.

Note that these answers are not mutually exclusive, i.e., someone might reply that he's using C, C++ and assembly, all in the same product. Thus, the percentages add up to more than 100%.

I was shocked to see Java at 13% - no system I would consider "embedded" runs Java, and I was also surprised that Ada only came in at 3%, although Ada tends to be found only in certain segments (avionics, defense, etc.) so I suppose it's plausible. Did I mention I find the 13% Java figure shocking?

Also, the term "embedded systems" is so broad - from 4-bit u/Cs with 16 bytes of RAM to 64-bit core i7 CPUs with 8GB of RAM, so it's difficult to draw any conclusions.

The only thing I can say after working on many, many embedded systems for many, many years (typical: 256K flash, 100MHz CPU, maybe 32K RAM) is that C is used in virtually all of them. And even though I love C++ (which puts me in the minority), I think 45% is "way high" based on my time spent with probably almost 50 firms.

One other point - even though assembly is present in virtually all embedded systems (even if just "boot code" and/or interrupt veneers), chips like the ARM Cortex M3 make it possible to write virtually 100% of the code in C or C++. Furthermore, the question asked "what languages developers use", not "what languages are used?". The distinction being that much of the assembly code in an embedded system is provided by an outside source (board vendor, toolset vendor, kernel vendor, etc.) and so the developer himself doesn't use assembly.

share|improve this answer
    
I know that OnStar uses Java in their devices (or they struck a deal with Sun in 2000, not sure if it is still used). I also found this java.sun.com/developer/technicalArticles/J2ME/TLA.html which is outdated as well, but still surprising to me. –  Jetti Aug 10 '11 at 15:37
1  
What's surprising about Java? Something as large as a mobile phone can count as embedded, and there's a lot of Java in the feature phone and smart phone world. Java presumably includes Javacard, which runs on many smartcards (though I suspect this anecdotic on the scale of this survey). What surprises me is Perl and Python (but no Forth) — were modeling and testing tools included in the survey? –  Gilles Aug 10 '11 at 16:53
    
@Gilles Exactly, a lot of phones run Java, including J2ME and MIDP running on 150 million Nokia phones alone, and on more than a billion in total. Also, there's quite a bit of Python on mobiles: Symbian, Android, iPhone. –  Hugo Aug 10 '11 at 19:12
    
You have to moderate any conclusions from the survey by considering that respondents are self-selecting. With respect to Ada, maybe all the Ada developers in sensitive military applications are not allowed to give out the kind of information asked for in the survey. Note that the numbers add-up to greater than 100%, so while 45% of developers use some C++, they may only use it for a small percentage of their work. On the other hand, C++ lends itself to larger applications so as a volume of code, maybe it is higher than you expect. My C++ usage is nearer 95%, currently also on Cortex-M3. –  Clifford Aug 10 '11 at 19:38
add comment

Last year I filled a questionnaire on www.vdcresearch.com. You can take a look in embedded system SW reports - you might informations about the languages used for embedded system.

Acording to What languages do you use to develop software? :

enter image description here

share|improve this answer
    
Thanks, that's quite interesting. But unfortunately I couldn't find any information about used programming languages.. –  Mirco Aug 10 '11 at 8:52
    
@Mirco Maybe they didn't publish all results, but I am sure there was a question which language did I use –  BЈовић Aug 10 '11 at 9:07
    
-1 Answers shouldn't just link, but should contain a summary of the information behind the link. Especially when the questioner follows the link and doesn't find the answer there. –  Hugo Aug 10 '11 at 19:14
    
@Hugo First of all, it wasn't easy finding the exact information, but I provided the information where to look for, and that in my opinion is good help. Anyhow, I put the graph you asked –  BЈовић Aug 11 '11 at 6:51
    
+1 Good work, it's a real answer now :) –  Hugo Aug 11 '11 at 12:21
add comment

From what I've seen over the years, a finger in the air estimate is as follows. I have no references to back this up but I've worked for a few organisations that deal heavily with embedded systems:

  • 80% = C
  • 10% = Assembly
  • 5% = ADA (mainly avionics/military)
  • 5% = Others (mainly high level languages/DSP specific/LabView).

Some higher level systems are built with high level languages or C++ on top of Linux or various RTOS implementations, which are hard to quantify as there is some overlap with HLL's and C above. I've even seen some stuff done in C#.

share|improve this answer
    
The "embedded systems" sector could be split in two, one which deals with typical industrial/automotive/med-tech/avionics etc applications, and one which makes toys, phones and fluff. Your reply seems to go well with the former of those, but if you also take the embedded fluff sector in acount, both C++ and Java ought to end up far higher. –  user29079 Aug 12 '11 at 12:26
    
That is fair. I've had little to do with the fluff side of things (thank goodness). –  Deleted Aug 12 '11 at 12:34
    
Embedded is a dangerous term :) Personally I prefer to speak of realtime, microcontroller programming, hardware-related, high integrity systems, or what else I can come up that excludes the fluff. I also start laughing every time I hear the words Embedded Windows :) –  user29079 Aug 12 '11 at 13:49
    
Agree there. Urf don't mention embedded windows. I did a year of pain with Windows CE point of delivery systems. I still get night terrors. –  Deleted Aug 12 '11 at 17:52
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.