3 ms·
I've got to say, I have fond memories of writing software in Ada - I was involved in writing an air traffic control system in the mid 90s in Ada. The language
by cesaref 5y ago
I've got to say, I have fond memories of writing software in Ada - I was involved in writing an air traffic control system in the mid 90s in Ada.
The language didn't get in the way for that sort of application - we had proper specs, and proper designs, so by the coding stage we had a very good idea what we were attempting to solve, and what components would be required.
I'd be interested to know how it would work in a more modern Agile working practice. I've a feeling it would require a fair bit more work to maintain with simple changes having quite a large spread through the codebase due to the strong typing, but saying that, maybe the language has evolved since I last used it and it works well.
- pyjarrett 5y ago> simple changes having quite a large spread through the codebase due to the strong typing The opposite is true in my experience and refactors are usually well bounded. The "killer feature" of Ada is that types are not modules for writing behavior (in general). This means that syntactically, you can move functions/procedures around somewhat freely because encapsulation and namespacing is done at the package level. It leads to a lot more appropriate data and responsibility hiding, and avoids wasted time considering "is this a method or a (standalone) free function?"
- touisteur 5y agoSince the compiler is a harsh mistress, it's actually a very nice environment for refactoring. Use the compiler, and use strong typing. Enumerated types, switchn/case statements where you have to fill every case, most stuff is caught at compilation and then during the first tests when you enable all the checks. We're in fact far more agile in our Ada projects than any with C or Java... Small teams, 1 to 10 mloc code bases, lots of reuse and refactoring.
- mamcx 5y ago> I've a feeling it would require a fair bit more work to maintain with simple changes having quite a large spread through the codebase due to the strong typing I'm porting my Rust codebase to async, and that is SUPER infective: This lead to change everything, everywhere with the exception of the "pure" functions. And yet, the process is super boring: I get +1000 errors, start from the bottom, change this to that, now +400 errors, continues, now 0 errors, run test. Done. Something so big will be a nightmare on a dynamic lang, and even in C# or similar (ML lineage FTW!)