

A Random Walk Through Ada (2014) - dalke
http://cowlark.com/2014-04-27-ada/

======
ICWiener
See also the Ada Gems serie of articles:
[http://www.adacore.com/adaanswers/gems/](http://www.adacore.com/adaanswers/gems/)

------
jdcskillet
Oh Ada. In college (six years ago), it was the language solely responsible for
dragging down my grade right before graduation. I very much disliked the prof
who taught it, which probably clouded my perception of the language, but I
found it a lot harder to solve problems in the extreme type safety of ADA than
C++ (our "core language"). Not sure why, just vividly remember being dead set
against never seeing it again :)

I do remember the professor going on and on about why the safety was necessary
for his beloved Military and Avionics software (he worked at an avionics
software company in his "off" hours). It makes a lot more sense now, and oddly
enough with my interest peaking in Rust and Go, it might be worth looking at
again... or maybe I'll just stick with languages that don't invoke bad
memories.

~~~
cbd1984
It's interesting to me that when people boost Ada's type safety, they always
compare it to other Foogols, like C and Java.

OK, how about Ada vs Haskell?

Does Ada have anything like Haskell typeclasses or am I going to have to write
a different sort function for every single data type which can be sorted?

Does Ada have a numeric tower, or will I have to accept truncation and re-
write basic numeric functions?

Haskell has strong static typing without forcing me to specify irrelevant
details up front. How about Ada?

~~~
pjmlp
> Does Ada have anything like Haskell typeclasses or am I going to have to
> write a different sort function for every single data type which can be
> sorted?

Generics and interfaces.

> Does Ada have a numeric tower, or will I have to accept truncation and re-
> write basic numeric functions?

Subtypes and ranges.

> Haskell has strong static typing without forcing me to specify irrelevant
> details up front. How about Ada?

If you mean type inference. No in Ada everything has to explicit.

Now you are comparing Apples and Oranges here, as Ada is a systems programming
language.

So it allows for memory safe systems programming, with all the direct hardware
access and memory allocation control that such use cases require.

Whereas Haskell, currently, still requires language extensions like on HalVM
and House OS implementations.

~~~
codygman
> Now you are comparing Apples and Oranges here, as Ada is a systems
> programming language.

Perhaps comparing ATS and Ada would be more interesting.

------
pjmlp
Besides Ada, Algol 68, Mesa/Cedar, Modula-2, Modula-3, Oberon derivatives are
also worth a mention in the list of languages that allow low level systems
programming without the usual C minefields.

Nice article, Ada is on favourite languages list.

------
lambdaelite
The licensing for the Ada ecosystem is confusing to me. It seems that the
major vendors are Adacore, Green Hills, and Atego. Am I correct that for
commercial products, there are no free toolchains available?

~~~
Narishma
What's wrong with the GNU compiler?

~~~
lambdaelite
Nothing per se. I was confused in that both Adacore and FSF offer a compiler
with the same name but different licensing.

As to my specific situation, I cannot release source code and so the Adacore
GPL licensed product is a no-go.

~~~
_kst_
Using a GPL-licensed compiler doesn't mean you have to release the source code
that you compile with it.

(I am not a lawyer; _do not_ rely on my advice without thoroughly verifying
it.)

~~~
lambdaelite
Perhaps it has to do with the runtime being GPL'd? Regardless, the Adacore FAQ
specifically councels that the GPL version is suitable for free software
only.[0] Admittedly, I find the licensing situation confusing and could be
completely in the wrong here.

[0] [http://libre.adacore.com/tools/gnat-gpl-
edition/faq/](http://libre.adacore.com/tools/gnat-gpl-edition/faq/)

------
kzhahou
I wonder how Ada would fare today if the basic syntax was modernized. I mean,
This_Hurts_My_Pinky_Finger!!

