Historic Ada Design

Tooling

In a previous post I recommended, even if you're using all free tools, sticking close to AdaCore's GNATPro choices for dependencies. But there is an alternative, the somewhat coherent culture that obtained in the Ada Software Repository circa 1991. Critically, note that this was applied to command-line utilities that transformed input files to output files (perhaps following the Software Tools philosophy), there may be hidden limitations. You could view this as retrocomputing, preparation for collapse, or plain contraryism.

Testlog unit test library
Portable Text Formatter

There are also some modern inventions that I would rather not do without:

Alire, Ada package manager

Module Structures

From reviewing some medium-sized Ada programs I see common "patterns", to use an anachronistic term because these predate the GoF book. The examples I read are ptf and x1804. NB: these are command-line utilities that operate on files, later interactive and GUI programs may be quite different (and much less portable).

Portable Text Formatter
X1804 documentation generator

Top priority is some packages that have been subsumed by later versions of the language spec. These should no longer exist.

Second, there are some reusable packages that haven't been added to the standard yet (and some of them never should be).

Finally, there are some packages that have different implementations for different systems, but are conceptually similar.

I'm reminded that reading code is an essential skill. It's good to get some practice.

MCP

It's not particularly related, but I've also been adding support for various MUD Client Protocol (MCP) packages to rmoo. This is an interesting way to do client-server shared apps, with the thin client being Emacs instead of an orders-of-magnitude bigger Web browser. I wonder if Web apps even qualify as "thin clients" any more, for a page megabytes of Javascript source code may be transferred to run on a platform with more LOC than the OS.

rmoo, an Emacs MOO (MUD Object Oriented) client

Conclusion

I hope I've presented that if you're willing to accept some compromises, there are much older and smaller choices for development tools. But note that the programs I studied were command-line utilities (although ptf is quite complex internally). It's up to engineering judgement whether using these older tools is sufficient and/or lower risk or not.

Back to my gemlog