Illustrations of Ada Goodies: Recommendation: A simple device interface program, involving memory-mapped I/O to registers, using representation clauses. Make it a generic, and have a number of these instantiated with different represented enumerated types running as concurrent tasks. Have them all wirting to a common database, using a protected object. Example of a represented enumerated type. : type traffic_light_T is ( Red, Red_and_Amber, Green, Amber); for traffic_light_T use ( Red => 2#000_0100#, Red_and_Amber => 2#0000_0110#, Green => 2#0000_0001#, Amber => 2#000_0010#, ); for traffic_light_T'SIZE use 8; You can then loop through traffic_light_T without bothering about magic numbers, or even how big the loop is. Ada-95 has lots of good OO features, but we often forget just exactly how easy it is to program at a high level in Ada without being bothered by such weird incantations as "public static void main(String[] args){print"Hello World\n");}" Note that - C isn't typesafe, Java can't handle real as opposed to virtual machine I/O, C++ templates are poorly implemented compared with Ada generics, and so on. Careful though with Java: more and more Ada features are being added to each iteration of thye language. Today it's generics, tomorrow maybe enumerations, then who knows?