你知道吗?
某些营销号喜欢拿 C++23 的 std::print
说什么“划时代的版本”,还有一些人在各种特性下面评论“这不是 Py 的语法吗”,迷枵要在此反驳:
一、 print
函数不是最重要的内容
format
和 print
完全是库级别的实现,没动语言底层特性。fmt
库已经实现很多年了,并不是什么高级的内容。
C++20 和 23 最重要特性的是 协程、概念与约束、暂时没用的模块,其次才是 范围与视图、日历库、同步原语和格式化等工具库。(此外还有一些暂时没大用的新底层特性,如成员函数支持 self
作为首参数。)
二、语法和 Py 不一样、其他类似的功能也不是抄的 Py
print
并不是所谓的 f-string
,C++ 仅标准库根本无法实现 "x: {x}"
这种将变量名写在字符串内部还能正常格式化的语法。编译后局部变量名已经消除,意味着需要在编译期将字符串内的 {x}
抽离,将语句替换为 "x: " + format(x)
,C++ 的模板和宏都做不到此要求。
但是 Py、JS 、Rust、 C# 等语言支持此语法,C# 是编译器实现,Rust 的过程宏能修改抽象语法树,Py 和 JS 可以解释执行,它们和 C++ 的实现根本不同。
而且此语法的最先提出者是 C# 而不是 Python (C# 早了好几年),别只会 Py 就哪都是 Py 的语法。