I'm still working my way slowly through Cohen's Ada as a Second Language, Second Edition. Ada takes a much more conservative approach to reliability than any of the BCPL/C languages (including Java), and in some cases more even than the Pascal/Modula/Oberon languages, so there are more restrictions on how some things are treated. Looking carefully at the language, I can understand the reasons for the restrictions, but abiding by them takes more up-front planning than is promoted by the BCPL/C languages. Is the additional effort worth the extra reliability for general purpose applications programming? That's what I hope to find out. It's easy to see, now that I'm back to using a language that doesn't include garbage collection as part of the standard, how much easier garbage collection makes interface design; Modula-3 or Java have a definite advantage here.