Talk:Criticism of C++

message: The history of this article is really odd. It seems like User:Rincewind82 was working on a personal user-land criticisms page, and then a completely different user decided to move it into this page. This seems rather dubious to me. User Rincewind82 has contributed to exactly two pages: this one and a few things with Lean software development. Whereas Anthony is a well-established user. But his contributions rarely stray into technology. I'm curious about what happened here. Did Rincewind82 ask Anthony to move this page, or did Anthony do that on his own? And if it's the latter, why? Korval (talk) 17:14, 26 January 2016 (UTC)
replies: text: It's fine. The circumstances seemed a bit odd, which is why I asked. But your explanation makes sense. As a new user, you might not have the ability to make such a move, so you invoked a process to get it moved for you. That's fine. Korval (talk) 01:13, 28 January 2016 (UTC)
thread_title:  Where did this page come from? 

message: In the example code function POSIX_Poll, is there a reason why fdopen(fd.fd, "r") is used instead of just File?
Also, mixed case variable names are discouraged by the kernel coding standard.Michael9422 (talk) 22:00, 24 May 2016 (UTC)
thread_title:  Lacking POSIX suppport in <iostream> 

message: I think that the article could use a section called 'complexity'. A frequent criticism is that the language is too complicated (from, for example, programmers Ken Thompson and Eric Raymond; or Thomas Becker's blog article "C++ and the culture of complexity"). That results in more time and effort for developers to become proficient compared to simpler languages, and is exacerbated by the many unexpected language pitfalls, or hidden "gotchas". The complexity also makes it harder to read and understand code written by others, which can, for example, reduce productivity for software projects with many contributors. Also, the higher level, abstract features that C++ adds to C, tend to break the tight correspondence C has to machine code (Linus Torvalds says it "[breaks] the mental model", or something to that effect), making those features undesirable and probably counterproductive for systems level programming (this is also expressed by Martin Sustrik regarding ZeroMQ).Michael9422 (talk) 19:25, 8 June 2016 (UTC)
replies: text: A problem solving and programming principle is to use a simple language, as few things as you can, that is called the Ockham Razzor, C has just the essential things, it has about 30 keywords and a well written book by Brian Kernighan about 300pp if my memory do not betrays me. C++ has about 300 keywords and an about 1600pp reference book. Who can master it? not even as his author claims that it is OK to use a subset. No no no, everything should fit fine together with that baroque design, it is impossible to be sure that one has a consistent use of the language because there is an exponential growth of interaction to take into account, Stroustroup is very far from the Small is Beautiful philosophy in vogue in ATT Bell Labs when Unix, C, groff, awk, sed, pic, etc. where created, Stroustroup did not learn to write simple systems, he just published his ill designed language naming it C++ to say that it is a better C, but it is not. In one of his writings where he explains what is OO vs data abstraction one can see many misconceptions which are reflected in his language and descendants of it.  — Preceding unsigned comment added by 2806:106E:B:2E34:84BD:FC42:A6BB:76D5 (talk) 20:02, 19 September 2022 (UTC)
thread_title:  Complexity 

message: I recently added some external links to this article (too many actually) that were subsequently removed by other editors. I do not intend to restore them, but I want to point out that there are quite a few other articles, about software at least, that have external links to blogs or humorous articles that do not meet the same wikipedia guidelines given as the reason for removing the links that I added. For example, see the wikipedia article 'Programming productivity'. Should those links be removed? Michael9422 (talk) 16:12, 12 June 2016 (UTC)
thread_title:  External Links 

message: There's no point in the criticism that std::string does not support unicode, being a sequence of bytes. Thus, it's basically encoding agnostic.
Furthermore, the point about length() is of no value: Requiring the function to return the number of code points is nothing more than a special case (why not "grapheme clusters" or "user perceived characters"?), and does not make any sense with unspecified encoding. In fact (and talking about Unicode and a specific encoding), when interfacing with other software components, the length in bytes is what's needed often enough.
See  for further arguments on the topic.
As a result, I'd like to have the "Strings without Unicode" section deleted. Alternatively, I'd suggest to add the arguments above to adhere to the "Neutral point of view" principle.
mkluwe (talk) 19:44, 22 November 2016 (UTC)
replies: text: the way it's worded, the criticism is perhaps poorly worded and unsourced. It could be written to reflect the issues highlighted by n3336 (which has now morphed into p0353r1) --Cubbi (talk) 03:58, 23 November 2016 (UTC)

text: Agree with Mkluwe - the arguer does not understand text encoding and has conflated "byte", "codepoint" and "character".  The assertiveness of the argument, despite its clueless premise, annoyed me so much that I renamed the section and rewrote the example to show the real problem: a source-file's encoding determines the bytes in a string-literal, even when you think it shouldn't.--KrisW1001  — Preceding unsigned comment added by KrisW1001 (talk • contribs) 11:15, 29 April 2019 (UTC)
thread_title:  Strings without Unicode 

message: This source
 
that I had added previously was removed recently from the section named 'code bloat', but I think it is appropriate.
What do other editors think? Michael9422 (talk) 19:25, 13 March 2017 (UTC)
thread_title:  Code bloat citation removal 

message: I feel the whole section is obsolete since std::array...?!? -- DevSolar2 (talk) 11:54, 26 October 2017 (UTC)
thread_title:  "Heap allocation in containers" obsolete? 

message: C++'s awfully complicated grammar should be discussed, and how that makes parsing it slow. 213.149.61.212 (talk) 20:17, 9 November 2017 (UTC)
replies: text: That is being done in the very first paragraph of the article...? -- DevSolar2 (talk) 14:54, 13 November 2017 (UTC)
replies: text: Back then, I don't know, but today in 2024, there isn’t anything in this article about the complexity of C++ syntax, which to my knowledge is a major source of criticism (most vexing parse, ambiguities with < and >, parsing being undecidable and who knows what else). Maëlan 15:14, 4 May 2024 (UTC)
thread_title:  Grammar 

message: In the lead, a quote by the creator of C++ reads as so:
"There are only two kinds of languages: the ones people complain about and the ones nobody uses."
: Let me quote, I believe Erik Meijer said it, "there are two kind of programming languages, invented and discovered ... discovered languages are the product of research while invented languages are just based in someone inspiration", it was said telling how many researchers developed many convergent languages and decided to unify they effort developing Haskell, a discovered language. C is not really an invented language it emerged from the need to have a systems programming language to provide a portable and abstract view of the random access machine with the goal to be small, just with elementary features, it is extensible through library functions like printf in stdio.h, which in other languages was part of the language. C is not a high level language, although it looks like one, because it is well designed for its original goal. With C++, one could expect to have the features present in high level languages, in particular facilities to define abstract data types. but it was done in a wrong way introducing unnecessary features far from being a small and simple more close to the notion that motivated it, in part due to a misunderstanding of the concepts and as later became apparent, the tendency of Stroustrup to add more and more features that occurs to him. It is an invented language with many flaws. Stroustrup has been reluctant to compare C++ with other languages is quite closed to criticism. But programming languages are not music, it is not a matter o taste, to judge them, there are mathematical foundations of computing to take into account to design, reliable, safe, expressive programming languages, that is crucial to build programs to control medical life support devices, airplanes, cars, and many more applications whose failure cause deaths. Of course, it is very important in other areas like manufacturing, management and financial systems.  — Preceding unsigned comment added by 187.168.111.50 (talk) 21:26, 19 September 2022 (UTC)
replies: text: It's a poignant dismissal of course. I wouldn't put it in the lead myself, but it might reasonably be in here somewhere. (Maybe.) Izno (talk) 02:33, 14 September 2021 (UTC)

text: The significance, is that a) it is about the topic at hand b) it is be the designer of the topic at hand. I don't see how it could be any more significant. Carewolf (talk) 16:23, 18 September 2021 (UTC)
thread_title:  What's the significance of the quote in the lead? 

message: I fixed the citation, this is chapter 10 of a book tilted The Unix Haters Group. I disagree in general with that book, I like Unix, but I can agree with what it say about C++, lets be fair, E.W.Dijkstra said something alike about OOP, but I am just going to fix the title of the book.
:"It was perhaps inevitable that out of the Unix philosophy of not ever making anything easy for the user would come a language like C++.
:The idea of object-oriented programming dates back to Simula in the 60s, hitting the big time with Smalltalk in the early 70s. Other books can tell you how using any of dozens of object-oriented languages can make programmers more productive, make code more robust, and reduce maintenance costs. Don’t expect to see any of these advantages in C++.
:That’s because C++ misses the point of what being object-oriented was all about. Instead of simplifying things, C++ sets a new world record for complexity. Like Unix, C++ was never designed, it mutated as one goofy mistake after another became obvious. It’s just one big mess of afterthoughts. There is no grammar specifying the language (something practically all other languages have), so you can’t even tell when a given line of code is legitimate or not."  — Preceding unsigned comment added by 187.168.111.50 (talk) 21:56, 19 September 2022 (UTC)
thread_title:  the cobol of the 90s 

message: This whole entry lacks any sort of cohesion as there is no logical connection between different sections; it's not clear why these poorly collections of mini-rants are compiled into an encyclopedia entry. This whole page, from top to bottom, reads like a poor attempt at gluing together a bunch of random early 2000s blog post-style rants written by a frustrated, mediocre programmer venting off to divert attention from his own mediocrity. There is a pretty good "Criticism" section under the main C++ entry that gives you more information than the entirety of the "C++ Criticism" entry.
So I just have to ask: What is the point of this? Why is this so disorganized? And why does this read like a blog post?! 139.68.209.96 (talk) 01:48, 22 November 2023 (UTC)
thread_title:  Is this a blog post, or an encyclopedia entry?