Tuesday, 18 December 2007

Ada

Ada is a programming language. Not many people seem to have heard of it. It's original use was high-integrity avionics systems. We use it as our core development language for desktop software.

Using Ada (instead of a more conventional C or Java) has undoubtedly saved our tiny company many tens of thousands of pounds in software development costs.

How do I know this figure? (We didn't develop all our software twice in two languages just to see which one takes longer/gives higher quality). Of course I don't have any hard evidence for this figure, but I know that we made the right choice when starting with Ada. A conversation in the office, a few months ago reminded me of this. It was something like:

Experienced engineer: Ian, our compiler works with GDB doesn't it? Do you know how to use the debugger?

Ian: Yes - it's quite straightforward.

Experienced engineer: Can you show me? I have a bug that the compiler hasn't spotted, I think it might be useful to look at the variables at run-time.


I remember learning Ada, as a first year undergraduate at York. My colleagues around me were swearing at the screen...."Why won't my program compile.....I hate Ada". For myself (rather used to interpreted BASIC) I was just pleased that the compiler wouldn't even provide a program until it was pretty sure that you had actually written what you meant to write.

It might take a minute longer to write a program in Ada that prints "Hello World", but you are totally sure that it won't print "ello Worldáááááá\p" then crash with a segfault, requiring painstaking single-stepping through your code to fix. When you apply this kind of engineering to a large application, the overall development time is incredibly low because your time spent testing and debugging is much lower. In particular, those annoying sort of bugs that cause data corruption, strange crashes, core dumps, general unreliability etc. just don't seem to occur using Ada.

No comments:

Post a Comment