数组、链表这些结构限制条件的根本原因来自于 计算机硬件的体系结构。
在现今的计算机教育体系中,编程语言、数据结构(含算法)、计算机原理及体系结构几门课是计算机专业的本科生都要学习的。
实际上这几门课之间,也包括其他一些课程(例如编译原理、自动机、数电、模电、操作系统等等 ),有不少overlap的知识点和相互引用的地方,要从一个方向讲清楚某个知识点,就不得不涉及其他几个领域的知识。但是因为内容实在太多,不得已被分割为几门课程。
大学课程如此,我们这类入门性质的课程就要灵活得多,不必特意割裂知识间原本的联系,而是用到什么就讲什么。
今天这一章,虽然目标是说明数据结构受限的原因,但为了把它讲明白,我们先从计算机原理开始。
电子计算机的前世今生
从人、算盘、到专用计算器
计算机对应的英文原词是computer,这个词在英语里原本指从事数据计算的人——即使到了上世纪六七十年代,许多从事计算工作的人,仍然被称为computer。
下图是1949年,NASA的人形计算机(human computers):
由于计算任务的必要性和痛苦性,通过工具或者设备来代替人承担计算任务一直是人类的追求。从古老的算筹、算盘等简易工具,到计算尺、手摇计算机等机械工具,都是这种追求的体现。