What it is: The Ada programming language was a Department of Defense sponsored programming language designed to standardize on a single programming language for defense-related work and provide maximum safety in real-time environments.
Way back in the 1970s, the Department of Defense had a problem. Military programming was done with a variety of different programming languages that made it difficult to update and modify. The Department of Defense’s solution was to commission a new programming language that defense-related work could standardize around. One of the criteria for this new language was that it had to prevent common programming errors that could prove fatal in real-time, embedded systems.
After a competition, the Department of Defense chose a new programming language based on Pascal and dubbed it Ada after Ada Lovelace, considered the world’s first programmer. The goal was to make Ada a standard programming language for all military projects.
It didn’t work.
Initially the problem was that Ada was a large and complicated programming language, which made it difficult to create compilers for Ada. While the Department of Defense mandated Ada for most defense contracts, the rest of the world ignored Ada and adopted C and its variants like C++ instead. By 1997, the Department of Defense gave up requiring Ada for military contracts and allowed off-the-shelf products to be used instead, which often meant using another programming language besides Ada.
Yet despite this failure of Ada to become the standard programming language of tomorrow, Ada is still used in mission-critical programming such as avionics. Boeing used Ada to program their 777 jet liner and Canada’s air traffic control system was written in Ada. For maximum safety where lives are at stake, Ada has proven successful.
If Ada works so well in mission-critical solutions, how come commercial programmers don’t rely on Ada to create software that would have fewer bugs and be less prone to failure? After all, Ada is proven to prevent catastrophic failures in software.
The problem is that people don’t objectively choose what’s best. Instead, they choose what they’re used to and rationalize why it has to be the best. If your life depended on it, would you rather trust a program written in Ada or C++? Ada has a history of preventing catastrophic errors. C++ does not, yet C++ remains more popular. If more software were written in Ada, there would be fewer software catastrophic failures. People don’t build bridges out of balsa wood because it’s not strong enough or durable enough, yet they don’t make that same distinction between Ada and C++. Ada is strong and safe. C++ is not. Yet the world has adopted C++ instead.
Even the variants of C++ like Java, C#, and Objective-C still retain many of the flaws of C++. Ask a C++ programmer why they don’t use Ada and you’ll hear all sorts of excuses and reasons, but what you won’t hear is that Ada programs are much safer than C++ programs.
From a computer efficiency point of view, C++ beats Ada every time, but software isn’t just about efficiency but reliability and safety too, and that’s where Ada wins every time. Ultimately the only reason people use C++ and its variants is because they don’t value safety and reliability enough to justify switching to Ada. As a result, most personal computers, smartphones, and tablets rely on C++ and its variants, which basically condemns the world with buggy, unreliable, and untrustworthy software.
Is this rational? Of course not, but human beings are anything but rational. The biggest flaw of human beings is that they fool themselves into thinking they’re rational when they’re really not. Yet because they think they are, they won’t bother looking at alternatives.
Despite Ada’s sterling track record, it’s not going to be anyone’s favorite programming language any time soon. Ada is barely taught in college where introductory programming courses prefer overwhelming novices with the complexity of Java or C++ instead. Most compilers are designed for a C++ variant and not for Ada. Ada compilers are simply not as polished as similar compilers for Objective-C or C#, and the opportunities for Ada programmers is much more limited than opportunities for C++ programmers.
Since people rarely think rationally, you can expect this problem to continue in the future. Ada will languish on the sidelines while fulfilling mission-critical programming tasks, and the rest of the world will continue using C++, C#, Java, and Objective-C while not realizing that Ada could be a safer, more trustworthy option. Since it’s unlikely that the world of OS X and iOS programming will adopt Ada any time soon, the best bet is to adopt Apple’s new Swift programming language instead, which combines the speed and efficiency of Objective-C with the safety and readability of Ada.
If you want to know the future of computing, it’s never about features. It’s always about irrational choices that people rationalize later in the future. The next time someone tries to tell you the superiority of anything, just realize there’s probably an even better alternative, but you’ll never look for one if you blind yourself to accepting what everyone else accepts as “the best” in the first place.