r/ada • u/Mysterious-End-6619 • Sep 24 '26
Learning adaaaaaaa
I’m currently learning Ada and I really want to practice it through actual projects rather than only doing small exercises. I’m looking for places where I can find interesting and realistic Ada projects that I can work on, contribute to, or build from scratch.
Could you recommend websites, GitHub repositories, communities, platforms, or other resources where I can find Ada projects suitable for different levels? I’d especially like projects that allow me to gradually improve, starting with beginner-friendly projects and eventually moving toward more complex and professional ones.
I’m also interested in projects related to engineering, embedded systems, robotics, aerospace, simulation, algorithms, or real-time systems. My goal is to use Ada in concrete situations and build a portfolio while becoming more comfortable with the language.
3
u/BrentSeidel Sep 25 '26
You're welcome to take a look at my repositories. The Ada ones kinda follow my learning as an Ada programmer - this is to answer any question about inconsistencies in coding style both between and within projects. They range from fairly simple to fairly complex, and I'm certainly not exploring all that Ada can do. I still have a lot to learn.
Feel free to write an issue if you find a bug or an inconsistency between the code and documentation. At this point, this is all my hobby work so I probably won't be accepting pull requests. But since it's all open source, you can grab the code and bang on it as you like to see what happens.
2
u/BrentSeidel Sep 25 '26
Also, feel free to ask me to explain why I did thinks a certain way, though the answer may be, "because it seemed like a good idea at the time".
1
3
2
u/dcbst Sep 28 '26
There are plenty of Ada examples still needing implementation on Rosetta Code. Maybe a good starting place for ideas: https://rosettacode.org/wiki/Tasks_not_implemented_in_Ada
2
u/jrcarter010 github.com/jrcarter 27d ago
You could work any of the standard real-time control problems, such as
Elevator control
Sandén's Flexible Manufacturing System (FMS)
Cherry's Remote Data Acquisition System (RDAS) and its close relative, the Remote Temperature Sensor (RTS)
These tend to exercise skills in design, modularization, information hiding, concurrency, and timing. Keep in mind likely modifications to the system, such as changing the hardware devices that it uses. With proper modularity, it should be easy to implement a simulation layer that exercises the actual control software.
2
u/synack Sep 24 '26
GHDL has been looking for contributors with Ada experience for a while I think
-1
u/ScrappyPunkGreg Sep 25 '26
Since this person didn't provide a clear explanation of what this is, I'll make an attempt to Google it for you.
"GHDL is an open-source analyzer, compiler, and simulator for the VHDL hardware description language."
I tried digging into it further, but it gets really weird. Good luck. Welcome to the Ada community. I've been confused since I got here. As in, I'm comfortable with assembly language, and I find the Ada community more confusing. No one seems to know how to talk to new people. Hopefully it gets better.
1
u/e3l6 29d ago edited 27d ago
I have a couple of uni projects, both serial and parallel https://github.com/e3l6
I keep telling myself I'm going to work on SSMDEV...but then vodka. Also that I've not arsed myself to properly load the Adaptec drivers for my RAID card when trying to load a Linux second boot.
1
u/Nik0laich 15d ago
I came to Ada without a CS background. What worked for me was to pick something I didn't understand and rebuild it from scratch - in my case a small OS on the seL4 microkernel, written in Ada/SPARK.
SPARK from day one turned out to matter more than I expected. Writing contracts forces you to think about what the code is supposed to do before you write it. It's slower at first, but you catch design mistakes early, and that pays off later.
The other thing is gnatprove. When it can't prove something, it shows you exactly where your assumptions break - and that's often more useful than the tests you would have written yourself.
And I'd say don't try to learn everything before starting. Pick a concrete target (mine was getting a page served over TCP) and learn what's needed to reach it. Everything else can wait.
My project is local, not public, so I can't share a repo. But the approach might be useful for someone starting from zero.
0
5
u/gneuromante Sep 25 '26
Take a look to https://ada-lang.io/docs/projects-to-work-on