
Is Ada a failed language? - todd8
https://medium.com/@tomekw/is-ada-a-failed-language-9dd71f30b2e2
======
ChrisSD
Is Ads the most hyped language? No. Is it a niche language? Yes. Does that
mean it's a failure? No.

I'm sorry but this blog post is a really superficial treatment of the subject.
How languages rise, fall or command their own little space is a very
interesting topic worthy of a better discussion.

~~~
catnaroek
The problem with Ada isn't that it's niche. The problem is that it has a
gazillion features whose purpose is (ostensibly) to make programming errors
easy to prevent, identify and correct, but fail miserably at it. There is more
to programming than safety, but if safety is going to be one of your
programming language's selling points, then the least you can do is get it
right. The process for getting it right consists of the following steps:

(0) Identify a concrete class X of programming errors you want to eradicate.

(1) Postulate a mathematical theory of what it means for a program not to have
errors of class X.

(2) Develop proof techniques that are powerful enough to establish that
“interesting” programs do not have errors of class X.

(3) Design algorithms that use these proof techniques to prove, or at least
validate a purported proof, that a program does not have errors of class X.
Your algorithm must be able to analyze program fragments (modules, classes,
whatever) independently, and combine information obtained from several program
fragments without reanalyzing them from scratch.

~~~
zzzcpan
There are many fallacies in your ideas. What do you do about programming
errors you cannot identify? And what about programming errors that your
process and your language causes? Can you identify those too? Of course not.
Once you understand that things you introduce into a language can both help
with some problems and cause other problems we can move to ideas on how to
identify and classify those things. And of course we cannot do that with math
proofs.

Programming language design is all about interactions with humans and there is
no place for so much ignorance of humans as your comment expresses. And don't
get me wrong, you can come up with an arbitrary approach to language design
that doesn't involve humans, but it can work for humans only by chance.

~~~
catnaroek
> What do you do about programming errors you cannot identify?

A programming language designer can only do so much for you. If you cannot
identify errors in your programs on your own, consider switching to a
different career.

> And what about programming errors that your process and your language
> causes?

Rigorous reasoning cannot possibly cause any problems. Rigorous reasoning
helps identify and fix problems more often than not caused by prior non-
rigorous reasoning.

> Programming language design is all about interactions with humans

Humans who need to reason rigorously in order to do things _right_ , hence
need to be pushed in this direction.

------
PikelEmi
"Also, Ada’s strictness and correctness may be perceived as an anti-feature.
When talking about general-purpose programming, businesses need fast
development cycles and short delivery times. For the companies, to be
successful, it’s far more important to be ahead of the competition even with
an incomplete product than to let the customers wait and eventually abandon
the project."

That is not necessary true when it comes to aerospace and defense projects. In
these cases it not important to be ahead and have short delivery times, so
here Ada is still suitable.

That the language is a general-purpose programming language does not mean that
it is suitable for all application domains. You always need to use your common
sense and experience too to choose the right tool for your task.

~~~
gaius
_That is not necessary true when it comes to aerospace and defense projects_

They chose to use C++ for the F35, which is buggy as hell, because they
thought there were no Ada programmers available. But if you are planning a
multi-decade project wouldn't you just... train some yourself?

~~~
jaggederest
Points to a general problem (in the US at least) of a complete failure of any
sense of on the job training, or internal advancement.

Companies complain when they can't find purple squirrels, even where they
could find someone with great general skills in the profession and train them,
in about the same amount of time it takes to onboard someone with precisely
the skills you want.

~~~
meddlepal
How do you ensure they stick around? Training has a high cost that isn't worth
it if the people jump ship 2 or 3 years later as is the norm in this industry.

~~~
jaggederest
I dunno, nobody I know is actually looking to job hop. If you treat people
decently, give them raises, train them, why would they have any incentive to
leave?

Hiring somebody new costs 15-25% of the raw salary cost for the year. Pay
people 10% more instead, no incentive to leave.

~~~
gaius
Plus however long it takes to ramp them up, could be 6 months on a reasonably
complex codebase. And the time of other engineers both in the hiring process
and bringing the new engineer up to speed. I’d say the cost of replacing an
engineer could be as much as their entire first year’s comp.

------
pjmlp
> For the companies, to be successful, it’s far more important to be ahead of
> the competition even with an incomplete product than to let the customers
> wait and eventually abandon the project.

Still looking forward to the day refunds and other kinds of legal actions
actually start to change this mentality in software companies.

I don't buy incomplete pair of shoes, half-baked bread, car without seats, ...

------
rbanffy
Is COBOL a failure? Is FORTRAN a failure? How can anyone say a language that's
used for so long can be a failure?

Is it the latest and coolest language? No. It can't be - it was already
solving real problems since well before the people who wrote the latest and
greatest languages were born.

------
rs86
This is one of the worst blog posts ever. Click bait title with absolutely
shallow discussion. Asking if Ada is a failure for lack of widespread adoption
is like asking if JavaScript is a failure for lack of use in satellites.

------
ardit33
Ada was my first true language that I learned in college. (Pascal being the
first language that I learned in high-school, but it is more like a teaching
language). Ada and pascal are somewhat related (very similar).

I have special fondness of it as well, but my second year my college switched
to Java, as they saw it gave more job opportunities to students after
graduation.

ADA was only used from defense contractors, DOD and perhaps Nasa, and that's
why it ultimately failed. It "strictness" is a good thing to have when writing
the code for a Tomahawk misle, but not so much when trying to do rapid
development.

Also, traditional Ada is more of a procedural/imperative language, and not
OOP, and the world had moved into OOP by the late 90s.

~~~
jcadam
Ada has had basic OOP support since Ada95. It just doesn't mandate OOD as the
"one true way" to build software the way Java does.

I wound up unemployed in 2008 and took a job maintaining an old system written
in Ada95. My mother (who is still a working software engineer) was kind enough
to give me all of her old Ada books. In the 80s, during the big initial push
for Ada by the DoD, defense contractors actually sent a lot of their
programmers to training courses (my mother was sent to training courses on
both C and Ada in the early years of her career). Today, they would just
layoff all of their "obsolete" engineers and hire new ones.

~~~
agumonkey
Surprisingly it took ADA classes for me to grasp Java OO a bit better than
just soul tears poking. At least encapsulation and interfaces.

~~~
jcadam
> soul tears poking

Ok, you got me. I have no idea what that means.

~~~
agumonkey
OOP paradigm made my soul cry, I had zero understanding of superclass etc.
Most of what I did was poking around until the compiler didn't complain.

------
dboreham
Ada didn't take off (despite some decent level of enthusiasm in the industry)
because a compiler cost $$$$. We're all using languages today that had a zero
or near zero cost to use in the era that mattered (when 32-bit micros were
being introduced). Or newer also free to use languages, obviously.

~~~
IshKebab
Windows didn't have a free C++ compiler for many years, but in general I think
you're right.

~~~
pjmlp
Compiler prices for C, C++, Basic, Pascal, Clipper were always relatively
cheap.

Lets pick the BYTE magazine in 1994.

\- IBM C Set++ for OS/2, $249

\- Powerbuilder, $249

\- Watchom C/C++, $450

This on top of a PC that would cost around $1000.

Mac Quadras started at $1199.

Ada required UNIX or VAX stations.

Cheapest SparcStation on the same magazine $3995, plus OS SDK and the Ada
compiler as additional expense.

So lots of zeros versus the alternatives.

~~~
PhantomGremlin
_So lots of zeros versus the alternatives._

Sure, for hobbyists and such. But if you're a "real" company and you are
paying software people perhaps $50,000 (at the time) plus benefits, why would
the cost of a workstation and a compiler make much of a difference?

~~~
pjmlp
Speaking from the reality of the Portuguese industry in the mid-90's, majority
of companies where using PCs, Amigas, Ataris and such.

Only companies at Fortune XXXX level would even think about renting UNIX/VAX
systems.

Then the OS SDKs only contained the systems language compilers, C, BLISS,
Macro32, CLI tools and such. Every other additional language was an extra
purchase.

------
gumby
> Most companies avoid GPL like the plague.

Is this actually true any more (if it ever was)? Yes, I do know that Google is
picky about it, but is this really still widespread?

> Both the compiler and the majority of libraries are infected by it.

Why the flame-worthy language "infected"? Royalty-bearing libraries are just
as "infected", as corporate IP policy needs to track shipments in order to
make payments.

(I do agree it is unfortunate that GNU Ada's library is GPLed.)

~~~
nickpsecurity
It's worth noting the linking exception for the GNAT runtime:

[https://en.m.wikipedia.org/wiki/GPL_linking_exception](https://en.m.wikipedia.org/wiki/GPL_linking_exception)

------
CodeArtisan
You shall thank Ada every time your plane has landed successfully.

[http://www2.seas.gwu.edu/~mfeldman/ada-project-
summary.html](http://www2.seas.gwu.edu/~mfeldman/ada-project-summary.html)

------
agumonkey
Tiny trivia, I found a few blogs about ADA generics used for embedded network
abstractions. I find it super sexy to have clean abstraction and low level
like that (probably doable in cpp too but ... cpp)

~~~
castle-bravo
Care to post links? I'm planning to use Ada in my next embedded project.

~~~
agumonkey
I can't find the links right now, maybe later.

------
marssaxman
Ada was a curious but obviously unsuccessful language back when I first heard
about it, and that was at least thirty years ago. Since then, the software
industry has exploded, computers have eaten the world, and the internet has
made itself more essential than the telephone network ever was; but Ada is
nowhere to be found. Whatever its virtues may have been, it has had no
significant influence on the culture or practice of computing as we know it
today.

Yes, of course, there must be some niche somewhere which still contains people
who care about Ada, just as there are little pocket communities who still care
about MUMPS, APL, and other bits of exotica, or we wouldn't have articles like
this one trickling out every few years - but out here where the action is,
nobody knows anything about Ada and nobody really cares.

------
sudoscript
> The very common complaint on Ada user groups and forums is the licensing
> model. Most companies avoid GPL like the plague.

What's wrong with the GPL?

~~~
Gibbon1
You go way back into the 1980's every compiler vendor was trying to drink your
milkshake[1] via licensing fees for compilers and libraries.

Two companies that didn't do that were Microsoft, Borland. AT&T was forbidden
from selling products outside of Telcom. Which is why Linux and C/C++
succeeded. C succeeded because a competent grad student could port the
language to a new computer in a two months.

So you could use Microsofts Basic and C/C++ compilers, Borlands Pascal and
C/C++ compilers, or gcc/etc C compilers without the them sharing ownership of
your compiled binaries.

[1] Per unit licensing fees. Meaning instead of just charging you a seat
license, they wanted a cut of your profit as well. You pay use $20 for every
license you sell. I'm not kidding about $20 either.

------
khazhou
The language is very anti-ergonomic in terms of shift key. This plus emacs can
destroy your tendons:

    
    
        with Text_IO; 
        use Text_IO;
        procedure Hello is
        begin
            Put_Line("Hello, World!");
        end Hello;
    

I subscribe firmly to the school of thought that as programmers, we are _not_
optimizing for keystrokes... but man oh man having to type capital-Put
underscore capital-Line instead of just print or printf, 50 times a day.
Yikes.

~~~
Marazan
Ada is case insensitive. put_line would have worked just as well

~~~
Avshalom
There is also just 'put' it just doesn't tack a \n onto the end so helloworld
in a terminal is ugly

------
turbinerneiter
Why should GPL be problem for Ada when it's not for GCC?

~~~
masklinn
GCC has a runtime library exception, GNAT GPL does not. Programs compiled with
GNAT GPL can only be GPL (GNAT GPL is specifically engineered to that end),
that is not the case for GCC.

~~~
duskwuff
Are you sure about that?

[https://en.wikipedia.org/wiki/GNAT_Modified_General_Public_L...](https://en.wikipedia.org/wiki/GNAT_Modified_General_Public_License)

~~~
Avshalom
It's a little awkward. Adacore drops a full GPL edition every year which turns
gmgpl the next year while simultaneously there's a group that bug fixes the
existing gmgpl libraries and integrates the new changes.

~~~
duskwuff
Oh, weird... that sounds like a complete clusterfuck. :/

Why do developers do this?! These are the sorts of policies that scare
companies away from open source software.

------
ohazi
No.

~~~
leeoniya
[https://en.m.wikipedia.org/wiki/Betteridge%27s_law_of_headli...](https://en.m.wikipedia.org/wiki/Betteridge%27s_law_of_headlines)

~~~
timbit42
Why do people post this when it is true but not when it isn't?

~~~
leeoniya
i have yet to actually see an instance of when it is false. do you have an
example?

------
feelin_googley
Heres a lecture at MIT about Ada from a favorite programmer of mine.

[http://www.youtube.com/watch?v=0yXwnk8Cr0c](http://www.youtube.com/watch?v=0yXwnk8Cr0c)

I do not understand the Medium authors definition of "success". I get
similarly confused when web commentators use the term "won" (e.g., language X
"won") when discussing programming languages. Won what?

IMO, the presenter (RIP) was quite successful. Im sure Ada "won" many
contracts.

~~~
derefr
Won = monopsonized the market? I.e. so many employers looking for it that it
influences education and training for people who have no interest in that
particular language, but just want to learn “a” language.

See: Java wining enterprise programming; Python winning DevOps scripting;
FORTRAN wining numerical simulation way back.

Also see: PHP winning SMB web consulting in the 90s (resulting in e.g. the
Wordpress plugin ecosystem); RoR winning SMB web consulting in the 00s
(resulting in the the current “horizontally scale by running more containers
with a load-balancer in front” approach to web-app deployment, due mostly to
Ruby’s horrible concurrency story at the time); Node.js winning SMB web
consulting in the [first half of the] 10s (resulting in the rise of websocket-
driven SPAs and a million Node build tools.)

~~~
feelin_googley
According to the lecture, for Ada I guess it would be winning avionics. The
presentation has some interesting artifacts, such as one student asking what
"portable" means and another asking what is "object-oriented" programming.

Maybe "hyped" success is sometimes confused with "real" success. The later
type may not always be as visible.

He addresses this in the lecture. He suggests people often make statements
about programming language usage in industry without actual knowledge of what
some organizations are really using (beyond what is announced publicly, or
hyped).

------
hullsean
any language older than 5yrs is a failed language. perl, ruby are recent
memories.

i’m starting to realize the only industry more fashion conscious than software
is... well fashion!

Ada?! ahahahaah

------
chasil
Heavens, no!

Ever heard of PL/SQL? Same thing.

Oracle ripped the entire ADA language into their database.

IBM DB2 clones most of it, courtesy of EnterpriseDB (Postgres bolt-on).

People forget this enormous ADA audience.

~~~
nabla9
This completely wrong.

PL/SQL used Ada as a model for the syntax. The semantics is completely
different. Just like JavaScript is not C, PL/SQL is not Ada in any meaningful
way.

~~~
chasil
Ada has functions, procedures, and packages. So does PL/SQL.

C has unions. Show me the unions in JavaScript.

Unions are there because C is a systems language. Show me a kernel written in
JavaScript.

~~~
koolba
> Show me a kernel written in JavaScript.

[https://bellard.org/jslinux/](https://bellard.org/jslinux/)

~~~
detaro
There is no kernel written in JS there. It boots normal kernels compiled for
the listed CPU architectures.

