CPP已老?HerbSutter开发CPP2,努力证明CPP的强大

不爱学习 2024-04-03 13:12:54

有人觉得CPP已老,但坚强的CPP战神,不会轻易屈服。在github看到一个关于cpp下一代,或者增强版的项目。

Cpp2,即“C++语法2”,是我(Herb Sutter)的个人项目,旨在使编写普通的C++类型/函数/对象变得更加简单和安全,而不会破坏向后兼容性。

不是什么:

Cpp2不是一个拥有自己独立或不兼容生态系统的继任者或替代语言。例如,它没有自己的非标准不兼容模块/概念等,与标准C++功能竞争;它不会取代您的标准C++编译器或其他工具;它不需要对您的标准C++编译器、标准库或其他库或工具进行任何更改,即可无缝直接使用所有这些工具,零开销。

是什么:

Cpp2旨在成为C++本身的另一种“皮肤”,只是一种更简单、更安全的编写普通C++类型/函数/对象的方式,以及在更简单的编译器和语法风格中尝试未来新标准C++功能的更快方法。它无缝使用标准C++模块和概念要求以及其他功能,并且可以与所有现有的C++20或更高版本编译器和库和工具直接配合使用,无需进行任何更改。

Bjarne Stroustrup曾言:“在C++内部,有一种更小、更干净的语言正在努力脱颖而出。” —— Bjarne Stroustrup,《C++的设计与演化》(D&E),1994年

我的目标是尝试证明Stroustrup是对的:真正的C++具有其所有的表达能力和控制能力,并且具有完全向后兼容性,但在一种10倍简单、更少怪癖和特例的风格中。我们不能通过逐步演进到今天的语法来对C++进行如此大的改进,因为某些重要的更改需要改变以今天的语法编写的代码的含义。例如,我们永远不能更改今天的语法中的语言特性默认值,即使默认值会导致安全漏洞陷阱,因为更改默认值会破坏大量现有代码。拥有一个不同的替代语法为我们提供了一个“新代码泡沫”,这在今天并不存在,我们可以:

Cppfront是一个将Cpp2语法编译为今天的Cpp1语法的编译器。这使您可以在任何现有的C++项目和构建系统中开始尝试Cpp2语法,只需将源文件从.cpp重命名为.cpp2并添加一个构建步骤,结果可以在每个C++20或更高版本的编译器和所有现有的C++工具(调试器、构建系统、sanitizer等)中直接使用,而无需进行任何更改。

这是Bjarne Stroustrup的明智之举:在20世纪80年代和90年代,Stroustrup创建了cfront,将C++翻译为纯C,并确保C++可以与C交错在同一源文件中,并且C++始终可以调用任何C代码,无需包装/封送/转发。通过提供一个发出纯C的C++编译器,Stroustrup确保了与已经存在的C生态系统的完全兼容性,并使人们可以通过添加另一个构建步骤将C++代码首先翻译为C,然后结果可以在现有的C工具中正常工作。

Cppfront可以使用任何最近的C++编译器进行构建。

0 阅读:3

不爱学习

简介:感谢大家的关注