C++的标准化速度
看着C++09那些诱人的提案,着实让人垂涎。同时,也着实让人着急。不免在想,“标准委员会也太慢了”。
不过,想归想,平心而论,这样的标准化速度实属正常。
比较而言,C++09的标准化时间还算合理。Pascal83年第一个标准,90年推出扩展标准,用了7年;Ada83到Ada95用了12年,再到Ada2005用了10年;C89/90到C99也是10年。如果C++新标准能在09通过,那么也就是11年的时间。
一般情况下,象Pascal、Ada、C、C++这样的不受厂商控制的通用语言,通常的标准更新时间都在10年上下。
一个标准推出,业界需要时间消化,特别是编译器厂商。这个过程短则2、3年,长则5、6年。在此过程中,根据技术的发展,应用上的问题,标准的缺陷等等,都需要一些时间发现和研究。将这些问题和扩展变成提案,至少也要2、3年的时间。细化、讨论、整合这些提案又需要至少3、4年的时间。这样,基本上10年也就过去了。
这些语言通常也不会频繁地更新标准。一般也是将提案积累到一定程度,然后一同加入新标准。这样有几个好处。首先,资源优化,频繁地更新标准,需要不断地耗费资源,用于和技术无关的行政性事务。其次,只有有了充足的时间,一些相关的技术才会相继浮现和成熟,只有把它们放在一起,才能协调之间的矛盾。最后,很多新特性都带有一定的探索性,需要时间来进行先期试验,以确保标准的可靠。
另一个主要问题,这些通用语言并非属于哪家厂商。于是,协调这些刺儿头,也大幅增加了时间。
对于Java、C#之类的厂商控制的语言,他们没有其他厂商的牵制,而且资源充足,也不愿在过新的技术上做什么尝试,每次更新也不会补充太多的特性。而且,厂商也不怎么操心兼容的问题,即使前一个标准搞砸了,后一个补回来也行。(他们有足够的力量强制推行新标准,他们就是标准)。最重要的,标准,特别是ISO标准对于这些厂商,无非是装点门面而已,事实上的标准才是他们关心的。
所以,我们不能指望C++象Java、C#那样快速地更新标准。但在目前快速发展的编程领域,这种“缓慢”的速度是否能够跟上潮流,而不被淘汰呢?我觉得不会。毕竟想要淘汰C++,就必须有语言来替代它,否则C++已有的那些应用领域将没有语言可用。(我们自然不会再退回去用更老的语言,不是吗?不然干嘛不继续用C++呢?)但到目前为止,仅从技术上而言,能够替代C++的语言尚未出现。除非一个语言拥有C++的能力,并且大幅超越C++,以及C++09。在近阶段似乎看不到这种迹象。
另一种情况就是应用分化,各种不同的领域产生符合各自要求的语言,不再使用Pascal、Ada、C、C++这类“全能型”的语言。这种情况在技术上还存在问题,这样实际上是把不同语言间的交互问题变成了核心问题,解决这个问题的技术难度远远比改进语言来的大。(.net这个半生不熟的方案,实际上可以看作是一个失败的尝试)。所以,C++迈着四平八稳的“方步”,依然能够独步于编程语言之巅。
分享到:
相关推荐
C++20是C++编程语言的一个重大更新,它引入了一系列新特性,旨在提升效率、可读性以及并发处理能力。...对于深入学习,可以参考《C++20完全指南》等专业书籍,或者查阅C++标准文档以获取官方详细信息。
总的来说,这个C++标准参考手册涵盖了C++语言从早期到最新版本的所有重要变化和发展,是开发者学习和理解C++特性的宝贵资源。通过深入研究,开发者可以更好地利用C++的强大功能,提高代码质量,同时跟上语言的最新...
4. **初始化列表推导(Init-List Deduction)**:在C++ 17中,构造函数可以使用初始化列表进行类型推断,这使得代码更简洁,如`MyClass obj{1, 2, 3};`。 5. **类内成员初始值(In-Class Member Initializers)**:...
4. **二进制序列化**: 相比于文本格式,二进制序列化通常能提供更小的存储空间和更快的序列化速度,但可能不那么直观和跨平台兼容。 5. **Boost.Serialization库**: Boost是C++的一个知名库集合,其中的...
以上只是C++标准程序库的冰山一角,实际上,这个库还包含了更多高级特性,如文件系统接口、随机数生成、本地化、内存管理等。学习并熟练掌握C++标准程序库,将极大地提升C++程序员的效率和代码质量。《C++标准程序库...
1. **模块化(Modules)**:模块化是C++20引入的一个重大改变,旨在提高编译速度和代码隔离,减少命名冲突。通过定义和导入模块,开发者可以更有效地组织和管理代码。 2. **Coroutines**:C++20支持协程,这是一种...
9. **数学函数库增强**:C++20引入了更多C++标准库中的数学函数,如`std::hypot`,提供了安全且高效的标准实现。 10. **模板参数推导(Template parameter deduction guides)**:允许编译器自动推断构造函数模板...
《C++标准库第二版及源码》是一个深入学习C++编程的重要参考资料,它涵盖了C++标准库的全面内容,并提供了源码供读者研究和学习。C++标准库是C++编程语言不可或缺的一部分,它提供了丰富的类和函数,极大地提高了...
C++标准库是C++编程语言的核心组成部分,它提供了一系列预先定义的类和函数,方便开发者进行各种操作,包括输入/输出、字符串处理、容器管理、算法实现等。"c++标准库参考"是一个重要的资源,它详细阐述了C++标准库...
C++标准模板库(STL)是C++编程语言中不可或缺的一部分,它为开发者提供了大量高效、可重用的容器、算法和迭代器。STL的主要目标是提高代码的效率和可读性,通过使用泛型编程(也称为模板编程)来实现。以下是关于...
C++98引入了命名空间,以减少全局命名冲突,并标准化了异常处理机制,使得错误处理更加规范。 C++03是对C++98的微小修订,主要修正了一些已知的问题和不一致之处,但整体上保持了与C++98的高度兼容性。 C++11是C++...
C++的标准库并不包含内置的JSON支持,因此通常需要使用第三方库来实现JSON操作。有一些知名的开源库,如nlohmann/json、 RapidJSON 和 PicoJSON,这些库在C++社区中广泛使用并被高度评价。 nlohmann/json是一个非常...
C++标准模板库(Standard Template Library,简称STL)是C++编程语言中不可或缺的一部分,它提供了一系列高效且可重用的数据结构和算法。STL的主要目标是提高代码的效率和可读性,通过泛型编程(Generic Programming...
4. **支持STL容器**:STL(Standard Template Library,标准模板库)包括vector、list、set、map等容器,库能够处理这些容器内的元素,实现整个容器的序列化,这对于处理复杂的数据结构非常有用。 5. **二进制存储*...
标题中的“ISO C/C++国际标准”指的是由国际标准化组织(ISO)制定的C和C++编程语言的官方规范。这两个标准是编程语言发展的重要里程碑,确保了代码的跨平台兼容性和一致性。 C99是C语言的一个版本,它在1999年被...
由于C++标准库本身并不提供直接获取网络状态的函数,我们通常需要借助于平台相关的API,如Windows的Winsock或Linux的socket编程接口。 在Windows环境下,我们可以利用Winsock库中的套接字(socket)函数来捕获网络...
在C++Builder6开发环境中,编译速度是一个关键因素,特别是在处理大型项目或者频繁调试时。为了提升C++Builder6的编译效率,有几种策略和技巧可以采用: 1. **预编译头文件(Precompiled Header, PCH)**: 文件`...
在本文中,我们将深入探讨如何使用C++和QT库来可视化地实现一个文件系统,重点关注其在Linux环境下的实现。这个项目旨在模拟真实的操作系统文件系统,包括磁盘管理和内存分配等核心功能,采用文本形式进行仿真。 ...