C++ Information: Description of the C++ language

发布于:2023-01-09 ⋅ 阅读:(248) ⋅ 点赞:(0)

C++官网参考链接A Brief Description - C++ Information (cplusplus.com)

关于C++语言的信息
这些文章简要地描述了这种编程语言的特性:

简要描述:
该语言的一些一般方面。

C++的历史:
这门语言发展的简史。

常见问题:
以下是程序员新手常问的一些问题。

简要描述
前言

计算机是我们现有的最通用的工具之一。它们能够完成惊人的计算壮举,它们允许信息轻松地交换,而不管它们的物理位置,它们简化了许多日常任务,它们允许我们自动化许多处理过程,否则将是乏味或无聊的。然而,计算机不像我们一样“智能”。它们必须被明确地告知它们应该做什么而它们的母语与我们所说的任何语言都大不相同。因此,在希望计算机做某事的人和通常需要使用本机语言(机器代码)指令来做任何事情的计算机之间存在着巨大的语言障碍。到目前为止,计算机还不能自己弄清楚它们应该做什么,因此它们依赖于我们创造的程序,这些程序是计算机能够理解和遵循的指令集。 

程序和编程语言概览

为了更好地与我们的计算机交流我们到底想让它们做什么,我们开发了各种各样的编程语言,使交流过程更容易。
根据项目的类型,在选择语言时需要考虑很多因素。以下是一些比较值得注意的例子: 
*编译、解释或即时编译
编译型语言通过一个叫做编译器的程序被翻译成目标机器的本机语言。这可能会产生非常的代码,尤其是在编译器能够有效优化的情况下,但是产生的代码可能不能很好地跨操作系统移植,编译过程可能需要一段时间。
解释型语言由一个称为解释器的程序读取,并由该程序执行。虽然它们和解释器一样可移植,并且没有很长的编译时间,但解释性语言通常比同等的编译程序要得多。
最后,即时编译型(或JIT编译)语言是当用它们编写的程序需要运行时可以快速编译的语言(通常很少进行优化),在性能可移植性之间提供了平衡。
*在这种情况下,级别指的是语言的本质在多大程度上反映了底层系统。换句话说,编程语言的级别是指该语言与计算机本地语言的相似程度。级别越高,相似度越低。
低级语言通常与机器代码非常相似,因此更适合像设备驱动程序或真正需要访问硬件的高性能程序。通常,这个术语是为机器代码本身和汇编语言保留的,尽管许多语言提供低级元素。然而,由于低级语言受制于它所访问的硬件的所有细微差别,用低级语言编写的程序通常很难移植到其他平台。低级语言实际上从不被解释,因为这通常会违背其目的。
高级语言更多地关注那些容易被人类大脑理解的概念,比如对象或数学函数。高级语言通常比低级语言更容易理解,用高级语言开发程序通常比用低级语言花费更少的时间。作为交换,通常需要牺牲对结果程序实际操作的某种程度的控制。然而,在一种语言中混合高级和低级功能并不是不可能的。
*类型系统
类型系统指的是一种语言中不同类型的变量必须遵循的规则。有些语言(包括大多数汇编语言)没有类型,因此本节不适用于它们。然而,由于大多数语言(包括C++)都有类型,所以这个信息很重要。
    *类型强度:强或弱
    强类型系统限制了不同类型的变量如何在没有任何转换语句的情况下相互转换。理想的强类型系统应该禁止对没有任何意义的类型进行隐式“强制转换”,例如将整数转换为Fruit对象。一个弱类型系统试图找到一些方法来进行转换
    *类型表达式:显式的或推断的 
    它处理语言的编译器/解释器如何推断变量的类型。许多语言要求显式地定义变量的类型,因此依赖于显式的类型。但是,有些会根据使用变量的上下文来推断变量的类型,因此会使用推断的类型
    *类型检查:静态或动态
    如果一种语言是静态类型的,那么编译器/解释器在程序运行之前进行一次类型检查。如果对语言进行动态类型检查,则在运行时检查类型
    *类型安全:安全或不安全
    它们指的是语言禁止对可能导致未定义行为或错误的类型化变量进行操作的程度。安全的语言将在确保此类操作或转换不发生方面做得更多,而不安全的语言将在这方面给用户更多的责任。
    这些类型特征并不一定是互斥的,有些语言混合了它们。
    *支持范式
    编程范式是一种编程语言支持的编程方法或方法。以下是一些常见范式的总结: 
    *声明式的
    声明式语言将更多地关注于指定语言应该完成什么,而不是通过什么方式来完成它。这样的范式可以用来避免由于必须编写自己的代码而产生的不良副作用。 
    *函数式的
    函数式编程是声明式编程的一个子集,声明式编程试图用数学方程和函数来表达问题。它特意避免了在命令式语言中常见的状态和可变变量的概念。 
    *泛型的
    泛型编程侧重于根据实际使用算法时指定的类型编写骨架算法,从而为希望避免严格的强类型规则的程序员提供了一些宽容。如果实现良好,它可以是一个非常强大的范例。
    *命令式的 
    命令式语言允许程序员向计算机提供有序的指令列表,而不必明确地说明任务。它可以被认为是声明式编程的对立面。
    *结构化的 
    结构化编程语言旨在为语言提供某种值得注意的结构形式,例如对语句执行顺序的直观控制(如果X然后执行Y,否则执行Z,则重复执行X当Y是Z时)。这类语言通常不赞成“跳转”,如C和C++中的goto语句所提供的跳转。
    *过程式的
    虽然过程式编程语言有时被用作命令式编程的同义词,但它也可以指一种命令式结构化编程语言,它支持过程和子例程的概念(在C或C++中也称为函数)。
    *面向对象的
    面向对象编程(有时缩写为OOP)是结构化编程的一个子集,结构化编程用“对象”来表示程序,这意味着对现实世界中的对象建模。这种模式允许以不同寻常的方式重用代码,并且易于理解

*标准化
一种语言是否有正式的标准?这对于确保使用一个编译器/解释器编写的程序能够使用另一个编译器/解释器是非常重要的。有些语言由美国国家标准协会(ANSI)标准化,有些由国际标准化组织(ISO)标准化,还有一些有一个非正式但事实上的标准,不被任何标准组织维护。

C++作为一门语言的特性
既然已经涵盖了所有必要的理论,现在就可以解释C++作为一种编程语言应该提供什么了。C++……
*...是一种开放的ISO标准化语言。
有一段时间,C++没有官方标准,并由一个事实上的标准维护,然而从1998年起,C++被ISO的一个委员会标准化。它们的网页可以在这里(here访问。
*...是一种编译型语言。
C++直接编译成机器的本地代码,如果经过优化,它将成为世界上最快的语言之一。
*...是强类型的不安全语言。 
C++是一种期望程序员知道他或她在做什么的语言,但最终允许不可思议的大量控制。
*...同时支持显式的类型和推断的类型。
在最新的C++标准中,C++同时支持显式的类型和推断的类型,在需要的地方允许灵活性和避免赘述的方法。
*...支持静态和动态类型检查。
C++允许在编译时或运行时检查类型转换,再次提供了另一种程度的灵活性。然而,大多数C++类型检查都是静态的。
*...提供许多范式选择。
C++为过程式、泛型和面向对象的编程范式提供了显著的支持,也可以使用许多其他的范式。
*...是可移植的。
作为世界上使用最频繁的语言之一,作为一种开放语言,C++拥有广泛的编译器(compilers,运行在许多不同支持它的平台上。只使用C++标准库的代码可以在很多平台上运行,几乎不需要修改。
*...向上与C兼容吗
作为一种直接建立在C基础上的语言,C++与几乎所有的C代码兼容。C++可以使用C库,几乎不需要修改库的代码。
*...拥有不可思议的库支持。
在流行的项目管理网站SourceForge上搜索“library”可以得到超过3000个关于C++库的结果。查找结果的链接可以在这里(here找到。


网站公告

今日签到

点亮在社区的每一天
去签到