C++ 编程:编程语言比较
没有完美的语言。这一切都取决于资源(工具、人员,甚至可用时间)和目标。关于其他语言及其演变的更广泛的看法,本主题超出了本书的范围,还有许多其他作品可供参考,包括计算机编程维基教科书。
本节是为那些已经有一些经验的人提供一个快速入门,以便他们了解 C++ 语言的特殊特性,以及演示其与众不同之处。
理想语言取决于具体问题。所有编程语言都旨在成为表达解决问题算法的通用机制。换句话说,它是一种语言——而不是仅仅一个表达式——因为它能够表达对不止一个特定问题的解决方案。
编程语言中的通用性级别各不相同。有领域特定语言 (DSL),例如正则表达式语法,专门为模式匹配和字符串操作问题而设计。还有通用编程语言,如 C++。
最终,没有完美的语言。有一些语言比其他语言更适合特定类的问题。每种语言都权衡取舍,在一个领域偏重效率,而在其他领域则效率低下。此外,效率可能不仅意味着运行时性能,还包括开发时间、代码可维护性以及影响软件开发的其他因素。最佳语言取决于程序员的具体目标。
此外,在选择语言时,另一个非常实际的考虑因素是该语言为程序员提供的工具的数量和质量。无论语言在理论上有多好,如果在所需的平台上没有一组可靠的工具,那么该语言就不是最佳选择。
最佳语言(就运行时性能而言)是机器代码,但机器代码(二进制)是就编码时间而言效率最低的编程语言。使用高级语言编写大型系统的复杂性非常大,并且超出了人类使用机器代码的能力。在接下来的部分中,将比较 C++ 与其他密切相关的语言,如C、Java、C#、C++/CLI 和D。
上面的引语表明,目前还没有哪种编程语言可以直接将概念或想法转换为有用的代码,但有一些解决方案可以提供帮助。我们将介绍计算机辅助软件工程 (CASE)工具的使用,这些工具将解决此问题的一部分,但其使用确实需要计划和一定程度的复杂性。
这些部分的目的不是为了宣传一种语言优于另一种语言;每种语言都有其适用性。有些在特定任务中更好,有些更易于学习,另一些只为程序员提供更好的控制级别。这一切可能也取决于程序员对特定语言的控制级别。
在 C++ 中,垃圾回收是可选的,而不是必需的。在本节中,我们将在本书的垃圾回收部分中深入探讨这个问题。
正如我们将在本书的资源获取即初始化 (RAII) 部分中看到的那样,RAII 可用于为大多数问题提供更好的解决方案。当使用 finally
来清理时,必须在每次使用类时由类的客户端编写它(例如,fileClass 类的客户端必须在 try
/catch
/finally
块中执行 I/O,以便他们可以保证fileClass 已关闭)。使用 RAII,fileClass 的析构函数可以保证这一点。现在,清理代码只需编码一次——在fileClass 的析构函数中;类的用户无需执行任何操作。
默认情况下,C++ 编译器通常会“修饰”函数的名称,以方便函数重载和泛型函数。在某些情况下,您需要访问在 C++ 编译器中未创建的函数。要实现这一点,您需要使用extern
关键字声明该函数为外部函数
extern "C" void LibraryFunction();