# C++

C++ (pronounced "see plus plus") is a statically typed, free-form, multi-paradigm, compiled, general-purpose programming language. It is regarded as an intermediate-level language, as it comprises both high-level and low-level language features. Developed by Bjarne Stroustrup starting in 1979 at Bell Labs, C++ was originally named C with Classes, adding object oriented features, such as classes, and other enhancements to the C programming language
    CONTENT : A - F , G - L , M - R , S - Z , See also , External links

## Quotes

    Quotes are arranged alphabetically by author

### A - F

* Today, we're at the beginning stages of the next level. Executable UML is the next logical, and perhaps inevitable, evolutionary step in the ever-rising level of abstraction at which programmers express software solutions. Rather than elaborate an analysis product into a design product and then write code, application developers of the future will use tools to translate abstract application constructs into executable entities. Someday soon, the idea of writing an application in Java or C++ will seem as absurd as writing an application in assembler does today.
** Grady Booch (2002) "The Limits of Software". Lecture September 2002
* I think C++ was pushed well beyond its complexity threshold and yet there are a lot of people programming it. But what you do is you force people to subset it. So almost every shop that I know of that uses C++ says, “Yes, we’re using C++ but we’re not doing multiple-implementation inheritance and we’re not using operator overloading.” There are just a bunch of features that you’re not going to use because the complexity of the resulting code is too high. And I don’t think it’s good when you have to start doing that. You lose this programmer portability where everyone can read everyone else’s code, which I think is such a good thing.
** Joshua Bloch, as interviewed in Peter Seibel, Coders at work (2009), ISBN 1430219483, p. 193
* "Tsk, tsk," said the Hatter, "what a mess you've made.""It is perfectly fine," replied Alice calmly. "I will leave it for the garbage collection service to recover.""Don't expect any garbage collection here. Furthermore, your polymorphic variables won't ever be properly deleted, because you haven't declared your destructor to be virtual.""My what to be what?" said Alice, starting to get worried."Declare your destructor. You must have a destructor. Everything that is constructed should be destroyed; it's only natural. Furthermore, if you are ever not quite what you seem, you should declare yourself to be virtual.""A rule to remember!" roared the Red Queen. "Never make a mess without cleaning it up first.""You can ignore her," whispered the Dormouse, picking up the tea cake Alice had just set aside, "but you shouldn't cast away const so lightly."Alice began to feel that this new world she found herself in was not quite the same as the cozy sitting room she had just left.
** Timothy Budd (1999) C++ for Java Programmers. p. v
* The complexity of C++ (even more complexity has been added in the new C++), and the resulting impact on productivity, is no longer justified. All the hoops that the C++ programmer had to jump through in order to use a C-compatible language make no sense anymore -- they're just a waste of time and effort. Now, Go makes much more sense for the class of problems that C++ was originally intended to solve.
** Bruce Eckel (27 August 2011). Calling Go from Python via JSON-RPC. Retrieved on 20 August 2014.

### G - L

* Writing in C or C++ is like running a chain saw with all the safety guards removed.
** Bob Gray of consulting firm Virtual Solutions; cited in Byte (1998) Vol 23, Nr 1-4. p. 70
* Actually I made up the term "object-oriented", and I can tell you I did not have C++ in mind.
** Alan Kay (1997), "The Computer Revolution hasn't happend yet -- Keynote, OOPSLA 1997"
* But you wonder whether it [C++] has passed beyond some threshold of complexity that's beyond mortals.
** Brian Kernighan (2015), "Computer Science - Brian Kernighan on successful language design", University of Nottingham.

### M - R

* Everyone has an individual background. Someone may come from Python, someone else may come from Perl, and they may be surprised by different aspects of the language. Then they come up to me and say, 'I was surprised by this feature of the language, so Ruby violates the principle of least surprise.' Wait. Wait. The principle of least surprise is not for you only. The principle of least surprise means principle of least my surprise. And it means the principle of least surprise after you learn Ruby very well. For example, I was a C++ programmer before I started designing Ruby. I programmed in C++ exclusively for two or three years. And after two years of C++ programming, it still surprises me.
** Yukihiro Matsumoto "The Philosophy of Ruby, A Conversation with Yukihiro Matsumoto, Part I" by Bill Venners on 2003-09-29 (Artima Developer
* And C++ programming languages, we own those, have licensed them out multiple times, obviously. We have a lot of royalties coming to us from C++.
** Darl McBride (August 15, 2002, )
* I believe C++ instills fear in programmers, fear that the interaction of some details causes unpredictable results. Its unmanageable complexity has spawned more fear-preventing tools than any other language, but the solution should have been to create and use a language that does not overload the whole goddamn human brain with irrelevant details.
** Erik Naggum (2001) Re: Checking for Errors Before Run Time (Usenet article 21-11-01)
* In C++, reinvention is its own reward.
** Erik Naggum (2007) Re: wretched C++ (Usenet article 23-04-97)
* C++ is a language strongly optimized for liars and people who go by guesswork and ignorance.
** Erik Naggum (2008) Re: is CLOS reall OO? (Usenet article 05-05-98)
* In 30 years Lisp will likely be ahead of C++/Java (but behind something else)
** Peter Norvig (October 11, 1999). Lisp: Where Do We Come From? What Are We? Where Are We Going?. Retrieved on 2010-05-29. Slide 9 in presentation to Lisp Users Group.

### S - Z

* C gives the programmer what the programmer wants; few restrictions, few complaints... C++ maintains the original spirit of C, that the programmer not the language is in charge.
** Herbert Schildt (2002) C++: The Complete Reference, 4th Edition. p. 8
* You can use C++ if you want with GNOME, but we don't assume that you're going to write C++. It's to a large extent based on Scheme, which is a dialect of LISP. LISP being the most powerful and cleanest of languages, that's the language that's the GNU project always prefers.
** Richard Stallman in: "GNU's Not Linux" Network World Fusion, 01/11/99
* C++ is a badly designed and ugly language. It would be a shame to use it in Emacs.
** Richard Stallman in: "Re: Efforts to attract more users?" emacs-devel, 2010-07-12
* And you're right: we [the Java designers] were not out to win over the Lisp programmers; we were after the C++ programmers. We managed to drag a lot of them about halfway to Lisp. Aren't you happy?
** Steele, Guy (2003-08-21). Re: bindings and assignments (was: Re: continuations). LL1 Mailing List.
* Within C++, there is a much smaller and cleaner language struggling to get out.
** Bjarne Stroustrup (1994) The Design and Evolution of C++. Addison-Wesley, p. 207
* In C++ it's harder to shoot yourself in the foot, but when you do, you blow off your whole leg.
** Bjarne Stroustrup "Stroustrups FAQ" research.att.com; Cited in: Charles R. Hardnett (2011) Programming Like a Pro for Teens. p. 295
* The major cause of complaints is C++ undoubted success. As someone remarked: There are only two kinds of programming languages: those people always bitch about and those nobody uses.
** Bjarne Stroustrup (2005/13) "Posting to comp.lang.c++." stroustrup.com
* C++: an octopus made by nailing extra legs onto a dog.
** Steve Taylor; cited in Eric S. Raymond (2003) The Art of UNIX Programming. p. 328
* I would try out the [C++] language [at AT&T] as it was being developed and make comments on it. It was part of the work atmosphere there. And you'd write something and then the next day it wouldn't work because the language changed. It was very unstable for a very long period of time. At some point, I said, no, no more. In an interview I said exactly that, that I didn't use it because it wouldn't stay still for two days in a row. When Stroustrup read the interview he came screaming into my room about how I was undermining him and what I said mattered and I said it was a bad language.
** Ken Thompson; cited in Seibel, Peter (2009). Coders At Work. p. 475.
* [C++] certainly has its good points. But by and large I think it's a bad language. It does a lot of things half well and it’s just a garbage heap of ideas that are mutually exclusive. Everybody I know, whether it’s personal or corporate, selects a subset and these subsets are different. So it’s not a good language to transport an algorithm—to say, "I wrote it; here, take it." It’s way too big, way too complex. And it’s obviously built by a committee. Stroustrup campaigned for years and years and years, way beyond any sort of technical contributions he made to the language, to get it adopted and used. And he sort of ran all the standards committees with a whip and a chair. And he said "no" to no one. He put every feature in that language that ever existed. It wasn't cleanly designed—it was just the union of everything that came along. And I think it suffered drastically from that.
** Ken Thompson; cited in Seibel, Peter (2009). Coders At Work. p. 475.
* When the three of us [Thompson, Rob Pike, and Robert Griesemer] got started, it was pure research. The three of us got together and decided that we hated C++. [laughter] … [Returning to Go,] we started off with the idea that all three of us had to be talked into every feature in the language, so there was no extraneous garbage put into the language for any reason.
** Ken Thompson, talking about the origins of the Go programming language
** Dr. Dobb's: Interview with Ken Thompson (18 May 2011). Retrieved on 7 February 2014.
* C++ is a horrible language. It's made more horrible by the fact that a lot of substandard programmers use it, to the point where it's much much easier to generate total and utter crap with it.
** Linus Torvalds (2007-09-06). Message to gmane.comp.version-control.git mailing list. Retrieved on 2007-09-22.
* In other words, the only way to do good, efficient, and system-level and portable C++ ends up to limit yourself to all the things that are basically available in C. And limiting your project to C means that people don't screw that up, and also means that you get a lot of programmers that do actually understand low-level issues and don't screw things up with any idiotic "object model" crap.
** Linus Torvalds (2007-09-06). Message to gmane.comp.version-control.git mailing list. Retrieved on 2007-09-22.
* If you want a fancier language, C++ is absolutely the worst one to choose. If you want real high-level, pick one that has true high-level features like garbage collection or a good system integration, rather than something that lacks both the sparseness and straightforwardness of C, and doesn't even have the high-level bindings to important concepts.
** Linus Torvalds (2007-09-07). Message to gmane.comp.version-control.git mailing list. Retrieved on 2014-08-06.
* C++ is in that inconvenient spot where it doesn't help make things simple enough to be truly usable for prototyping or simple GUI programming, and yet isn't the lean system programming language that C is that actively encourages you to use simple and direct constructs.
** Linus Torvalds (2007-09-07). Message to gmane.comp.version-control.git mailing list. Retrieved on 2007-09-22.
* A system composed of 100,000 lines of C++ is not be sneezed at, but we don't have that much trouble developing 100,000 lines of COBOL today. The real test of OOP will come when systems of 1 to 10 million lines of code are developed.
** Ed Yourdon (1990) cited in: Andreas Paepcke (1991) Object-oriented Programming Systems, Languages and Applications. p. 166
* When you’re programming C++ no one can ever agree on which ten percent of the language is safe to use. There’s going to be one guy who decides, “I have to use templates.” And then you discover that there are no two compilers that implement templates the same way.
** Jamie Zawinski (2009-10-16). C++ in Coders at Work. Retrieved on 2015-02-06.
* C++ is just an abomination. Everything is wrong with it in every way. So I really tried to avoid using that as much as I could and do everything in C at Netscape.
** Jamie Zawinski (2009-10-16). C++ in Coders at Work. Retrieved on 2015-02-06.