Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Path: utzoo!utgpu!water!watmath!clyde!cbosgd!ihnp4!homxb!mtuxo!mtune!rutgers!bellcore!faline!ulysses!allegra!alice!bs From: bs@alice.UUCP Newsgroups: comp.lang.c++ Subject: Re: Paramaterized Types and Inheritance (was: C++ libraries) Message-ID: <7330@alice.UUCP> Date: Wed, 30-Sep-87 20:58:58 EDT Article-I.D.: alice.7330 Posted: Wed Sep 30 20:58:58 1987 Date-Received: Sat, 3-Oct-87 09:36:41 EDT References: <1096@g.gp.cs.cmu.edu> <817@hplabsz.HPL.HP.COM> Organization: AT&T Bell Laboratories, Murray Hill NJ Lines: 64 Summary: I will be careful In article <1096@g.gp.cs.cmu.edu>, dld@g.gp.cs.cmu.edu (David Detlefs) writes: > > How do inheritance and parameterized classes interact? and Jim Kemph kempf@hplabsz.UUCP (kempf @ Hewlett-Packard Laboratories) adds a couple of warnings: > C++ is already a fairly rich language, and addition > of other constructs may push it over the brink. and > Somebody ought to look into a formal semantics, whether algebraic, > denotational, or abstract is irrelevent, of C++. I like the idea of parameterized types, I am quite concerned about complexity, I am (together with colleagues) trying find a more precise specification of C++. Whatever I do, I will definitely heed Jim's most important remark: Be careful! One source of trouble is of course that a more common attitude among users is I want it yesterday! Let me just mention a few questions: Why don't we just add multiple inheritance, full dynamic types, parameterized types, exception handling, concurrency features, persistent objects, statements as expressions, garbage collection, and the ability to defined arbitrary new operators? Why don't we have an integrated C++ environment? Why don't we have a large standard library like Smalltalk has? Why don't we stop worrying about compiler size, about complexity, about compiler speed, about run-time efficiency, about memory utilization, and (especially) about bad old linkers? Why don't we stop worrying about compatibility? It is no exageration to say that I hear every one of these every week. There are of course more such questions. To ensure that C++ a remain a stable, well defined, efficient tool for program development we must move relatively slowly and carefully. C++ isn't (just) a research toy/tool. Trying to do everything at once would be a disaster and doing anything significant well will take longer than most people are willing to believe. So, why don't we just leave C++ alone? Because we can do better - MUCH better - (without compromising compatibility, efficiency, portability, etc.) and because if we stopped now C++ would fragment into many incompatible dialects as everyone added their favorite extension and there were no mainstream to feed the ideas and experiences back into. C was essentially ``frozen'' by the publication of K&R; this will not happen to C++. Pascal splintered into dialects because necessary work wasn't done; this is harder to avoid now that there a many groups developing C++ compilers and tools, but need not happen to C++.