Ada is a great language, I learned it and planned on using it for programs and libraries that need performance. I gave up because of the licensing situation.
Unless you plan to write 100% GPL software it's pointless. The FSF version of GNAT under mGPL license is always lagging behind and many essential libraries are still under GPL. Moreover, you will be pretty much locked into AdaCore as the compiler producer even with the free version, since AdaCore is the single main contributor and pushes the latest standards like Ada 2012. AFAIK, no other compiler supports Ada 2012, and the other compilers are proprietary and expensive anyway.
AdaCore is at the same time the biggest maintainer and biggest destroyer of Ada. They make sure that only the GPL version is easy to install, easy to get, fully maintained, and every program you deploy that is compiled with that version is automatically under the GPL.
That's why Ada is slowly dying and I'm not sure the good folks at AdaCore really get it.
>> That's why Ada is slowly dying and I'm not sure the good folks at AdaCore really get it.
I made the same complaint in a previous "someone just rediscovered Ada" quarterly thread, and an Adacore dev replied that most of their lib are now GPL + linking exception (well, he didn't say "now", but on their former Web site it's pretty clear no exception was mentioned anywhere regarding their OSS code, so I assume there was a change recently).
I agree with your sentiment in that, Adacore being into high end consulting, I don't see what they'd be losing by relaxing their licencing. This would bring in new people (I mean, if there's a new "hey I just found out about that Ada thing" thread popping up every few months here or on Reddit, clearly the language has something going for itself), which is clearly something they want to see happen.
Hmmm... Is that how the GPL works? Or is AdaCore adding a rider to the GPL saying that all software compiled with their tools must also follow the GPL?
Ask nearly any Latin student nowadays and they'll mention that they have used or frequently still use Whitaker's Words [1] which is made in Ada [2]. I and my friends in Latin class use it so frequently (through the University of Notre Dame portal) that I made a reskin for me and some friends [3] to use so we can enter in all the words we want for a passage and to look at convenient conjugation cheatsheets :)
I programmed a radar system with Ada, I guess that counts a defense system. The language grew on me. I miss parts of it, but it suffers from the chicken egg problem. Not enough people using it to make useful libraries from it so it doesn't get a lot of new users.
Also the lack of a really good compiler that was free held ada back, but that shouldn't be a problem anymore. (https://en.wikipedia.org/wiki/GNAT)
The other knock on ada was it was slow. All the runtime checks eat up cpu resources which made it slower than the competition.
The language and package system are solid though. I was switching between C and Ada for a while and I found programming in Ada to be be a better experience.
> All the runtime checks eat up cpu resources which made it slower than the competition.
You can turn off all the runtime checks. When you do, Ada is competitive with Rust and even C.
But user jonathanstrange's criticisms above of Ada and Adacore hit the nail on the head, in my opinion. Ada's a great language but unless Adacore revisits the licensing, it's doomed. Now, even the defense industry has for the most part abandoned Ada, despite it being perfectly suited for the industry.
I'm curious, is the compilation time that takes too much, or is it the execution time? I'm really interested in learning the language, but I don't want to end-up with programs that generate slower native code, compared to that of C. What's your experience with it?
It's not any slower than C. In some cases the compiler can actually generate better code because of stricter rules on pointer aliasing. You can also do more with only stack allocation in Ada, which is a huge win.
It does generate some extra code for things like range checks and checking invariants, i.e. things you can skip in C to write buggy code.
"Specific domains seeing Ada usage include Aerospace & Defense, civil aviation, rail, and many others. These applications require a high degree of safety: a software defect is not just an annoyance, but may have severe consequences. ... Ada provides safety features that detect defects at an early stage --- usually at compilation time or using static analysis tools. Ada can also be used to create applications in a variety of other areas, such as:
* Video game programming
* Real-time audio
* Kernel modules"
It was, as well as the Automatic Train Protection (ATP) and Automatic Train Operation (ATO) systems. I worked on part of the track to train comms system of the subsequent Victoria Line upgrade which was also written in Ada.
I forget which compiler was used, all I remember is that it cost an arm and a leg!
F# gets used a lot in finance. If you're in the NY area with F# experience you could easily find a contract or maybe a position.
When Julia 1.0 drops, there will be some shifting around as the industry begins the Matlab exodus. But not a lot of prospects right now. It has a really cool type system with multiple dispatch, but it's dynamically typed. Depends on your taste. Takes practice in my experience organizing code by dispatch. Didn't click in my brain at first. Also, there are macros ala Lisp, good performance, etc.
there will be some shifting around as the industry begins the Matlab exodus
Stats I’ve seen on applicants/job broken down by language suggest that that is already well underway - tho’ Python/R seem to be where the demand has shifted to
I'm not so familiar with the academic side of things as much as I am finance and corp side of things.
Academic roles probably benefit a lot more from the more rigorously designed language/platfrom R offers. Not to mention the maturity of the ecosystem.
Julias big draw is performance, in my eyes. Ease of use is good too, Python syntax + types + macros is great, but the speed is absolutely killer once you get it tuned up.
Time will tell, but I see some very strong threats as Julia already has packages for xlsx, and a good Quant community forming up.
For finance, I will be shocked if Julia isn't a household name 2-3 yrs from now. It's what the financial world has been waiting for.
Python won't be killed for a while. It's just too ubiquitous. But it poses no major threat to any major firm who needs decent performance, and there will be more and more turmoil in python chore community as time goes on. I think it will get much worse, not better.
Julias big draw is performance, in my eyes. Ease of use is good too, Python syntax + types + macros is great, but the speed is absolutely killer once you get it tuned up.
Yes I’ve heard that but the counter-argument is just use Numba and leverage your existing Python/NumPy code onto GPU. Everyone always forgets that the Python community is very comfortable with offloading heavy lifting to other languages.
Those people generally aren't of the same caliber as Matlab programmers.
I'm talking about professional-grade numerical work. People use matlab or R for this currently. Mathematica too.
These people, who are very talented mathematical minds but maybe not necessarily the most talented programmers, are going to eventually find Julia to be more convenient and more attentive to their needs doing numerical work than Python+PyJunk libraries.
Python sucks. Plain and simple. No types, no macros, it's slow, it can be a pain to get gpu support up and running, the main guy just up and left (?!?!?), and the primary survival trait of the community at large is figuring out how to write python and make something other than python do the work.
It would be like buying a car and the dealer hands you a complimentary bus pass and says "try and keep her off the road if you can help it."
So yeah. I don't consider it a major threat to the ecosystem.
If you are at all interested in software verification, as an alternative to dependently typed languages, GNAT, SPARK, and the GNAT IDE (whose name escapes me) make the best environment for it.
Dafny is probably the best language, though, if it gets any documentation.
Defense and aviation are probably the two biggest industries that make use of it. Aviation software may use it even when not doing government work (where it used to be mandated) if they see value in the tools and capabilities.
Unless you plan to write 100% GPL software it's pointless. The FSF version of GNAT under mGPL license is always lagging behind and many essential libraries are still under GPL. Moreover, you will be pretty much locked into AdaCore as the compiler producer even with the free version, since AdaCore is the single main contributor and pushes the latest standards like Ada 2012. AFAIK, no other compiler supports Ada 2012, and the other compilers are proprietary and expensive anyway.
AdaCore is at the same time the biggest maintainer and biggest destroyer of Ada. They make sure that only the GPL version is easy to install, easy to get, fully maintained, and every program you deploy that is compiled with that version is automatically under the GPL.
That's why Ada is slowly dying and I'm not sure the good folks at AdaCore really get it.