
Notes on Ada - FractalNerve
https://ada.kyleisom.net/
======
commentzorro
Any time I look at Ada I end up at AdaCore and remember how ridiculously
expensive it is to work with Ada. It's almost like all the free and/or open
source Ada stuff was designed to drive you to AdaCore to spend spend spend.
This lack of a high quality full set of compilers and tools always reminds me
why I never play around with Ada.

~~~
angersock
Could you elaborate on this? Are the compilers not fully-featured, or slow, or
what?

~~~
commentzorro
Show me where to get a full set of non-GPL ADA 2012 documentation, tools,
libraries, compiler, IDE, etc. that doesn't lead back to AdaCore?

And pricing on AdaCore is "Get a Price Quote." Which means, "you can afford
it."

~~~
na85
To me, when pricing is "get a quote", that translates to "it's so exorbitant
we are afraid to put it up publicly lest people immediately be turned away
before we can deliver our sales pitch".

------
nickpsecurity
Here's a detailed guide on Ada's safety-supporting features. Should help
commenters wanting specifics.
[https://news.ycombinator.com/edit?id=9672204](https://news.ycombinator.com/edit?id=9672204)

------
dalke
I didn't see anything about "Why Ada" other than hearing that it was useful
for high-assurance RTOS, and that it has a Pascal-like syntax. Did I miss it?

~~~
david-given
Ada's got a lot of really nice features.

\- really nice strict typing (you can define a type which represents an number
which varies between two values which are not known at compile time and the
compiler will enforce it. And then you can define an array with it as an
index, and it'll just work).

\- fully nested everything with seamless upvalues. First class support for
nested functions makes a lot of things easier.

\- amazingly nice, rendezvous-based, type-safe message-passing concurrency.
Think Go channels, but better.

\- full support for generics. (e.g. the standard complex number library is
supplied as a generic package so you get to specify what number type you want
it to use.) There's a standard genericised container library.

\- sanitised pointers. It's actually syntactically invalid to leak a pointer
from an inner scope to an outer one.

\- full OO support (although it's been shoehorned a little uncomfortably into
the syntax; they should have added some more keywords).

\- full low-level control over structure layout. You can specify the meaning
of every bit of a structure, if you want (including, IIRC, endianness). If you
want to.

\- built-in support for design by contract. Most things you can specify
preconditions and postconditions, and the compiler will enforce them.

\- really fast. Like, about the same as a good C++ compiler.

The tl;dr is: fully compiled, old school systems language with rather
antiquated syntax but an amazing feature set.

I did a writeup last year:
[http://cowlark.com/2014-04-27-ada](http://cowlark.com/2014-04-27-ada)

...and interested parties might like to see a multithreaded Mandelbrot what I
wrote: [http://ideone.com/a1ky4l](http://ideone.com/a1ky4l)

~~~
dalke
That was an excellent writeup. I took the liberty of submitting it as an HN
link.

~~~
dalke
Made it up to 19'th on the main page.

