Posts in this series so far:
- Installing GNAT
- Basics of Ada — functions, procedures, packages
- Child Packages
- Enumerated Types
- Records — also a short bit on naming and case statements
- Type Conversions
- Using SDL — GNAT 2013
- OpenGL Bindings — comparing different libraries & bindings
- “make install” Procedure
- Debian packages
- OpenGL GUI Toolkit Design — polymorphism
- GUI Library: Top-level package — basic linked list implementation
- …and more to come!
Ada is a high-level programming language built for the US Department of Defense intended for mission-critical systems. Whenever you need a piece of code that can’t fail (ie. for controlling a plane), it’s the language you should look to.
Over the past few years, I have been primarily a C programmer. The reason is simple — C is a simple language. It’s easy to learn, fast and does what you tell it to do. If humans were perfect and don’t screw up, then that would be a perfect programming language. Unfortunately, that’s not the case. It’s estimated that every program above the really basic ones (ie. the “hello world” programs) contain bugs with exponentially more bugs for larger and more complex programs. Despite the availability of debuggers and other tools to track down mistakes, C is simply not designed to be easy to track down bugs. Its syntax, though easy to write, is not nearly as easy to read. After wasting many hours finding and resolving simple errors like parameter switching, it was time to take a look at a new language. After a quick look around, Ada seemed to fit the bill. No, this does not mean that I’m giving up C — there are certain programs that C is much better suited for. But it’s not well-suited for all programs, and that’s where the need for learning a new language comes in.
I will be working off the Ada Programming Wikibook which appears to be the most comprehensive Ada resource on the web and will be creating an Ada version of my library of astronomical calculations. Along each step of the way, I will update my progress with common mistakes I hope others will avoid after reading.
Well, it’s time for me to get started. Hopefully, I’ll have something to report shortly.
This post will be updated with links to all future posts in this series.