{"id":2043,"date":"2011-08-01T09:11:35","date_gmt":"2011-08-01T08:11:35","guid":{"rendered":"https:\/\/blogs.mentor.com\/colinwalls\/?p=2043"},"modified":"2026-03-26T16:35:26","modified_gmt":"2026-03-26T20:35:26","slug":"the-ideal-programming-language","status":"publish","type":"post","link":"https:\/\/blogs.sw.siemens.com\/embedded-software\/2011\/08\/01\/the-ideal-programming-language\/","title":{"rendered":"The ideal programming language?"},"content":{"rendered":"<p>I recently <a href=\"https:\/\/blogs.mentor.com\/colinwalls\/blog\/2011\/07\/18\/what-language\/\" target=\"_blank\" rel=\"noopener noreferrer\">wrote<\/a> about programming languages and discussed which ones are common for embedded applications. Among the responses to that posting was a message from Robert Dewar from <a href=\"http:\/\/www.adacore.com\/home\/\" target=\"_blank\" rel=\"noopener noreferrer\">AdaCore<\/a>. He makes the following points:<\/p>\n<p>&#8220;It&#8217;s interesting to note that you omitted one language mentioned in the VDC report, namely Ada. Ada is interesting because, as you noted, all the other languages do not share Ada&#8217;s important characteristic that it was designed for embedded use. For example, the recognition that multi-threading is fundamental in most embedded programming, and therefore comprehensive features for handling this are an important part of the Ada language design. Other languages have no support at all for threading in the language itself (C, C++), or very rudimentary support (Java) that falls far short of what is needed (a fact recognized by the attempt to extend Java for real time use).<\/p>\n<p>&#8220;The usage of Ada mentioned in the VDC report is listed as 3%, but that number may be deceptive in that it misses the fact that Ada&#8217;s predominant use is in large-scale safety- and security-critical systems. Significant parts of the avionics of many new planes are written in Ada, and also a number of other critical systems, such as air traffic control systems. I suspect that if you counted lines of code, and weighted the results by the significance of the applications involved, Ada would come quite a bit higher on the list.&#8221;<\/p>\n<p>Robert is, of course, completely correct. Although not unique in its incorporation of multi-threading in the language, Ada is probably the only widely used language that was really designed for embedded applications. I think that my own lack of experience with Ada meant that I did not give it due consideration. I wonder if Ada usage is declining, stable or growing? Comments or <a href=\"mailto:colin_walls@mentor.com\" target=\"_blank\" rel=\"noopener noreferrer\">email<\/a> are welcome.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>I recently wrote about programming languages and discussed which ones are common for embedded applications. Among the responses to that&#8230;<\/p>\n","protected":false},"author":71677,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"spanish_translation":"","french_translation":"","german_translation":"","italian_translation":"","polish_translation":"","japanese_translation":"","chinese_translation":"","footnotes":""},"categories":[1],"tags":[422,300,340],"industry":[],"product":[],"coauthors":[],"class_list":["post-2043","post","type-post","status-publish","format-standard","hentry","category-news","tag-ada","tag-embedded-software","tag-programming-languages"],"_links":{"self":[{"href":"https:\/\/blogs.sw.siemens.com\/embedded-software\/wp-json\/wp\/v2\/posts\/2043","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blogs.sw.siemens.com\/embedded-software\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blogs.sw.siemens.com\/embedded-software\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blogs.sw.siemens.com\/embedded-software\/wp-json\/wp\/v2\/users\/71677"}],"replies":[{"embeddable":true,"href":"https:\/\/blogs.sw.siemens.com\/embedded-software\/wp-json\/wp\/v2\/comments?post=2043"}],"version-history":[{"count":1,"href":"https:\/\/blogs.sw.siemens.com\/embedded-software\/wp-json\/wp\/v2\/posts\/2043\/revisions"}],"predecessor-version":[{"id":9984,"href":"https:\/\/blogs.sw.siemens.com\/embedded-software\/wp-json\/wp\/v2\/posts\/2043\/revisions\/9984"}],"wp:attachment":[{"href":"https:\/\/blogs.sw.siemens.com\/embedded-software\/wp-json\/wp\/v2\/media?parent=2043"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blogs.sw.siemens.com\/embedded-software\/wp-json\/wp\/v2\/categories?post=2043"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blogs.sw.siemens.com\/embedded-software\/wp-json\/wp\/v2\/tags?post=2043"},{"taxonomy":"industry","embeddable":true,"href":"https:\/\/blogs.sw.siemens.com\/embedded-software\/wp-json\/wp\/v2\/industry?post=2043"},{"taxonomy":"product","embeddable":true,"href":"https:\/\/blogs.sw.siemens.com\/embedded-software\/wp-json\/wp\/v2\/product?post=2043"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/blogs.sw.siemens.com\/embedded-software\/wp-json\/wp\/v2\/coauthors?post=2043"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}