[计算机科学#11]:编程语言简史,从二进制到简约表达的华丽转身,造就原因——“懒”
【核知坊】:释放青春想象,码动全新视野。
我们希望使用精简的信息传达知识的骨架,启发创造者开启创造之路!!!
内容摘要: 由于早期的编程需要直接操作硬件,例如使用穿孔卡片或控制面板,这一过程不仅繁琐且耗费大量精力。为了将更多注意力集中在业务逻辑和实际问题的解决上,人们迫切需要一种更简便的编程方式。由此诞生了“软件”这一概念,作为人类与计算机之间的桥梁。从最初的二进制操作码,到使用助记符的汇编语言,再到结构化、面向对象的高级语言,每一次技术进步都极大地降低了编程门槛,使人与计算机的交流变得更加自然与高效。这种演进不仅推动了计算机技术的发展,也让更多人能够参与到编程和数字化创造中来。
关键词:汇编器 编译器 高级语言
其他相关文章:
[计算机科学#10]:早期的计算机编程方式-CSDN博客
[计算机科学#9]:更高级的CPU,榨干每个时钟的价值-CSDN博客
[计算机科学#8]:指令与程序的奥秘-CSDN博客
二进制编写程序
在[计算机科学#8]中,我们详细介绍了CPU处理器是如何运行指令的。每条指令通常由操作码和数据地址组成:操作码告诉CPU应执行何种运算逻辑,而数据地址则指明从何处获取运算所需的数据。这些内容均以二进制形式表示,当指令数量和位数较多时,识别和记忆各种操作码的功能就变得十分困难。
为了解决这个问题,人们在正式编写程序前,常用人类语言先描述任务的运行步骤,例如:“计算1月份每天的收入,并将它们相加”。这种以接近自然语言的方式表达的程序思路被称为伪代码。伪代码本身不能直接被计算机执行,因此程序员需要参考操作码表,将伪代码逐步翻译成具体的操作码和地址信息,最终转换为二进制指令,组成一个可以被CPU执行的完整程序。
汇编器,使用助记符翻译二进制
与其逐条查表、反复确认复杂的二进制指令,不如使用更易记的人类语言词汇或缩写来表示某个操作。比如,用 “Add” 来代表二进制的 1010
,用 “Load_A” 来表示 10010010
。程序员可以直接使用这些助记符编写程序,而无需手动处理繁琐的二进制序列。
将助记符转换为二进制指令的过程被称为 “汇编”,完成这一工作的专用软件叫做 “汇编器”。汇编器本身由二进制编写,但一旦它构建完成,就可以极大地提高后续程序编写的效率——一次开发,多次受益。
随着发展,汇编器功能日益强大,不仅能将助记符转换为机器指令,还能自动分配跳转地址、管理内存位置等。这意味着程序员不再需要手动指定复杂的内存地址或跳转逻辑,从而大大减少了与底层硬件的直接交互,让编程更加高效和可靠。
第一个编译器:A-0
格蕾丝·穆雷·霍珀(Grace Murray Hopper,1906年12月9日—1992年1月1日),本名格蕾丝·布鲁斯特·穆雷(英语:Grace Brewster Murray),霍珀为夫姓,生于美国纽约州纽约市,美国海军准将及计算机科学家,世界最早一批的程序员之一,也是最早的女性程序员之一。她是哈佛一型计算机上第一个专职程序员,创造了现代第一个编译器A-0 系统,以及第一个高级商用计算机程序语言COBOL,被誉为“COBOL之母”。
A-0 编译器是历史上最早的编译器之一,它能够将高级语言指令转换为汇编语言或机器码,大大减少了程序员对计算机底层逻辑的直接干预。这项开创性的工作由格蕾丝·穆雷·霍珀领导完成,标志着“用人类语言与计算机沟通”的理念首次真正落地。然而,在当时,这种高级语言的思想过于超前,许多人对霍珀的成果持怀疑态度,认为脱离硬件细节的编程方式不切实际。因此,A-0 编译器并未在当时获得广泛传播,相关的编程代码和文档几乎未被系统保存下来,成为计算机史上一段宝贵却模糊的记忆。
X1 = 12
X2 = 20
Y = X1 + X2
以 Python 代码为例,程序的操作通常非常直观,例如:将 X1
与 X2
相加,并将结果存储到 Y
中。代码中等号左侧的 X1
、X2
和 Y
被称为变量,本质上是数据的内存地址。在程序运行过程中,编译器会将这些变量映射到实际的内存地址,对应的值就存储在那块地址中。对程序员来说,我们只需要关注变量的名称和用途,而不必去关心底层对应的内存地址究竟是什么。这种抽象屏蔽了底层细节,使编程更专注于逻辑和功能,也体现了高级语言的强大之处。
高级语言让编程更方便
Fortran
Fortran最初由IBM在1950年代开发,用于科学和工程应用,并随后长时间统治了科学计算编程。它已经在计算密集领域里应用了超过六个年代,比如数值天气预报、有限元分析、计算流体力学、地球物理学、计算物理学、晶体学和计算化学。它是高性能计算的流行语言,并被用于世界上最快超级计算机的基准测试和排名。
由于当时高级语言仍处于起步阶段,许多编程语言只能运行在特定厂商生产的计算机上。例如,Fortran 只能在 IBM 的计算机上运行。这种依赖硬件平台的特性,极大地限制了程序的移植性和通用性。这就像是你家门口明明有小卖部,但买瓶水却必须跑到10公里外的大超市——既不高效,也不现实。更严重的是,计算机硬件更新换代频繁,每次设备升级,原有程序可能就无法运行,程序员不得不重新编写整个系统,既耗时又烧钱。
为了解决这一危机,1959 年,来自工业界、学术界和政府的计算机专家联合成立了一个特别工作组,Grace Hopper 担任顾问。这个团队的目标是开发一种跨平台、面向商业用途的通用语言。最终,这种语言被命名为 “COBOL”(Common Business Oriented Language,普通面向商业语言),标志着现代跨平台编程理念的萌芽。
COBOL
COBOL属于编译语言,是最早的高级编程语言之一,也是最早实施标准化的计算机语言之一。COBOL主要应用于商业数据处理领域,此间大量的数据通常以文件的形式存储在磁盘上,它提供强大的文件处理功能,对各种类型的数据进行收集、存储、发送、分类、排序、计算及打印报表、输出图像。
为了实现对不同底层硬件的兼容,每种计算机架构只需配备一个对应的 COBOL 编译器。这些编译器都能接收相同的 COBOL 源代码,无论运行在哪种计算机上,都可以实现“一次编写,到处运行”的目标。开发者无需再关注特定 CPU 的汇编指令或机器码,从而大大降低了使用门槛。
这一转变不仅推动了计算机科学的普及,使其从一门晦涩的专业学科走向大众应用工具,也催生了一个新角色:程序员——他们借助更高层次的语言抽象,开始构建更加复杂、功能更强大的软件系统。
这一时期,随着编程语言的发展与硬件性能的提升相辅相成,编程语言设计的黄金时代才刚刚拉开帷幕。计算机正在从科研设备走向工业应用与日常生活,现代软件世界的基础也由此奠定。
编程语言发展时间表
📍1960年代
-
ALGOL(算法语言之父,影响深远)
-
LISP(人工智能研究的核心语言)
-
BASIC(简化教学用编程)
📍1970年代
-
Pascal(教育用途广泛)
-
C(系统编程的基础语言)
-
Smalltalk(面向对象编程的先驱)
📍1980年代
-
C++(C 的面向对象扩展)
-
Objective-C(用于 NeXT 和苹果开发)
-
Perl(脚本语言,强文本处理能力)
📍1990年代
-
Python(语法简洁,广泛应用)
-
Ruby(面向对象优雅设计)
-
Java(跨平台开发的重要语言)
📍2000年代
-
C#(微软主导,用于 .NET)
-
Go(Golang)(谷歌开发,简洁并发)
-
Scala(兼具函数式与面向对象特性)
📍2010年代–2020年代
-
Swift(苹果推出,用于 iOS/macOS 开发)
-
Rust(高性能且内存安全)
-
Kotlin(Android 官方推荐语言)
-
TypeScript(JavaScript 的类型增强版)
总结
计算机的发展离不开开发者的“懒”性——每一次技术迭代,都伴随着对效率和便利的追求,催生了许多超前的创新思想。从最初的二进制操作到高级语言的出现,这一过程不断拉近了普通人与计算机之间的距离,让编程不再是少数人的专属,而是普及到更广泛的使用者手中。
感谢阅览,如果你喜欢该内容的话,可以点赞,收藏,转发。
由于 Koro 能力有限,有任何问题请在评论区内提出,Koro 看到后第一时间回复您!!!
其他精彩内容:
[计算机科学#5]:计算机的“数学大脑”——核心部件ALU揭秘-CSDN博客
[计算机科学#6]:从锁存器到内存,计算机存储的构建与原理-CSDN博客
[计算机科学#7]:CPU的三阶段,取指令、解码、执行-CSDN博客
CPU提速方式
参考内容:
Crash Course Computer Science(Y-T)