-
Notifications
You must be signed in to change notification settings - Fork 260
Design note: Cpp2 name
A: For the same reason as all choices in Cpp2: The goal is to address existing problems in C++ by embracing the solutions and guidance we've already de facto adopted, and to have to explain less rather than more.
"Cpp2" is the best I've found to achieve those goals, for three main reasons...
To have to explain less rather than more, I was to do my best to avoid a "cute fun" name whose meaning is not self-documenting.
I've received many suggestions; thank you for all the ideas! Roman numeral suggestions seem to be popular: In just the past week (as of this writing):
- One person suggested "CPPii"... rationale: spell "2" in Roman numerals.
- A different person independently suggested "Cxxi"... rationale: C++ source file extensions sometimes use "cxx" already (historical note: because the "xx" look like "++" that fell over; really! I didn't know that for many years, it's "that obvious"), and using the Roman numeral "xxi" == 21 would connote a 21st-century design.
I agree those suggestions are cute, and my reply was: "The Romans would get it! :)" Most C++ programmers today are non-Romans, though, and as much as possible I want to reduce the number of things to explain, and avoid creating new ones.
(B) Avoid the pitfall of using non-alphanumeric characters in a language name. (Bonus: (c) below inherently accomplishes (b)...)
Many people have suggested "C++2," but a major reason I chose “Cpp2” instead was specifically to address those "+" characters.
To this day, non-alphanumeric names cause ongoing problems for all programming languages and systems that use them (e.g., C++, C#, .NET). The result is that for web searches, domain names, and many other uses those languages have to use workarounds anyway (e.g., "CSharp" as in https://learn.microsoft.com/en-us/dotnet/csharp/tour-of-csharp/
, and "dotnet" as in https://dotnetfoundation.org/
).
It's time we learned from this hard-won experience: In the 21st century, I really don’t know why anyone would put a non-alphanumeric symbol in the name of a programming language. (Really, it seems to me this applies to any product: Even a TV ad for a consumer product that has a non-alphanum character in its name would be creating needless work for themselves, and reduce advertising effectiveness, because of having to teach people a suitable social media hashtag that's different from the actual product name, if the special characters aren't allowed in hashtag names on all the social media they want to use.)
And, as always in this project, I don't want to invent a new solution... I think that the most elegant and obvious way to accomplish (b) is to embrace the de facto solution to that very problem we already have and use everywhere, namely (c)...
This also accomplishes (b), because (b) is pretty much the reason we use "Cpp" everywhere!
For C++ itself, we've already had to resort to “Cpp” widely in conference/organization names, especially in contexts that just don’t allow “+” characters.
- Consider our conferences' domain names: "cppcon.org," "cpponsea.uk," "cppnow.org," "cppnorth.ca," "corecpp.org" -- and several of these conferences have gone all the way and embraced "Cpp" in the conference's official name itself.
- Consider government databases: The Standard C++ Foundation has to be registered as "Standard Cpp Foundation" in some government databases (but not others) because those databases don't allow "+" symbols.
So I decided to embrace that existing "Cpp"-ness, which also helps make it clearer that "Cpp2" belongs at "Cpp" conferences... it really is about cooperatively improving "Cpp"'s own evolution, not creating a competing language.