Hacker News new | comments | show | ask | jobs | submit | jmilkbal's comments login

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.



I discovered Ada 2012 last year, and ended up doing a chunky writeup on it: http://cowlark.com/2014-04-27-ada/index.html

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.

http://www.adahome.com/History/Steelman/steeltab.htm http://www.adahome.com/History/Steelman/intro.htm


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.


Sadly both suffered from enterprise prices by the compiler vendors.

Although Ada seems to be quite well in high integrity systems. At least that is my perception from the, now regular presence, at FOSDEM and European safety conferences.


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.


    ...although the lack of inheritance was peculiar for an OO language
I almost see that as a feature. ;)


I have only tried Ada for a few toy programs, but given the reputation it has with some people, I was pleasantly surprised.

Ranged types are awesome. Like I said, I did not use Ada a lot, but I have on a few occasions when programming in other languages missed them.

Also, the diagnostics the GNU Ada compiler gave me were a lot more helpful than anything a C++ or C compiler ever gave me.


During a presentation, I tried to show a ranged type implementation in Java. To put it mildly: it's a mess.


"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"

Uh, what?


> "though I know they've been proven irrelevant by newer languages"

> Uh, what?

Sarcasm, presumably; cf. Golang.


T'was programming language satire at it's finest, in my opinion. :)


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.


> It has generics, too, though I know they've been proven irrelevant by newer languages.

Is it wrong to read this sentence as snarky?


> Is it wrong to read this sentence as snarky?

Honest question, honest answer: yes. Dry humor maybe.

The reason why my snark detector passes this one is because there is no reason for the author to be snarky here.


I had to do one assignment in Ada during my undergrad. It felt like a gift from an alternate dimension.


SEEKING WORK/FREELANCER - Omaha area or remote

Looking for PART-TIME contract or salaried work.

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.

Please get in touch. CC3cZk at wh.ftml.net.


SEEKING WORK - Remote from Omaha, Nebraska, USA

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.

I've developed solutions in many languages on both front- and back-ends using languages like Ada, Java, C and PHP on the back-ends and standards-based HTML, CSS and JavaScript on the front-end using well-known tools like jQuery, Prototype.js, SASS, LESS, Bootstrap and a host more along with custom written tools when necessary.

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.

@jrdkmbl or send mail to ir0.us mailbox jk


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.


AdaCore, who are the chief stewards of the official GCC Ada frontend, GNAT, have been publishing weekly "gems" that are extremely informative for years.


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.


We're working on municipal fiber optic internet in Omaha and this is fantastic ammunition for a project like ours.


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!


It's a headline. Take a look at some newspaper headlines from 1938:


Not really any different.


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"


Yes, I also found the title to be ambiguous until I read the article.


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™

http://rm.ada.cx/05/RM-9-6.html http://rm.ada.cx/05/RM-9-6-1.html http://rm.ada.cx/05/RM-D-8.html


You rarely hear about Ada on HN (sadly). What do you use it for?


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.




Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | DMCA | Apply to YC | Contact