Talk:C++/GA1

GA Review
The edit link for this section can be used to add comments to the review.''

Reviewer: Protonk (talk) 14:25, 19 August 2011 (UTC)

Initial comments
I am about to get on a plane and read through this article. I'll leave initial comments this evening and a more detailed review much later tonight (~EST). Caveat emptor: I am not a C++ developer. I have experience w/ functional languages and higher level scripting languages. Hopefully my ignorance enriches the review. ;) Protonk (talk) 14:25, 19 August 2011 (UTC)

Overall
In general the article is fairly close to GA status. It is relatively complete, accessible as an article on C++ is likely to be, and free from major issues. However I am placing this nomination on hold as there are several minor issues and a few larger issues to be dealt with. I will offer my general disclaimer that I am not a proofreader. Errors in grammar, syntax and the like (though not strictly part of the GA criteria) will not come up in this review unless they are egregious enough for me to catch them. That said, I hope GAN is a first step toward featured status and in that light many of my comments will be focused on general peer review. I also tend to write a lot of small points and ask a lot of questions. The number of points does not necessarily reflect my overall view of the article!

The basic points which must be satisfied for GA for this article specifically are:
 * The criticism section needs to be trimmed and rigorously sourced. As articles age the criticism section tends to accumulate one-off statements (since everyone can be a critic but not everyone can write a section on polymorphism) and becomes both a sourcing issue and a style issue.
 * Citation needed tags and large sections missing references must be cleared up.
 * Consider writing or expanding an "applications" section or subsection.
 * Consider folding in some of the language features or a few of the top level sections into others
 * Ensure that all of the self-published sources can be justified. C++ is a mature language and taught in thousands of schools every year.  There is no shortage of peer reviewed material.  You don't need to use the best sources for every claim (but you will for FAC) but you do have to ensure that sources meet our guidance on reliable sources.

Any of the below comments which do not relate directly to those five core issues are there for the benefit (hopefully) of editors and not necessary to meet the GA criteria.

Images

 * Abstract concepts like programming languages are difficult to suitably illustrate. The two images in the article are both germane to the topic, however I am not convinced the cover of Stroustrup's book is the best illustration.  However, both images are appropriately sourced.  The image of Stroustrup himself cites a vague email (near as I can tell) for GFDL compliance.  Unless I am missing something that might be a problem at FAC.
 * Given that it was OTRS approved, I think the latter image should be okay. --Cyber cobra (talk) 04:46, 26 August 2011 (UTC)
 * Inexplicably, I missed that. My apologies. Protonk (talk) 05:03, 26 August 2011 (UTC)

Style

 * Re-check the lede for excess inline citations. The rule of thumb for lede citations suggests only citing what is frequently a bone of contention (e.g. USS Constitution's status as the oldest floating commissioned vessel) or particularly dramatic or extreme statements.  As written the lede has 8 citations.  You may need 1, 2 or even 0.  If the lede properly summarizes the content of the article then nothing in the lede should be without a notional counterpart in the body.
 * The MoS's guidance here is very noncommittal. I wouldn't worry. --Cyber cobra (talk) 04:49, 26 August 2011 (UTC)
 * I'm not worried, but 8 is excessive. Protonk (talk) 05:02, 26 August 2011 (UTC)
 * Otherwise the lede looks good. I would swap the sentence on hardware design w/ the sentence about influence on other languages.  As it stands the hardware design (though important on its own) fits in better with the paragraph on applications for C++.
 * Be wary of overlinking. You don't need to decimate links in the article but if you view the article in ~10-12pt font on a screen with a reasonable height (800-900px) you shouldn't see the same article linked twice or three times.  This is in no way a hard and fast rule.  If you feel that linking the C++ Standard Library twice in two sections close together works for the article, then do it!  But be mindful about overloading readers with too many outbound links.
 * Some portions of the language features section are a bit discursive. Specifically the templates and encapuslation sections.  For subjects like C++ this may be hard to avoid.  The goal is to give a generalist overview while avoiding the format of a textbook and relying on multiple sources.  We don't want the main article for a language to be incomplete but long sections unanchored in references have a tendency to spread out and become problem areas as more editors engage with the content.
 * Be careful with acronyms and jargon. On the whole this article is actually rather well done with regard to avoiding jargon, but there are a few problem areas:
 * Introduce each acronym you plan to use and use each acronym you introduce. If you plan to use OO for "Object Oriented" as distinct from OOP for "object-oriented programming" then introduce both.  You start w/ OOP and transition to OO without signaling the reader.  It sounds dumb but try to imagine a new EE or computer science student reading the article.
 * The acronym SFINAE for Substitution failure is not an error is introduced but never revisited. Is this an important enough topic to mention once and is the acronym (independent from the idea) important enough to mention only once?
 * I don't see a clear thread for the language features section. Why is "Operators and operator overloading" first and "Polymorphism" last?
 * More generally, why is the standard library a top level section in the article? I understand the core importance of libraries to practitioners (which this article obviously should serve) but picture a new programmer or an erstwhile programmer looking for broad strokes.  We have the history of the language, the guiding principles (under "Philosophy"), the main features, parsers, compatibility, criticism and the standard library.  Were we to write a 7 chapter generalist book on C++ would those seven be our chapters?  If so the text should reflect their importance and if not we should do some reshuffling.
 * I may regret this, but I think the article could be improved by a few short code snippets. We have hello world (as we do for many other languages--and we should!), but how about a short snippet illustrating Function overloading or Multiple inheritance (though that may be harder).  This is by no means a GAN comment, but a more general peer review comment.
 * The article includes as section hatnotes See also, Main and details. Mixing and matching these templates is perfectly acceptable but they appear to have been chosen somewhat haphazardly.
 * Reference formatting is not uniform (with some links including only an access date). This is not a GAN requirement but trust me, fixing it sooner rather than later is helpful for FAC!

Content

 * The article's largest problems (and they aren't that bad) lie with unreferenced statements or assertions which may be supported in the underlying references but where a reader would have trouble judging.
 * There are a few "citation needed" tags. Those must be fixed.
 * Statements like "This has caused some concern that some C++ programmers are still writing procedural code, but are under the impression that it is object oriented, simply because they are using C++." appear in a few places throughout the article. That particular statement is in a paragraph w/ a citation needed tag at the end but requires specific attention because it is both unreferenced and a bit WP:WEASEL.
 * Connected with the style comment above, many of the language feature sub-sections are unreferenced. They don't look like original research but neither I nor any other reader can tell without some signal from the article.  Not every sentence needs to end w/ a little blue numbers (even though my articles tend to suffer from overcitation) but when a complete statement is started and ended (e.g. "In addition, templates are a compile time mechanism in C++ that is Turing-complete, meaning that any computation expressible by a computer program can be computed, in some form, by a template metaprogram prior to runtime.") between two other uncited paragraphs we start to worry.  Fixing this may be as easy as reorganizing the sections (per the style comments above) and then, once they are in a logical arrangement, looking to see which statements are both factual and important enough to remain.  Cite those statements and prune the rest.
 * "One commonly encountered difference is that C allows implicit conversion from void* to other pointer types, but C++ does not." Do we have a source that this is a commonly encountered error?
 * "When Mascitti was questioned informally in 1992 about the naming, he indicated that it was given in a tongue-in-cheek spirit." source?
 * "It is relatively difficult to write a good C++ parser with classic parsing algorithms such as LALR(1)." Why is Andrew Birkett a reliable source on the subject? Why are we citing his difficulty w/ creating a parser as a stand in for general difficulty?
 * "One particular point of contention is the export keyword, intended to allow template definitions to be separated from their declarations." bone of contention with whom?
 * The story about the fake Stroustrup interview is great. Do we have a better set of sources for it than an "unverified" (the text from the references section) posting on harmful.cat-v.org and Stroustrup's website?
 * Remember to check your self-published sources to ensure they will meet our reliable sources guidelines. Many of them (as they are sourced to the creator of the language) will pass easily but it is important to check.
 * Just being picky now, why are we quoting Linus on Git and not the linux kernel? :)
 * Again, being picky, but why does the article include that quote from rms? I know he is incredibly important in the C/GNU world but I also know that he has an opinion on basically everything.
 * I don't have a copy of The design and evolution of C++. Are you sure that Stroustrup's research at ATT was on distributed computing as it says in the history section?

Application section

 * This may be too much to ask, but I think this article could be made much more comprehensive than it is now with the addition of a small (1-3 paragraph) section on applications, possibly in the history section. What was C++ used for predominantly in the 80s?  The 90s?  Now?  Where is C++ relatively dominant?  Where is it nearly unheard of?  What are the major worked examples in big reference works?  Etc.

All in all this is close to GA status. With some work reorganizing the content and updating references it should pass. Thanks for the opportunity to read it! Protonk (talk) 10:03, 20 August 2011 (UTC)

Without any substantive comment in 9 days I'm afraid I cannot pass the article. Obviously the above comments are still available as general peer review and I would be happy to review a second nomination should I get some assurances that editors would be available to act on the review suggestions. I'm sorry and better luck next time. Protonk (talk) 20:56, 27 August 2011 (UTC)