C++学习——编程语言简介

0.2 - 编程语言简介

现代计算机速度极快,而且速度越来越快。然而,这种速度带来了一些重要的限制:计算机本身只能理解一组非常有限的命令,并且必须准确地告诉他们要做什么。

计算机程序(通常也被称为应用程序)是一组计算机可以以执行一些任务执行的指令。创建程序的过程称为编程。程序员通常通过生成源代码(通常缩写为代码)来创建程序,源代码是键入一个或多个文本文件的命令列表。

组成计算机和执行程序的物理计算机部件的集合称为硬件。当计算机程序被加载到存储器中并且硬件顺序执行每个指令时,这被称为运行执行程序。

机器语言

计算机的CPU无法说C ++。CPU可以直接理解的有限指令集称为机器代码(或机器语言指令集)。

这是一个示例机器语言指令: 10110000 01100001

当计算机最初发明时,程序员必须直接用机器语言编写程序,这是一件非常困难和耗时的事情。

这些说明的组织方式超出了本介绍的范围,但有两点需要注意。首先,每条指令由1和0的序列组成。每个0或1被称为二进制数字,或简称为。组成单个命令的位数会有所不同 - 例如,某些CPU处理总是32位长的指令,而某些其他CPU(例如x86系列,您可能使用的)具有可以是可变长度。

其次,每组二进制数字由CPU解释为执行非常特定工作的命令,例如比较这两个数字,或将此数字放在该存储器位置。但是,由于不同的CPU具有不同的指令集,因此不能在不共享相同指令集的CPU上使用为一种CPU类型编写的指令。这意味着程序通常不可移植(可以在没有重大返工的情况下)用于不同类型的系统,并且必须重新编写。

汇编语言

因为机器语言对人类来说很难阅读和理解,所以发明了汇编语言。在汇编语言中,每个指令由短缩写(而不是一组位)标识,并且可以使用名称和其他数字。

以下是汇编语言中与上述相同的指令: mov al, 061h

这使得汇编比机器语言更容易读取和写入。但是,CPU无法直接理解汇编语言。相反,必须先将汇编程序翻译成机器语言,然后才能由计算机执行。这是通过使用称为汇编程序的程序完成的。用汇编语言编写的程序往往非常快,而且当速度至关重要时,今天仍然使用汇编。

但是,装配仍有一些缺点。首先,汇编语言仍然需要大量指令来完成简单的任务。虽然单个指令本身在某种程度上是人类可读的,但了解整个程序正在做什么可能具有挑战性(这有点像试图通过单独查看每个字母来理解句子)。其次,汇编语言仍然不是非常便携 - 用一个CPU组装的程序可能无法在使用不同指令集的硬件上运行,并且必须重写或进行大量修改。

高级语言

为了解决可读性和可移植性问题,开发了新的编程语言,如C,C ++,Pascal(以及后来的Java,Javascript和Perl等语言)。这些语言被称为高级语言,因为它们旨在允许程序员编写程序而不必担心程序将运行在何种类型的计算机上。

这是与C / C ++中相同的指令: a = 97;

与汇编程序非常相似,用高级语言编写的程序必须翻译成计算机可以运行的格式。这有两种主要方式:编译和解释。

编译器是一个程序,读取源代码,并且产生然后可以运行一个独立的可执行程序。将代码转换为可执行文件后,您无需编译器即可运行该程序。最初,编译器是原始的,并且生成缓慢,未经优化的代码。然而,多年来,编译器已经非常擅长生成快速,优化的代码,并且在某些情况下可以比人类在汇编语言方面做得更好!

以下是编译过程的简化表示:

编译示例

由于C ++程序通常是编译的,因此我们将在稍后详细介绍编译器。

一个解释器是直接执行在源代码中的指令,而不需要他们首先被编译成可执行的程序。解释器往往比编译器更灵活,但在运行程序时效率较低,因为每次运行程序时都需要完成解释过程。这意味着每次运行程序时都需要解释器。

 

以下是解释过程的简化表示:

解释的例子

可选阅读

 

可以在此处找到编译器与解释器的优点的良好比较

大多数语言都可以编译或解释,但是,传统上编译的语言如C,C ++和Pascal,而像Perl和Javascript这样的“脚本”语言往往会被解释。有些语言,比如Java,使用两种语言的混合。

高级语言具有许多理想的属性。

首先,高级语言更容易阅读和编写,因为命令更接近我们每天使用的自然语言。其次,高级语言需要较少的指令来执行与低级语言相同的任务,使程序更简洁,更容易理解。在C ++中,您可以a = b * 2 + 5;在一行中执行某些操作。在汇编语言中,这将需要5或6个不同的指令。

第三,可以为许多不同的系统编译(或解释)程序,并且您不必将程序更改为在不同的CPU上运行(您只需为该CPU重新编译)。举个例子:

可移植性示例

可移植性有两个常见的例外。首先,许多操作系统(如Microsoft Windows)包含可在代码中使用的特定于平台的功能。这些可以使编写特定操作系统的程序变得更加容易,但代价是可移植性。在这些教程中,我们将避免使用任何特定于平台的代码。

某些编译器还支持特定于编译器的扩展 - 如果您使用这些扩展,您的程序将无法由其他不支持相同扩展的编译器编译而无需修改。一旦安装了编译器,我们稍后会详细讨论这些内容。

规则,最佳实践和警告

在我们继续学习这些教程时,我们将突出以下三个类别中的许多重点:

规则

 

规则是您必须按照语言要求执行的说明。不遵守规则通常会导致您的计划无法运作。

最佳实践

 

最佳实践是您应该做的事情,因为这种做事方式通常被认为是标准或强烈推荐。也就是说,要么每个人都这样做(如果你不这样做,你会做一些人们没想到的事情),或者它优于其他选择。

警告

 

警告是你不应该做的事情,因为它们通常会导致意想不到的结果。

转载自:https://www.learncpp.com/cpp-tutorial/introduction-to-programming-languages/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值