-
Notifications
You must be signed in to change notification settings - Fork 255
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 languages that use them (e.g., C++, C#). 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 ".NET Foundation" instead of "C# Foundation"). 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 a programming language name.
So I felt a desire to address it too. And there seemed to be an elegant and obvious way, 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.