Eric Lippert from the C# design team has an interesting article on the ten worst features of C#. At least eight of these have been solved in Ada. Did Jean I. time-travel into the future and learned from the C# mistakes, when designing Ada? Lean back and enjoy! http://www.informit.com/articles/article.aspx?p=2425867 BTW, the two issues that are, to some degree, applicable to Ada are #9 Comparison operators for your own arithmetic (e.g., for your own rational numbers). In Ada, the "/="-operator is automatically the negation of "=". Which is great. But given "=", "<", and ">", why does one have to implement "<=" and ">=", as well. (Five Operators, where three would suffice.) (*) The situation with C# is even worse. You need to define/override at least nine methods. #2 Finaliz(ers) are fragile In Ada, the finalize procedure for an object can be called more than once, Finalize should rather not raise an exception, ... apparently, C# finalzisers suffer from similar problems: "any time a finalizer runs, you could argue that the program either has a bug or is in a dangerous state, such as being shut down unexpectedly via a thread abort". The remaining eight C# issues have been solved in Ada. ------- (*) One might argue that two operators, e.g., "=" and "<" would suffice, rather than three. If neither A=B nor AB is obvious, isn't it? But not all sorts of "arithmetic", where you want to take comparisons, have the property that either of A=B, A>B, AB nor AB. On the other hand, A <= B should never mean anything different from (A < B) or (A = B)! Similarly for A >= B. -------- I love the taste of Cryptanalysis in the morning! -------- www.uni-weimar.de/de/medien/professuren/mediensicherheit/people/stefan-lucks ----Stefan.Lucks (at) uni-weimar.de, Bauhaus-Universität Weimar, Germany----