
上节课,小倪同学与小羽同学的一番对话让老师印象深刻,小倪同学不懂为什么计算机听不懂他的话,反而能看懂指令,他觉得很奇怪。相信有很多小朋友都有这个疑惑,今天小k老师就给小朋友们揭开疑惑。
要揭开小倪同学的疑惑,那我们就要从计算机编程语言的发展史说起。世界上第一个可编程的机器是由一个法国人Joseph Marie Jacquard于1801年发明的雅卡尔织布机(也译作贾卡提花机),使用打孔卡片进行编程,控制织布机织出不同图案的布,雅卡尔织布机长这样。

说到计算机就绕不开图灵。艾伦·麦席森·图灵,英国数学家、逻辑学家,被称为计算机科学之父,人工智能之父。1937年图灵在一篇论文的附录里,描述了一种可以辅助数学研究的机器,后来被人称为“图灵机”,我们现在所熟知的电脑,以及“人工智能”都是基于这个设想。图灵机定义了计算机科学的王国及其边界。所以图灵机的语言,是第一门真正的计算机语言。
第二种语言是机器语言。机器语言是用二进制代码表示的,计算机能直接识别和执行的一种机器指令的集合。下图就是机器语言的示例

说到二进制编码,相信有很多小朋友还是很疑惑。那老师再给大家讲讲二进制编码吧。这也正好解决了小倪同学的第二个疑问,为什么计算机只认识0和1呢?这其实就和CPU有关啦。CPU也称中央处理器,是一块超大规模的集成电路,它是一台计算机的大脑。处理器已经有执行所有这些指令的电路,但是只有当把对应的指令输送到处理器,才能使电路正确地被连接在一起,指令中的1和0可以使晶体管打开或者关闭,最终连接正确的电路,执行该指令。
后来大家觉得10001100101这种写法太难记了,所以就出现了汇编语言。汇编语言基本上就是一种助记符,将二进制的程序和数据用字母和数字来表示,大大方便了人们编写程序。

是不是看着要简单多啦,但是对于普通人来说还是很难。最重要的是,我们想要让计算机帮我们做一些比较难的数学计算,计算机做不到。所以计算机科学家们又继续努力,终于研究出了Fortran语言。现在一般认为1954年发明的Fortran是世界上第一门高级编程语言。
著名计算机科学家、图灵奖得主John McCarthy于1958年发明了LISP语言。
英国诗人拜伦的女儿、数学家Ada Lovelace描述了一个计算伯努利数的算法和程序,被认为是最早的计算机程序,并被尊为第一位程序员。但是,1815年才出生的她,不可能比雅卡尔织布机的发明者Jacquard更早地进行编程工作。后来美国国防部组织开展研发的Ada语言以这位女数学家的名字命名。下图是使用Ada语言编写的“Hello World”程序

自从发明了Fortran之后,陆陆续续又有一大批高级编程语言横空出世,比如C语言,C++,Python等等。高级语言,并不是因为它很“高级”所以叫高级语言。所谓高级语言,其实就是将程序先翻译成汇编语言,再翻译成机器语言。相对于机器语言、汇编语言这种底层的语言而言,C语言、Python这些高级语言更加简单易懂。下图是使用C++语言编写的“Hello World”程序。

讲完了上面漫长的编程语言发展史,我们回到小倪的第一个问题,计算机为什么听不懂我们的话呢?
计算机的的语言是二进制编码也就是0和1,我们人类的语言有很多种,中文、英语、西班牙语等等,不同国家的人交流起来很困难,所以大家就会把英语作为中介,都讲英语,这样沟通起来就没问题了。计算机和我们人类的交流也是一样的。计算机听不懂我们的语言,所以我们就使用程序或者说指令来与计算机交流,当然这样的沟通也是有问题的,我们英语编写代码或者直接拖拽的指令块,计算机也还是听不懂的,这时候我们就需要一位“翻译”了,这个“翻译”就是计算机的编译器。编译器会将我们的程序编译产生新的文件可以被计算机执行,这个能被计算机执行的新文件就是一堆0和1,也就是二进制编码,这正是计算机的语言,所以计算机就能够轻松读懂我们的程序啦。