4 ms·
* Because there's a ton of C/C++ code out there. As such, there are lots of jobs asking for C skills. As such, lots of people learn C. As such, lots of schoo
by mdasen 18y ago
* Because there's a ton of C/C++ code out there. As such, there are lots of jobs asking for C skills. As such, lots of people learn C. As such, lots of schools teach C. Ada never hit that critical mass (as Java and C/C++ did) where people learned it because so many other people knew it rather than because it was cool. Why does everyone in the world learn English? Because more of the world's money speaks English than any other language. So, if you want one of those C++ jobs, you'd better know C++ - not because it's good, but because so many other important things use it.
* Because Ada isn't that fast. It's significantly slower than C according to the language shootout (http://shootout.alioth.debian.org/ http://shootout.alioth.debian.org/). It's one saving grace is that it's decently efficient on memory - not as efficient as C, but efficient enough that it can be used for things you wouldn't want to use Java or Lisp for.
To an extent, it was too little too late. C was introduced in 1972 and quickly gained fame. Ada, a decade later in 1983, does have dome value, but it also has things many programmers would find annoying (like a syntax that requires more typing). Sometimes, you need to provide enough reason for people to switch. A tiny enhancement isn't always enough. Plus, companies like C because it's everywhere and easy to find programmers (whether that argument holds true or not is debatable, but companies still base their decisions off it).
There might not be anything particularly wrong with Ada, but that can still leave no catalyst that is getting programmers to learn it. There aren't a lot of things written in Ada (compared to C/C++/Java) and so it isn't the "I'll get a job with it" excuse. It isn't cool like Python/Ruby/etc. It isn't widely used in academics like Lisp and Scheme. Ada became widely used in defense and aerospace, but it hasn't created enough of a catalyst.
- Nelson69 18y agoAda is a fine language. For those of us that did the Turbo Pascal thing and enjoyed that Ada isn't that far off. There was this odd sort of period in my life, I learned Pascal and took classes that used it and wrote fairly complicated programs that by in large worked. Most of the debugging I did was really logic debugging. Then I switched to C and between the esoterics of doing C on a DOS x86 machine (anyone remember the difference between ASCII files and binary files?) and the language itself I started spending a lot more time debugging C and I put a lot more effort in to making programs radically more simple just to avoid complex debugging. At times I kind of pine for those old Pascal days... Had I not experienced that era, I might have gone in a different direction entirely. Through out the 90's I tought C++ to undergrads for a couple years and there was this disease of sorts, some went though so much pain trying to make C++ do simple things (and they had no understanding of what the machine was really doing, they were trying to just learn a language) that they either a) would drop out of computer science all together or b) they'd have such a better taste in their mouth that they'd never fully learn Lisp or ML or really anything else and always revert back to C++. Ada is quite similar to Pascal in syntax and sort of behaves the same way. FWIW, Ada is kind of interesting, if you've ever wasted a lot of time tracking down where you C program bumped the stack or leaked memory or something then the things Ada requires of you are kind of nice in a way. Seems Ada missed the timing on a number of issues. First Ada compilers were built to be sold to the feds, they essentially designed the language and they mandated its use and so compiler writers assumed that they could charge $20,000 a seat type prices. Completely missed the market, largely due to costs. This put a very serious damper on things. The other thing that they missed on was tooling. When Java first came on to the scene there was a vocal group of folks that were used to teletypes and modems and such and the difference between "{" and "}" and "BEGIN" and "END" was substantial to them. If they have a Visual Studio or Eclipse like programming environment, those differences kind of vanish but that argument took place in the early and mid 1990s, there are still people that feel that their coding ability is strongly related to their typing ability. By the time tooling caught up and the GNAT compiler was around Ada had accumulated a huge perception deficit. Also the world has moved on and a lot of developers want protected runtimes, like a JVM or CLR or the interpreter of Ruby, Perl and Python. There are still efforts to create higher level C competitors, the D programming language, the Eiffel programming language, Modula-3 as one, it just seems that not that many people are interested. I like to look at Rails and I think a big part of its success has nothing to do with any technology so much as the effort they put in to teaching their users a good and working structure to build web apps, they will automatically generate the skeleton and you fill it in; by the time you've done a real world production Rails app, you've done everything yourself and don't even realize it because they got you started. Ada and Pascal sort of provided that structure to building machine code applications, people really rebel against that structure unless you sort of trick them into it like Rails does.
- mcculley 18y agoOne thing I would add to that is that Ada at that time (Ada83, that is; Ada95 fixes this) lacked function pointers. There was no mechanism in the language to support the runtime selection of behavior that function pointers allow. Such a feature was intentionally left out of the language in order to facilitate static analysis. For the class of problems where you are willing to accept decreased expressiveness in order to get increased reliability (e.g. missile guidance software), Ada is great. But in a lot of application development scenarios, expressiveness is important. As I said above, Ada95 fixed this, but it is still a bit cumbersome and before one could reliably use Ada95, it was necessary to indirect through C to do things dynamically.
- Tangurena 18y agoWhen ADA was new, the compatability suite for ADA was also around $20k (at least that's what I remember). Since the name was trademarked, no one could sell a compiler without passing the suite. There was no way that two guys in a garage could sell a compliant compiler without getting it certified. But making a C/C++ compiler and selling it for $25, that happened. So the only compilers in the beginning were from big companies for big money.
- Nelson69 18y agogeez. no coffee and I'm glad I "taught" C++ rather than grammar or English. I also meant to say "bitter" instead of "better" It's moot, I need to proof-read more before submit.
- a-priori 18y agoAnother reason is that many places that develop safety-critical software use languages like MISRA C, a subset of C that's supposed to make code more reliable and static analysis easier.