This is series of interviews with software developers interested in Ada programming language. The goal is to promote the community members and the language itself. Do you want to take part in this? Contact me!
The previous interview, with Patrick Kelly, can be found here.
My name is Vinzent Höfler, my first programming experience was at the age of 12, when I wrote BASIC programs into a little notebook to be typed in later at the three to four hours a week during which I had access to an actual computer, which was an 8-bit machine, comparable to the C64. Years later I started with Turbo-Pascal on my first owned computer (a used IBM PS/2, with an amazingly fast 16 MHz Intel 386SX processor and whopping 2 megabytes of RAM). Then came the Internet and with it Usenet and newsgroups, and it was around 1996 when a guy whose opinion I valued, mentioned Ada in a discussion thread, so I dug into it. Coming from Pascal, the transition was relatively easy, the language syntax and concepts are similar, but considerably strengthened in Ada. I actually learned the language from reading the reference manual. I tried applying Ada in the job I had at that time, with some success. After a brief interlude at an automotive company where I wrote applications in C for tiny microcontrollers, I got lucky and landed a contract job at the Eurofighter program, which was my first all Ada job. These days I work at Eurocontrol in the team responsible for the tactical flight planning (e.g. ETFMS).
The type system. First, the ability to declare types which relate to actual things in the real-world instead of just being a machine type. Second, being able to make them distinct types which are not compatible to each other even if they incidentally implemented the same way. You can have a type
Altitude, a type
Voltage, and a type
Light_Year and even though they all may be 32-bit integers, there’s no way to confuse them. Looking at other languages, where I’ve seen functions that take ten parameters of a type int(eger), ask yourself: How do you even ensure that each one gets their correct value? In Ada, these can all be different types and even if they are of the same type, you can use named notation which makes it possible to distinguish.
Also, Ada’s tasking system gets a honorable mention here.
Hate is a strong word. There is no single feature I can think of that I actually hate. I have some things I don’t exactly agree with, but most of the time I understand the design decision behind them. Fixed string handling can be cumbersome. Also, I don’t particularly like the notion of having
out parameters in function calls, but I acknowledge that the restriction has been rather artificial, anyway; since functions could always have side effects via global variables or could change their parameters by simply giving an “access” to them.
Ok’ish, in a sense. From what I’ve seen, the adoption of Ada has grown slowly, but it is far from what I would wish. It has always been quite strong in the safety critical software development (avionics, railways, etc.), but since Ada2012 introduced pre- and post-conditions into the language, and the SPARK subset for formal proof was revised accordingly, it also seems to gain some traction in the security critical community and I expect that particular interest to grow. We live in a time where virtually every device wants to be connected to the internet software related security issues are still ubiquitous. The adoption of Ada/SPARK would certainly be helpful in alleviating a lot of those. But there seems to be a steep learning curve involved, still many companies don’t even acknowledge that security should be part of their product requirement.
I’d like to see more compilers for Ada, though. If you want to have a compiler for the current language, AdaCore’s GNAT is the only option. There are a few other compiler vendors out there, but to my knowledge, GNAT is the only Ada2012 compiler and will most likely be for the foreseeable future. Luckily, GNAT is part of GCC, so at least in that regard it’s not likely to disappear.
Honestly, I actually haven’t really thought about it. I’m quite happy with what we have now. That being said, I look forward to Ada202X, language support for fine grained parallelism is a nice thing to have.