四叔的c++入门课(1)什么是编程

导言
在众多编程入门的教材中,开篇往往直接给出HELLO WORLD的程序,以作为一个引入,这可能是因为世界上第一本c语言的使用说明中使用hello world作为引例。但这篇教程会先介绍什么是编程,再引入代码。首先这篇教程是典型的剪切怪教程。
计算机底层能干什么
如果你来听了我之前恰烂钱时开的公开课,就会知道什么是图灵连加器,也会知道底层其实只能计算加法,但通过连加、编码等操作实现了加减乘除。再算上赋值等基础操作,就是底层能干的事情。所以其实计算机底层能做的事情非常少,但把这些非常少的事情组合起来,就能干很多事儿了,这就是编程。接下来我引入一段百度百科的文字,以介绍机器语言,汇编语言和高级语言的区别。我们要学习的c++语言属于高级语言。

编程语言
自从1946年世界上第一台电子计算机问世,人类和机器的交流方式和语言就成为了软件工程师和计算机从业者的主要研究方向,更有效更简便的编程语言成为了软件工程师的新宠儿,伴随着计算机的飞速发展,计算机的硬件升级速度也越来越快,对编程语言的要求也日益严格。在过去的几十年,编程语言有了长足的发展,至今已经有四代语言问世。大量的编程语言为了满足不同领域的编程要求和软件功能,经历 了被修改,被取代,被发展等过程,最终发展成了现在编程语言的多样化。尽管人们多次试图寻找一个能够适应所有编程环境的通用语言,但 是却没有一次成功。程序设计语言正在与现代科技日益飞跃,人类的智慧在日益彰显。
机器语言
计算机的硬件作为一种电路元件,它的输出和输入只能是有电或者没电,也就是所说的高电平和低电平,所以计算机传递的数据是由“0” 和“1”组成的二进制数,所以说二进制的语言是计算机语言的本质。计算机发明之初,人们为了去控制计算机完成自己的任务或者项目,只能去编写“0”、“ 1”这样的二进制数字串去控制电脑,其实就是控制计算机硬件的高低电平或通路开路,这种语言就是机器语言。直观上看,机器语言十分晦涩难懂,其中的含义往往要通过查表或者手册才能理解, 使用的时候非常痛苦,尤其当你需要修改已经完成的程序时,这种看起来无序的机器语言会让你无从下手,也很难找到程序的错误。而且,不同计算机的运行环境不同,指令方式操作方式也不尽相同,所以当你在这种机器语言就有了特定性,只能在特定的计算机上执行,而一旦换了机器就需要重新编程,这极大的降低了程序的使用和推广效率。但由于机器语言具有特定性,完美适配特定型号的计算机,故而运行效率远远高过其他语言。机器语言,也就是第一代编程语言。
汇编语言
不难看出机器语言作为一种编程语言, 灵活性较差可阅读性也很差,为了减轻机器语言带给软件工程师的不适应,人们对机器语言进行了升级和改进:用一些容易理解和记忆的字母,单词来代替一个特定的指令。通过这种方法,人们很容易去阅读 已经完成的程序或者理解程序正在执行的功能,对现有程序的bug修复以及运营维护都变得更加简单方便,这种语言就是我们所说的汇编语言, 即第二代计算机语言。
比起机器语言,汇编语言具有更高的机器相关性,更加便于记忆和书写,但又同时保留了机器语言高速度和高效率的特点。汇编语言仍是面向机器的语言,很难从其代码上理解程序设计意图,设计出来的程序不易被移植,故不像其他大多数的高级计算机语言一样被广泛应用。所以在高级语言高度发展的今天,它通常被用在底层,通常是程序优化或硬件操作的场合。
高级语言
在编程语言经历了机器语言,汇编语言等更新之后,人们发现了限制程序推广的关键因素——程序的可移植性。需要设计一个能够不依赖于计算机硬件,能够在不同机器上运行的程序。这样可以免去很多编程的重复过程,提高效率,同时这种语言又要接近于数学语言或人的自然语言。在计算机还很稀缺的50年代,诞生了第一个高级编程语言。当时计算机的造价不菲,但是每天的计算量又有限,如何有效的利用计算机有限的计算能力成为了当时人们面对的问题。同时,因为资源的稀缺, 计算机的运行效率也成为了那个年代工程师追寻的目标。为了更高效的使用计算机,人们设计出了高级编程语言,来满足人们对于高效简的编程语言的追求。

解释性语言和编译性语言
以下内容摘自https://www.cnblogs.com/Renyi-Fan/p/8649391.html

计算机不能直接理解高级语言,只能直接理解机器语言,所以必须要把高级语言翻译成机器语言,计算机才能执行高级语言编写的程序。
翻译的方式有两种,一个是编译,一个是解释。两种方式只是翻译的时间不同。
解释性语言的定义:
解释性语言的程序不需要编译,在运行程序的时候才翻译,每个语句都是执行的时候才翻译。这样解释性语言每执行一次就需要逐行翻译一次,效率比较低。
现代解释性语言通常把源程序编译成中间代码,然后用解释器把中间代码一条条翻译成目标机器代码,一条条执行。
编译性语言的定义:
编译性语言写的程序在被执行之前,需要一个专门的编译过程,把程序编译成为机器语言的文件,比如exe文件,以后要运行的话就不用重新翻译了,直接使用编译的结果就行了(exe文件),因为翻译只做了一次,运行时不需要翻译,所以编译型语言的程序执行效率高。

我们学习的c和c++语言都是高级语言,编译性语言。因为其接近底层,所以大学的编程课通常使用c语言。c语言常用于软件底层开发、游戏开发、硬件开发。

我们用c++语言写好一个程序之后,它只是一个文本文件,拓展名cpp或者c,我们需要使用一个编译器来把它编译成能直接运行的exe文件(可执行性文件,本质是汇编指令),也就是说我们写代码需要一个好用的文本编辑器,一个编译器,以及一些帮助调试的工具,把这些全部配置起来,就是开发环境。但配置这个环境的过程复杂,而且使用起来也不方便,所以就有了集成开发环境(IDE)。常用的IDE有很多,我们竞赛生常用DEVCPP,这是一个轻量但非常差的IDE,它的安装方法参考https://jingyan.baidu.com/article/dca1fa6f6a2d5af1a4405229.html
再介绍一个我本人在用的IDE,也是宇宙第一IDE,Visual Studio。它的社区版是免费的。安装这个IDE需要强劲的电脑。
大家安装好IDE之后就可以开始快乐的写代码了!
下期预告
四叔的c++入门课(2)Hello World

原文地址:https://www.cnblogs.com/sherrlock/p/13533768.html