These articles give the worst impression of Ada possible. It's not the it's a specialized language for the military, but a language created to cleanup the DoD's software nightmare of the 70s, which is not unlike the software nightmares of today. It just happens that they had a pretty good grasp, even at that time, of what helps make good software easier to write, large software projects easier to manage and maintain, and strong ideas about how much a language should intervene if the programmer is doing things that look pretty dumb.
Ada has a neat OO system (not like the Javas or C++s), built-in state-of-the-art tasking (since 1983!), ranged types (one of the things I can hardly bare to live without), but also simple things like switches that aren't useless and just a general appreciation for what a discrete type can allow you to do. It has generics, too, though I know they've been proven irrelevant by newer languages. Have you seen that new Java 8 date time stuff? It's playing catch up to Ada. Ada's numerics are, hands down, the best facilities of any mainstream language.
Most importantly, it's probably already available for your Linux distribution because it's a part of the GNU Compiler Collection, which means that it's on the commercial OS you've settled for, as well.
An out of print book that I always recommend to those who are interested in playing with Ada is John English's "The Craft of Object-Oriented Programming". Enjoy.
It's a seriously nice language --- it feels like a mature, well-thought-out C++ without a lot of the craziness and ancient edge cases. There are moments of sheer brilliance: the pointer scoping semantics mean that it's actually _syntactically invalid_ to leak pointers from an inner stack frame to an outer one. Its tasking and concurrency support is amazingly good. Having proper nested functions are amazing. The type system, while no Haskell, is easily good enough to say things like 'bounded array of tagged unions with length not known at compile time', with both compile and run-time error detection. And all this produces code that performs on a par with a modern C++ compiler!
Here's a multithreaded Mandelbrot renderer what I wrote: http://ideone.com/a1ky4l Note that each thread is a scoped object nested inside a function, communicating with each other via strongly typed and named messages --- startup and shutdown synchronisation happens automatically...
That's not to say there aren't warts; the OO system is pretty painful, with some annoying hidden requirements (e.g. you have to define a class' methods adjacent to the class structure itself, otherwise the compiler gets confused; if this is a requirement there should be explicit syntax for it). Having case insensitive identifiers is a complete failure. Exceptions are just plain clunky. There are a number of syntactic weirdnesses where the language got expanded beyond the original syntax' ability to cope. But the big omission is that there's no garbage collector, even though the language was obviously designed to have one. It would be so, so much nicer to write real code in if it had one.
Ada really deserves to be better known than it is.
There is at least one error in your "About Ada" section. The language was not designed by the Department of Defense, though it did meet specifications laid out by DoD called the Steelman. The language was designed by Jean Ichbiah and his team at CII Honeywell-Bull for a competition held by the High-Order Language Working Group, a group within the DoD. Four languages were submitted: Red, Yellow, Blue and Green, of which Green won and became Ada.
I did the first couple years of my undergrad (starting 1990) in Ada. I liked the generics, although the lack of inheritance was peculiar for an OO language. As a Pascal programmer in high school, Ada was pleasant and familiar, but I quickly lost interest when I discovered Eiffel. Eiffel felt like what Ada should have been from the beginning.
I've not written a single line of either post-graduation.
Ada had OO from Ada 95, though it doesn't look anything like the OO in most mainstream languages of today. In Ada 95, tagged types were introduced which were based on Ada's powerful record types and Ada 2005 introduced interfaces in a style similar to Java. Java and Ada have both taken plenty from each other over the years.
Edited because I was misleading about the introduction of OO.
"It's not the it's a specialized language for the military, but a language created to cleanup the DoD's software nightmare of the 70s, which is not unlike the software nightmares of today."
The nightmares aren't like each other, they are the same nightmare, just with the spooge scraped into slightly different piles.
Further, a language won't clean it up; that's going to take something seriously different. In fact, I suspect the spooge is irreducable past a certain point. I believe it is the nature of the problems.
That being said, Ada is a significant improvement over many others, in many cases for the reasons you describe.
"though I know they've been proven irrelevant by newer languages"
A non-free resource that I found very helpful in learning Ada was "Ada for Software Engineers" (http://www.springer.com/us/book/9781848823136). Although it covered Ada 2005, not Ada 2012, it otherwise has excellent coverage of the Ada feature set, with a focus on programming-in-the-large.
I've been working on a development team for several years as a contract worker. I'm looking for a better arrangement while I continue my university education pursuing degrees in Computer Science and Mathematics.
Most of my experience in the upper levels of the web stack, but I'm very much interested to attack other areas of the stack, development process, documentation, etc., open source tools and open source platforms.
With my current hat, I've been working to connect backend to frontend and developing the frontend using typical, but not remarkable web tech. I'm especially interested in participating in high-quality development processes with great people.
I've developed APIs, managed conversion of a project from long-lived HTTP to websockets, improved backend database libraries, written great technical documentation, and more. My strongest backend language is Ada which is a reflection of the kind of qualities I value in software and processes.
My interests are across the board including (but not limited to) full-stack for web, Android and Windows mobile apps, data science and visualization.
I creating reliable software by using safe languages as much I can with high test coverage and excellent documentation. A current project is a standards-based, web front-end and associated back-end code for a call center contact management system written in Ada, adding new features and updating and rewriting existing code. Also, create a complete RESTful API and more modern, more extensible interface from the ground up.
Recently I converted a display that updates in realtime from a Mozilla technology that never caught on, long-lived HTTP requests, to WebSockets working through bugs in the third party library's implementation and working with the vendor to get them fixed quickly.
I am an Ada developer, but I think it is objective to say that anyone who opposes a language because there fingers will have extra work probably doesn't belong in this field. If you consider the development process as a whole—research, planning, development, verification, etc.—those extra keystrokes add an exceptionally marginal amount of time to the development process, but reduce time so much more by making the code more intuitive to read. Don't let me lead you to believe that Ada's words make it intuitive; that would be disingenuous, but the syntax has been formed since its inception to be readable by developers and non-developers alike. This is an important distinction with something like Java, neverminding that you don't have to explicitly instantiate generics in Java. One of the key objectives of Ada is code that is especially intuitive to non-developers. There's a lot going on in the language. I hope this helps.
I use Ada everyday developing a predictive dialer and contact management system for call centers and it's web-based front-end. Interest has been steadily growing since I started with the language in 2006. One, possibly useless, indication is that the #ada channel on freenode used to hover in the single digits and now regularly hovers around 70. People regularly enter the channel asking how to get started.
Ada is quite a long way from COBOL. Having just completed its latest revision about a year and a half ago, Ada is very much cutting edge. Ada 2012 is hardly a maintenance revision like you may find for COBOL; it adds tons of new stuff like contracts and substantial improvements to concurrency and SMP support. Ada 2012 was too long after it's previous revision, Ada 2005, which was standardized in 2007, and was quite more substantial than even 2012.
Language was also less ambiguous because they didn't leave out important punctuation or relative pronouns. I expected Tolkien to be a on Hitler's side because I interpreted the title as "Tolkien Snubs a German Publisher, Asking for Proof of His “Aryan Descent", but the author means "Tolkien Snubs a German Publisher Who Asked for Proof of His “Aryan Descent". Writing ain't what it used to be, even if only the clergy and royalty could do it!
I have a clipping from a small regional daily newspaper from the 60s. The headline reads, "U.S., Canada Rear Warning Staveal Sites of Radtions" which sounds ominous indeed. It took me several tries to realize that someone most have dropped the line of type, breaking it, and reassembling it in the wrong order. It should have read, "U.S., Canada Reveal Sites of Radar Warning Stations"
I haven't spent any time looking at Go because I'm pretty satisfied with Ada, but these libs do smell a bit like the Ada time handling functions which only get better through each ISO revision. Not handling dates like POSIX is nothing new, but it some of us just haven't been exposed to it. Of course, Ada would never guess at a format. Blasphemy. The more you know™
I am a freelance Ada developer who is currently working on a contact management system for call centers for a small company. It's the usual array of DB access, webserver and AJAX/websockets. The product is exclusively in Ada though it relies on Freeswitch currently and has recently allowed some Python scripting for calls. The front-end is handled by Ada Web Server which is a rather good Ada HTTP library among other things. Mounds of concurrency and threading in the product back-end.