Path: utzoo!attcan!utgpu!jarvis.csri.toronto.edu!rutgers!usc!orion.oac.uci.edu!uci-ics!news From: schmidt@zola.ics.uci.edu (Doug Schmidt) Newsgroups: comp.lang.c++ Subject: Re: C++ Not Ready for Commercial Use Message-ID: <1989Oct15.193756.6114@paris.ics.uci.edu> Date: 15 Oct 89 19:37:56 GMT References: <24.UUL1.3#913@acw.UUCP> Sender: news@paris.ics.uci.edu (Network News) Reply-To: schmidt@zola.ics.uci.edu (Doug Schmidt) Organization: University of California, Irvine - Dept of ICS Lines: 137 In-reply-to: guthery@acw.UUCP (Scott Guthery) It would be nice if everything in life were easy... In article <24.UUL1.3#913@acw.UUCP>, guthery@acw (Scott Guthery) writes: ++ When thinking about using C++ for a real programming project consider the ++ following: ++ ++ 1) C++ is *NOT* a superset of C. This is true, however it is not clear a priori that this situation is an egregious oversight on the part of C++ designer. I suggest you read the article `C++: as close as possible to C- but no closer' by Stroustrup and Koenig, from the July/August 1989 issue of `The C++ Report.' This explains the rationale for various incompatibilities. I program a great deal in both C and C++, and have not found the `superset' issue a serious impediment in practice. In fact, even when I write C code, I generally also compile it with a C++ compiler, since the stronger type-checking catches many subtle errors that even ANSI C compilers miss. ++ 2) C++ has been under development for over 10 years and it ++ still isn't done. The same can be said for COBOL, FORTRAN, Ada, Modula 2/3, C, etc. C++ isn't Latin, i.e., it is not a *dead* language. In fact, I'm hard pressed to name any significant/popular programming languages that *haven't* undergone revision over the years. Can you? ++ 3) An incompatible Release 2.0 just came out this year; existing ++ C++ projects must either be rewritten or use two different ++ incompatible compilers for the same langauge in their builds. Naturally, it is an *empirical* question whether existing C++ projects must be re-written. For example, no one is holding a gun to C++ developers, forcing them to upgrade to 2.0. More importantly, it is certainly possible to write useful C++ code that relies upon the `core' language features, e.g. data abstraction via classes. These features haven't changed much from release 1.2 to 2.0, though I'd probably be tempted to re-write old code simply because 2.0 offers several more powerful abstraction mechanisms (e.g., class-specific new/delete operators, protected class members, multiple inheritance, type-safe linkage, etc.). ++ 4) C++ experts are still arguing about how many features of C++ ++ do work and should work. Ditto for Ada, C, and any other popular language. Discussion and dialogue are healthy. There's an apt cliche here: `while you're green you're growing, once you're ripe you start to rot!' There is no point trying to freeze the language in an incomplete state. If you don't feel comfortable using it currently, simply wait about 3 years, and try again! ++ 5) Release 3.0 of C++ is under active development; still more ++ features will be added and existing featurres "improved"; no ++ guarantees about upward compatibility with 2.0 have been made. If you want guarantees, use Ada ;-) (ironically, however, the Ada 9x committee is wrestling with many issues that C++ designers do, e.g., backward compatibility, avoiding `creeping featurism,' etc.). ++ 6) C++ violates much of Wirth's advice about how programming languages ++ should be designed & developed; Wirth had many key insights regarding language design. However, he is certainly not infalliable. For proof, ask yourself why Pascal has failed to become a serious industry standard for programming languages? The short answer is that it lacked many features that proved necessary when writing `real' applications in an efficient and portable manner. There is a thin line between parsimony and inadequacy when designing programming languages... ++ programming languages are not just ++ bags of tricks and features to be added to at will but this is how ++ C++ is being developed. Please provide concrete evidence for your claims, otherwise the discussion becomes a raging polemic... ++ 7) According to its author, C++ is designed for programs ++ measured in thousands of lines of code. The author goes ++ to say that if the program is measured in tens of thousands ++ of lines of code "mere progrmming language structuring ++ facilities can provide little relief." He's absolutely right. So, what's your solution here? Check out Fred Brook's `No Silver Bullet' article. If you are looking for trivial panaceas to complex problems you're not going to find it with either C++ or any other programming language. The question here, however, is `does C++ provide better support for good software engineering principles compared to its alternatives?' When the alternative is C (as often occurs today), then I think the answer is affirmative. ++ 8) There is no software management methodology for inheritance, ++ overloading, or persistent state among other C++ features. This is a failure of software engineering researchers, not necessarily a failing of C++ designers. ++ 9) The current version of the language has only a operational ++ definition; the final version has no definition at all. What exactly do you mean by this? It makes a good slogan, but is rather content-free... Can you `prove' the final version has no definition at all?! ++ 10) There are no industrial grade development, debugging, ++ software management, configuration control or proram analysis ++ tools for C++. Sounds to me like there is a golden opportunity for some enterprising developers to make a killing in the market. Luckily, it sounds like you won't be among the competition ;-) ++ There's no way a software project manager who cares about the quality, ++ deliverability, manageability, or long-term viability of his product ++ would commit a real software project to C++ in its current state. Is this a statement of opinion, or a statement of fact? If the latter then I'm afraid there are many counter-examples. ++ fact I've got to wonder about the software engineering skills of ++ someone who would even think about committing a project to an undefined ++ programming language. Great, please continue in search of the holy grail of programming languages. If/when you find the perfect solution, please let us know! Doug -- Master Swordsman speak of humility; | schmidt@ics.uci.edu (ARPA) Philosophers speak of truth; | office: (714) 856-4034 Saints and wisemen speak of the Tao of no doubt; The moon, sun, and sea speaks for itself. -- Hiroshi Hamada