其实现在我们就已经在学习计算机的路上了,只不过我们需要首先普及一些更为通用的知识。
前面我们学习了计算机当中最基础的几个内容:进制、编码、数据类型和地址。接下来,我们即将迈过新的门槛,进入编程语言的世界。
什么是程序?
程序,从数学上说,是一系列特定操作/变换的有序序列,用来解决特定的问题。一般来说,程序需要包含这样一些结构:输入,对输入的处理序列,输出。
计算机程序和数学程序类似,是一系列定义在计算机上的操作/变换的有序序列。典型的计算机程序通常可以解决一个或一类问题,不过现代计算机程序通常具备解决多种问题的能力。计算机程序的结构与数学意义上的程序类似,都包括三个部分:输入(参数),对输入的处理序列,输出(返回值/输出信息)。
计算机程序的操作最终由机器码/汇编语言实现,而在面向开发人员的层面,计算机程序通常提供这么几类操作:赋值、计算、判定、设计/裁剪自定义的数据类型、设计/使用子程序(通常以函数定义-实现/调用的方式提供)。而在计算机程序操作序列当中,通常包括三种基本结构:个人认为三种基本结构起源于纸带编程,不太理解的话可以用纸带或者磁带来理解。
顺序结构:从开头执行到结尾。一般只有一个流动方向,可以出现子程序调用。我们可以简单地理解为一盘从头按顺序放到尾的磁带。
分支结构:执行期间存在分叉/跳转。一般会存在多个流动方向,可以出现子程序调用。我们可以简单地理解为一盘需要倒带或者播放到一半时更换磁带芯的磁带。
循环结构:执行期间存在首尾衔接的区段。可以存在一个或多个流动方向,可以出现子程序调用。我们可以简单地理解为一盘首尾相连的磁带。
实际执行过程中,一个程序通常会混合使用三种基本结构,比如循环结构和分支结构互相嵌入等;同样,我们需要注意的一点是:程序的结构不考虑函数/子程序调用,一般我们会将子程序调用看作一步操作。
什么是编程语言?
编程语言是一套规则,这套规则当中包含了如下定义:
内置数据类型与自定义数据类型的方法
内置:编程语言预先提供,可以直接使用的数据类型。通常是一些相对简单的类型,比如整型、浮点、字符/字符串、指针(存放地址的类型)、数组等。
变量的操作
变量:用来承载、标记数据的名称。一般情况下,变量等同于变量所对应的数据,自身同时包含类型、地址两个信息。变量的可变性受到语言背景、变量附加标记的限制,比如动态类型当中允许变量的类型和值都发生变化,而在函数式编程语言当中变量的类型和值都不可变。
变量的操作:一般包括赋值、修改/更新、变量的遮盖(通常指后定义/层次更深的变量覆盖了先定义/层次更浅的变量)
基本的程序操作(分支、循环、设计/使用子程序等)
分支语法和循环语法
基本的错误处理、输入输出功能
编程语言的分类方式有很多,最常见的有如下几种分类:
按照类型限制来分:强类型(强制检查类型)/弱类型(只在运行期间分析类型问题)语言;动态类型(程序运行时类型可变)/静态类型(程序运行时类型不可变)语言
按照执行方式来分:编译型(执行前一次性将源代码转换成可执行的程序)/解释型(执行前不做预先转化,运行时逐行读取、逐行执行)
按照编程范式来分:声明式编程(只描述做什么而不描述怎么做)/命令式编程(描述怎么做而不是做什么);面向过程(把程序看作一系列过程,比较类似于做菜)/面向对象(把程序看作一系列数据对象之间的交互,比较类似于社交或者多人协作任务)。
到这里,我们需要准备的前置知识已经全部结束了。
从下一章开始,我们将正式开始计算机编程语言的学习。在讲解过程中,我们仍遵循类似的结构:
数据类型
变量的定义和操作
程序基本操作、分支和循环语法
输入与输出
程序外操作(比如宏定义、注释、编译器选项等)
祝大家学习顺利!