Hacker News new | ask | show | jobs
by twoodfin 58 days ago
Ada’s failure to escape its niche is overdetermined.

Given the sophistication of the language and the compiler technology of the day, there was no way Ada was going to run well on 1980’s microcomputers. Intel built the i432 “mainframe on a chip” with a bunch of Ada concepts baked into the hardware for performance, and it was still as slow as a dog.

And as we now know, microcomputers later ate the world, carrying along their C and assembly legacy for the better part of two decades, until they got fast enough and compiler technology got good enough that richer languages were plausible.

4 comments

The first validated compiler for Ada that ran on the IBM PC was released in 1983.

The third validated compiler ran on the Western Digital “Pascal MicroEngine” running the UCSD p-system with 64K memory. The MicroEngine executed the byte code from the p-system natively, which was an interesting approach.

I think more research is warranted by you on this subject.

I’m not saying it wasn’t possible, I’m saying the larger ecosystem was never going to embrace a language that was as heavyweight as Ada. In 1983, most PC system software was written in assembly!
Janus Ada 1.5 ran on CP/M.
I sometimes wonder what "Turbo Ada" would have looked like, but I think it would have probably looked like later versions of Borland Pascal. Things like generics and exceptions would have taken some of the "turbo" out of the compiler and runtime -- the code generator didn't even get a non-peephole optimizer until 32-bit Delphi, it would have been too slow.

It might be nice to have Ada's tasks driven by DOS interrupts, though. I think GNAT did this.

I have not seen it, but there is something close to what you ask about: Turbo Modula-2 (an implementation of MODULA-2 written by Martin Odersky), as both MODULA-2 and PASCAL were Niklaus Wirth-invented languages that looks very similar to Ada:

"Shortly before we finished our compiler, Borland came out with Turbo Pascal, and they were considering going into the Modula-2 market as well. In fact, Borland decided to buy our Modula-2 compiler to be sold under the name of Turbo Modula-2 for CP/M alongside an IBM PC version they wanted to develop. We offered to do the IBM PC version for them, but they told us they had it already covered. Unfortunately that version took them much longer than planned. By the time it came out, three or four years later, their implementor team had split from the company, and it became known as TopSpeed Modula-2. In the absence of an IBM-PC version, Borland never put any marketing muscle behind Turbo-Modula-2, so it remained rather obscure." -- https://www.artima.com/articles/the-origins-of-scala

I think Oracle PlSQL was also based on Ada, basically Ada + SQL embedded. So it may be the widest used version of "Ada".
Pretty much [close enough for government work]; see: https://stackoverflow.com/questions/7764656/who-is-diana-and...
Wow, that’s a factoid I’d love to learn more about!
Ada did not took off during the glory MS-DOS/Windows 3.x Borland days exactly because of Turbo Pascal.

Note that the Martin Odersky of Scala fame was one of the main developers of Turbo Modula-2, that Borland killed shortly thereafter. They were also rather quick to get rid of Turbo Basic (which I had quite some fun with).

With Turbo Pascal absorving the Object Pascal ideas from Apple, and some of the key features from Modula-2, there was not much left from Ada 83 that was relevant for MS-DOS programmers.

However nowadays between FreePascal, Delphi, and Ada, I would probably pick Ada, given its industry role, and besides Ada Core, there are actually other six vendors still in business.

I used it a bit a Uni and remember enjoying it, but can you say what was slow about it; compilation or runtime or all of it?
I’ve never directly played with Ada but my understanding is that it was very much both.

Ada includes a number of critical abstractions that require either dynamic runtime code (slow runtime) or the proverbial sufficiently smart compiler (slow compile-time).

These were for good reasons, like safety and the need to define concurrent systems within the language. But they were too heavyweight for the commodity hardware of the era.

Nowadays, languages like Go, C++, Java, Rust, … have no trouble with similar abstractions because optimizers have gotten really good (particularly with inlining) and the hardware has cycles to spare.

I had to take some course that was something like "Programming Language Theory". As a result I had to look at the specifications for dozens of different programming languages. I remember looking at the features of some languages and scratching my head trying to figure out how some of this would ever be practically implemented by a compiler. Later on I found out lots of stuff is just implemented by a runtime anyways, which lead to me realize that those fancy language features are often better as a library.
I took a course exactly like that. I wonder if we went to the same school, or it’s due to curriculum standardization. The professor was particularly enthusiastic about Ada, so I had assumed the course was largely his creation.
academics loved ada when it came out. it was a very sophisticated language for it's day.

same is true today. the spec/body separation made for an actual delineation between design and implementation.

the accreditation was through ABET at the time from what I recall
compilation. run time was good, and you could turn off things like run time range checking, if you wanted to.
Sun was the first UNIX vendor to introduce the idea to split UNIX into user and developer SKUs, now Sun eventually also had an Ada compiler.

When the companies bought the Solaris Developer tools, that did not include the Ada compiler, that was extra, and wasn't cheap.

Having already paid for C, C++, Assembly, why would anyone pay extra for Ada if not obliged to do so?