[...]\n\nThat brings us to C and C++. I've done a lot of C and C++ programming \nover the years, and it's left me with the feeling that those languages are \nmajor barriers to programming efficiency. It takes me roughly twice the \ntime to get a C or C++ program working as it does to get a comparable \nModula-2 program working. (On some projects I've kept logs to verify \nthis.) The coding time is roughly the same, but there's a major \ndifference in debugging time. Everyone I know writes buggy software in C \nand C++, and then they take forever trying to track down the bugs. Some \ndevelopers give up, and sell the software with the bugs still included. \n\nThere are two main reasons why C software is so bug-prone. \n\n 1. Lack of type safety. C is designed in such a way that the compiler \n can't do much error checking, so the compiler gives no warnings for \n things that, in a type-safe language, would be reported as errors at \n compile time. You don't see the errors until execution time, and \n then you're left wondering what caused the error. \n\n 2. Poor support for modular programming. You can break up a C program \n into modules, but they're not truly independent of one another. A \n slight change in one module can have catastrophic effects on other \n modules. Once a project grows moderately large, you lose control of \n your own code. \n \n\n C++ is a little better in these two respects, but C++ has problems of its \n own. The language designers tried to graft high-level features onto a \n low-level language, and the result is a mass of inconsistency. A C++ \n reference manual is typically several times as thick as manuals for other \n programming languages, because every rule has a maze of exceptions and \n special cases. \n\n In addition, I've noticed that a lot of C++ programmers seem to have \n adopted the philosophy of "let's try this, and hope that it works". The \n notion that you shouldn't write code that you don't understand seems to \n have become unfashionable. Maybe that's the fault of the language (and \n its libraries), maybe not. In any case, it's not the way I prefer to \n work. \n\n Ultimately, the reason I use Modula-2 is that it lets me get applications \n working quickly, it gives me control of large projects, and it doesn't \n force me to spend huge amounts of time on debugging. I'm too old to \n enjoy the thrill of tracking down obscure bugs. I like to get something \n working, and then be free to move on to other projects.
;-)
I know, I know...
Cheers,
Scott.
(who does very little programming, and none in Modula-2