The author wrote a textbook on safety critical systems development that was published in 2015, so I find it surprising that his expertise had not encountered Ada until recently. My understanding is that it has enjoyed a strong reputation for safety critical systems for decades. Not to be overly judgmental here, but I suppose I would expect him to have at least looked at the language more recently than 35 years ago. It’s just strange to me to see a safety critical systems expert with decades of experience “discover” Ada in the modern day.
https://www.amazon.com/Embedded-Software-Development-Safety-Critical-Systems/dp/1498726704
Short answer: no. And it is a general problem with binaries on Linux, not just Ada. You can't statically link GNU Lib C. The library itself doesn't allow it. I have plan to write a longer post how to solve the issue. I also landed in this pitfall some time ago. :) But for now, a short version:
Use Linux distribution which uses different standard C library. Like Alpine Linux. It uses musl
library which can be statically linked, and you can produce fully static binaries which should work everywhere on the most Linux distributions. Caveat: be ready that your binary will be a lot bigger than now. At least a few MB per needed library. Additionally, you will have also all other libraries compile statically. If you try to do it with any graphical application, you can expect that your binary will be bigger by even 1 GB. :) Thus, this way is good only for very simple applications. Also, this way isn't guaranteeing that your binary will work everywhere.
Deliver your application with GNU Lib C. This is very unhandy, because you will need not only library, but also parser and enforce users to execute your application only per this parser. This should work everywhere, bigger chance than way #1.
Normal way: create normal Linux packages for each distribution. At the start it is a bit hard, but when you learn how to do it, everything will work without problems. :) This is the only way which have 100% chance that your application will work on selected distributions, because you can absolutely forget about the ability to create binary which will work on every Linux. There are too many difficulties to solve with only one binary. Personally, I started a small project to solve that concern: Ada Linux Packages Repository. But it is in very early stage of creating thus, it may take some time before it will be useful for everyone.
Ada's a great language! It's main focus is Engineering. It's used a lot in Aviation and Aerospace. Basically, if something has to be done correctly, Ada's the language of choice. Make the best of it, you won't be sorry.
Here is a video of a few people hyping Ada. http://www.ada2012.org/passion.html
As far as help, check out the Usenet newsgroup comp.lang.ada
>This is epic! Thank you so much! Do you also have some links perchance?
Er, links to what?
I've given you the link to gnoga; the QT binding is easily searchable "ada QT bindings", using Dotnet is just like using dotnet and importing an assembly, using JVM is just like using a project importing Java class files...
This should work. http://www.tutorialspoint.com/compile_ada_online.php
Obviously ideally we'd figure out what is wrong with your environment for local compilation but the above link should get you started.
That's because comp.lang.ada is a newsgroup, you could try this link to use google's interface to it... but last time I used it, recent "upgrades" had made it nearly unusable.
You can begin here
but really its good to get the fundamentals down first, there are many resources you can do this from. The language has slowly evolved over time, but you can still compile ADA 83 on a 2012 compiler.
You can see what features came in the different revisions here
http://www.ada2012.org/comparison.html
I would actually learn them in that order, start with the Ada 83 features like packages, types, IO, tasking, generics and go on from there
The problem is that AppImage is a file system in user space. It made easier to keep the program, but doesn't solve the problem with incompatibility of "standard" C library. 😉 You can test it, the best on Alpine Linux container.
A bit better could be use Snap or Flatpack. Just both are the same as "normal way", a different kind of packages. And Flatpack at this moment is focused only on GUI applications. Snap works on a few distros and isn't too liked by Linux community.
English translation.
Probably the best is to spam literally everywhere: Reddit, IRC, Gitter, Usenet, Telegram, etc. Also, adding the project to Homebrew: https://brew.sh/ could help a lot. Plus create a mirror on GitHub and GitLab. Good advertisement takes a lot of work. :)
Ah, you right click on the project-view tree, and select the "References" option. Link.
Edit: I assume you're using Visual Studio.
This book by Andrew Shvets' is a nice guide for those starting out: https://www.amazon.com/Beginning-Ada-Programming-Novice-Professional/dp/1484254279
It focuses more on practical applications for the newcomer, whereas Barnes' book is a more complete reference. I recommend both very highly.
I thought by looking at this chart that Unicode support in Ada 2012 is quite complete, but then on #irc is was told that 'String Encoding package' does not provide su much to make one's app ready for l10n and i18n. However, asking on gtkada mailing list about it, I got the answer saying: "You should use GtkAda.Intl", so I wonder if that replaces the need for using 3rd party libs like Matreshka?
If it’s autogenerated, it shouldn’t be in the repo. It contains a lot of settings that are specific not only to your OS but to your specific installation.
I see that your compiler restrictions are intended to restrict a full Ada system; in my case, most of the restrictions are embedded in the RTS, so don’t need to be restated.
I would try to group the compiler switches into those that are part of your high-integrity profile and therefore constant (after experimentation!) and those to do with e.g. debug vs production, which could be controlled using scenario variables.
I'm using the gcc-ada
package from the AUR. I didn't really look into what it was tracking. From the link, it looks like its tracking gcc's main page.
> https://www.openhub.net/tags?names=ada
Never heard of openhub before, but when it says that (for example) the Ada 95 Booch Components is under CVS and hasn’t been updated for 8 years it is just plain wrong.
I don't have too much experience with Homebrew, but as far I see, they also allow binary packages called casks: https://github.com/Homebrew/homebrew-cask
Since an xmonad configuration file appears to simply be a text file, then Ada can certainly be used to read and write them. Although you wouldn't have the Haskell syntax/semantic checking unless you built a Haskell parser into your configuration tool.
Or are you asking whether an application can define a configuration format using Ada syntax? That's certainly doable, if a bit heavyweight for a config file. E.g. GNAT's project configuration (gpr) files use an Ada-like syntax.
Polish-to-English translation.
What do you mean "general programming"? Every problem has a tool/language best suited for it. If you want to be near the hardware with a lot of freedoms, you pick a C-based language. If you want to write a website, there are frameworks in lots of languages to do that. Ada was a government project to try to standardize a language across military tech (it's used all over the place in military aviation), while SPARKs bread and butter is big data, so it's used across a bunch of industries.
For companies using spark, see http://spark.apache.org/powered-by.html
For companies using Ada, see https://www2.seas.gwu.edu/~mfeldman/ada-project-summary.html
You'll notice lots of the entries in the Ada list are in the aviation industry...ATC, lots of commercial and military aircraft, trains, space rockets and vehicles, some finance and medicine, but aviation, space, and trains keep us Ada developers employeed.
> I have yet to see an IDE which provides the level of git support that makes an open terminal obsolete.
If you count Emacs as an IDE, magit is the most complete and intuitive git UI that I've ever used. If you're using a different IDE, maybe keep Emacs + magit open in that terminal window. :)
There’s a SAM4S board in Atmel’s “explained” series, at a reasonable price (less than many Arduino Dues). Very good to see that it has embedded JTAG emulation, unlike the Due! I’d think it’d be easy to port my RTS to it (at any rate, if there’s a FreeRTOS port ...)
During the Ada 2005 process, at the Vienna Ada-Europe conference, there was definite objection to requiring multiple instantiations (as, for example, with the Ada 95 Booch Components) because of the extra complication for users. This scheme uses multiple instantiations, but in a better way and for better reasons than the BCs did!
Always interesting to see an example of a well-known idiom done in Ada. But personally I think that code generation from UML is better done in a language that supports pattern matching; especially since the code to be generated probably depends on distributed properties of the model (for example, UML inheritance). My vote in ColdFrame was for XSLT (I wouldn't like people to think I got it totally right there, XSLT isn't the right language for checking model completeness/correctness!)
I have the Barnes Ada 2005 book, it's excellent, a bit pricy bot absolutely worth it.
The updated Ada 2012 book just came out: link.
I took data structures in Ada years ago... maybe the same professor. This is a decent book: http://www.amazon.com/PLUS-DATA-STRUCTURES-Nell-Dale/dp/0763737941
If he is still using .bat files to test your code against I'd suggest reading the .bat files to figure out the grading criteria.