编程语言与计算机操作系统发展历史
之前有谈到过,我对编程语言是怎么在计算机中实现功能的很感兴趣,因此本文尽可能详尽地记录C语言发展的来龙去脉
,但是任何一门技术都不可能脱离其环境而成为空中阁楼
,要讲语言,肯定要讲到操作系统
,也要讲到汇编
。
说到一门编程语言的历史,肯定离不开其使用的环境,也就是操作系统,操作系统作为连接编程语言和计算机硬件的中间桥梁,而在操作系统出现前,人们是使用纸带打孔或者是汇编语言,接下来从编程语言,计算机操作系统相互交融促进的历史开始讲述。
机器语言
其实编程语言是先于计算机出现的
,可能大家很多人都想不到,我也没想到。但是其实编程语言的本质就是解决问题的语言或者说工具(个人观点)。早在1804
年发明的提花织布机(或称甲卡提花织布机),就能运用打孔卡上的坑洞来代表缝纫织布机的手臂动作,以便自动化产生装饰的图案。这其实就是第一个编程语言,它诞生的比现代的计算机还早。这种语言是种编码
,其实就类似于机器语言
,大家看过三体都知道,叶文洁早期工作就是用带孔的纸带(也就是程序了)来控制红岸的机器的。
汇编语言
而在1940
年代,计算机诞生之初,程序员在有限的速度及存储器容量限制之下,撰写人工调整(hand tuned)过的汇编语言
程序。而且很快就发现到使用汇编语言的这种撰写方式需要花费大量的脑力(intellectual effort)而且很容易出错(error-prone)。所以直到现在,汇编语言仍能占有一席之地。只是,这一席被挤得越来越没有空间
参考资料
高级语言
1950年代有三个现代编程语言于1950年代被设计出来,这三者所派生的语言直到今日仍旧广泛地被采用,其中就有集万千宠爱于一身、引无数程序员竞头秃的高级编程语言诞生了。
Fortran
(1955),名称取自"FORmula TRANslator"(公式翻译器),由约翰·巴科斯等人所发明;是世界上第一个被正式采用并流传至今的高级编程语言。
LISP
,名称取自"LISt Processor"(枚举处理器),由约翰·麦卡锡等人所发明。
COBOL
,名称取自"COmmon Business Oriented Language"(通用商业导向语言),由被葛丽丝·霍普深刻影响的Short Range Committee所发明。
高级语言是编程语言的一个跨越,它的出现使得人们能用自己能读懂的字符与计算机交流了。
巨变!-操作系统
Linux(1)——操作系统的发展史
最早的操作系统之一是IBM的Disk Operating System(DOS),它在1960年被推出,后来1969年Unix
系统由Ken Thompson在AT&T贝尔实验室开发,最初是作为一个简单的、多任务的操作系统来使用。Unix的发展经历了多个版本,包括1973年的第四版Unix,它是用C语言重写的,这使得Unix具有了很好的可移植性。Unix因其稳定性、可靠性和强大的网络功能而受到青睐,但大多数Unix系统是商业软件,与特定硬件绑定,难以在其他平台上运行。
Linux
则是由Linus Torvalds在1991
年发起的一个开源项目,其目的是创建一个自由、免费且类Unix的操作系统。Linux内核基于GNU项目和Unix的设计理念,但进行了大量改进和创新。Linux的开源特性吸引了全球开发者的支持和贡献,使其迅速发展为一个功能强大、灵活且可移植的操作系统。Linux可以运行在多种硬件平台上,包括个人计算机、服务器和嵌入式系统。
至于Windows和Mac我就不赘述了,但是有一篇文章特别有意思,关于乔布斯和比尔盖茨的哈哈哈,真的挺有意思的。
操作系统的发展史(DOS / Windows 篇)
不知道之前有没有介绍过操作系统的作用,这里再次介绍一下。
操作系统
是计算机系统中最基本的系统软件,它负责管理计算机的硬件资源,提供用户与计算机硬件之间的接口,以及控制其他程序的执行。操作系统的主要功能包括:
- 资源管理:操作系统负责管理计算机的硬件资源,如CPU、内存、存储设备等,确保它们被合理分配和使用。
- 程序执行:操作系统提供了程序执行的环境,包括加载程序、执行程序、进程管理等。
- 文件系统管理:操作系统管理文件和目录,提供文件的创建、删除、读取和写入等功能。
- 用户界面:操作系统提供了用户界面,如图形用户界面(GUI)或命令行界面(CLI),使用户能够方便地与计算机交互。
- 设备驱动:操作系统通过设备驱动程序来控制硬件设备,如打印机、键盘、鼠标等。
- 安全性和权限管理:操作系统提供了安全机制,确保数据的安全性和用户的权限管理。
如果没有操作系统,计算机将无法正常工作,会出现以下情况:
- 计算机硬件将无法被有效管理和使用,因为缺乏一个统一的系统来协调资源。
- 用户将无法方便地与计算机交互,因为没有用户界面来提供操作界面。
- 程序将无法被加载和执行,因为没有操作系统来控制程序的运行。
- 数据存储和管理将变得非常困难,因为没有文件系统来组织数据。
- 硬件设备的使用将变得复杂,因为没有设备驱动来简化硬件操作。
- 计算机的安全性和稳定性将大大降低,因为没有操作系统来提供安全防护。
所以我们平时看不见的地方其实操作系统有发挥很大的作用,有空一定要学一下