From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on polar.synack.me X-Spam-Level: X-Spam-Status: No, score=-1.3 required=5.0 tests=BAYES_00,INVALID_MSGID autolearn=no autolearn_force=no version=3.4.4 X-Google-Language: ENGLISH,ASCII-7-bit X-Google-Thread: fac41,b87849933931bc93 X-Google-Attributes: gidfac41,public X-Google-Thread: 109fba,b87849933931bc93 X-Google-Attributes: gid109fba,public X-Google-Thread: f43e6,b87849933931bc93 X-Google-Attributes: gidf43e6,public X-Google-Thread: 114809,b87849933931bc93 X-Google-Attributes: gid114809,public X-Google-Thread: 103376,b87849933931bc93 X-Google-Attributes: gid103376,public X-Google-Thread: 1108a1,b87849933931bc93 X-Google-Attributes: gid1108a1,public From: fjh@mundook.cs.mu.OZ.AU (Fergus Henderson) Subject: Re: What is wrong with OO ? Date: 1997/01/12 Message-ID: <5bba0q$fbr@mulga.cs.mu.OZ.AU>#1/1 X-Deja-AN: 209375125 references: <32D11FD3.41C6@wi.leidenuniv.nl> organization: Comp Sci, University of Melbourne newsgroups: comp.lang.c++,comp.lang.smalltalk,comp.lang.eiffel,comp.lang.ada,comp.object,comp.software-eng Date: 1997-01-12T00:00:00+00:00 List-Id: bs@research.att.com (Bjarne Stroustrup) writes: >C++ is a language primarily aimed at creating production software. Like >all such languages, it together with its associated libraries, tools, and >programming techniques is too large to learn quickly (unless you happen >to be experienced in rather similar languages and techniques - and most >students and programmers are not when they first encounter C++). >Consequently, it must be learned in stages starting with some suitable >subset (and a suitable subset of tools, libraries, programming techniques). > >Many are too ambitious and try to learn too much too fast. In particular, >many programmers focus on learning every obscure language detail rather >than overall principles because mastery of programming language details >is what has traditionally been valued in many programming communities. >That way, people get lost in details. It's not important to learn every obscure language detail, but it is important to know all the language rules that govern the behaviour of the subset of language features that you do use. Without that knowledge, it is very easy to accidentally write programs that are non-portable or buggy. Most C++ programmers make use of class libraries (e.g. the C++ standard library) that use a broad range of C++ language features. Correct use of such class libraries may require knowledge of a large number of those obscure details. (See, for example, the thread on "operator delete and template instantiation" in comp.std.c++, or consider the many discussions in comp.lang.c++(.moderated) on how to write "exception-safe" code.) >Usually, people manage in the end, and >if not they try something else - which they may or may not find more >suitable. Usually, people do manage in the end, but then again most software produced today is full of bugs. Usually it works well enough only because it has been carefully tested and debugged, but usually it will fail when exercised in novel ways. Choice of programming language is certainly not the only or the most important factor in this, but I do think that it can make a significant difference. >Reliability and mainatainability can be eased by a programming >language (such as C++) but is the result of a more comprehensive >process. Yes, but I think one part of that comprehensive process should be ensuring that programmers do know the language rules that govern the behaviour of the language features that they use. (It's not too important for a programmer to know about the tricky cases if the compiler will catch them, but it is important to know about possible pitfalls that would not be caught by the compiler and would instead result in undefined or implementation-dependent behaviour at runtime.) -- Fergus Henderson | "I have always known that the pursuit WWW: | of excellence is a lethal habit" PGP: finger fjh@128.250.37.3 | -- the last words of T. S. Garp.