The ideal programming language?
I recently wrote 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 AdaCore. He makes the following points:
“It’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’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).
“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’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.”
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 email are welcome.
Comments
Leave a Reply
You must be logged in to post a comment.
I am a Software Engineer working for the government. I have to agree, at least from the Aeronautics field, Ada is by far the most widely used language, when safety critical design is of highest concern.
Yet for the space rated end of the aerospace industry I am sorry to say that C/C++ seem to rule. Not surprising a large number of such projects end up behind schedule and over budget, if not out right canceled. This seems true, from what I have seen, whether or not the software project is safety critical or not, human rated or not.
The reason is that to many software engineers are simply scared of the language, also a surprise. I often get push back on the option of Ada as the language of use on my software projects. The reason most often given is the lack of Ada software developers. The other reason is that is costs to much to develop in Ada. (Most costs are found on the front end yet savings are often found on the back end, during testing, the area most often the cause of software systems failing to meet their budget and schedule milestones.) I believe the first to be a cop-out. The second one is a more reasonable push back. So what is an Ada advocate to do when faced with the market share of C/C++ in the embedded software industry?
Ada has so many advantages over most other software languages, aside from market share, that I often find it hard to understand why it is so often over looked or passed over.
Part of the problem is that Ada is most often sold as the language of choice for embedded human rated safety critical software systems. This may indeed be where it out shines all others yet the very same qualities, features, and or positives Ada has for this very small genre of embedded use would also be beneficial for any embedded software design. Why wouldn’t you, as a software engineer, want to succeed in meeting project budget and schedule milestones? Oops, there is that budget bullet again.
The other issue with Ada is the lack of tool support for Ada development that can meet must software developers or software project budgets bottom line.
As long as Ada is sold simply as the language tool for deeply embedded safety critical software systems, is priced accordingly (HIGH), and remains lacking in tool support, it will remain largely overlooked, under utilized, and tagged with the stigma, “Not on my embedded software system.”
An Ada hold out,
Philip
Fair points Philip. However, I think there are a number of reasons why Ada is not finding wider favour. First is, although it may be ideal for many embedded applications, embedded programming is a minority activity [compared with desktop programming]. Second, Ada has a reputation for having a heavyweight runtime system, which would be off-putting for many designers. Last, there are a decreasing number of Ada tools options and, to the best of my knowledge, no open source tool chain available.
Hi Colin,
Actually, the open source GNU Ada Translator (GNAT) project is nearly 20 years old now and distributed with a GPL license. For those interested, a version for hobbyists, academics, and students can be found at libre.adacore.com.
That’s useful to know. Thanks Jamie.