当前位置: 首页 > news >正文

[计算机科学#11]:编程语言简史,从二进制到简约表达的华丽转身,造就原因——“懒”

[LOGO]:CoreKSets

           【核知坊】:释放青春想象,码动全新视野。          

            我们希望使用精简的信息传达知识的骨架,启发创造者开启创造之路!!!          


内容摘要 由于早期的编程需要直接操作硬件,例如使用穿孔卡片或控制面板,这一过程不仅繁琐且耗费大量精力。为了将更多注意力集中在业务逻辑和实际问题的解决上,人们迫切需要一种更简便的编程方式。由此诞生了“软件”这一概念,作为人类与计算机之间的桥梁。从最初的二进制操作码,到使用助记符的汇编语言,再到结构化、面向对象的高级语言,每一次技术进步都极大地降低了编程门槛,使人与计算机的交流变得更加自然与高效。这种演进不仅推动了计算机技术的发展,也让更多人能够参与到编程和数字化创造中来。

关键词:汇编器 编译器 高级语言


其他相关文章:

[计算机科学#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 代码为例,程序的操作通常非常直观,例如:将 X1X2 相加,并将结果存储到 Y 中。代码中等号左侧的 X1X2Y 被称为变量,本质上是数据的内存地址。在程序运行过程中,编译器会将这些变量映射到实际的内存地址,对应的值就存储在那块地址中。对程序员来说,我们只需要关注变量的名称和用途,而不必去关心底层对应的内存地址究竟是什么。这种抽象屏蔽了底层细节,使编程更专注于逻辑和功能,也体现了高级语言的强大之处。

高级语言让编程更方便


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)

相关文章:

  • 解析小米大模型MiMo:解锁语言模型推理潜力
  • 线索二叉树
  • 服务器配置llama-factory问题解决
  • VR 南锣鼓巷:古老街区的数字化绘卷与沉浸式遨游​
  • 硬件选型:工控机的选择要素
  • 什么是 DDoS 攻击?从零到精通的全面解析
  • Tenorshare 4DDiG(数据恢复软件) v10.3.7.5 中文绿化版
  • shader中性能优化
  • 正则表达式实用指南:原理、场景、优化与引擎对比
  • 网络原理初识
  • VR制作软件用途(VR制作软件概述)
  • 【Python开源】深度解析:一款高效音频封面批量删除工具的设计与实现
  • Spring MVC 中Model, ModelMap, ModelAndView 之间有什么关系和区别?
  • Android Studio 模拟器配置方案
  • 【Python】Python项目中的依赖与配置:requirements.txt、setup.py、pyproject.toml 详解
  • 安防多协议接入/视频汇聚平台EasyCVR助力工地/工程/建筑施工领域搭建视频远程监控系统
  • 从零开始了解数据采集(二十四)——工业4.0讲解
  • Git查看某个commit的改动
  • 压入从0到Nvector(C++)
  • window 显示驱动开发-处理内存段(一)
  • 北上广深均宣布下调个人住房公积金贷款利率
  • 两国战机均未侵入对方领空,巴方公布对印回击细节
  • 韩国法院将李在明所涉案件重审日期延至大选后
  • 青年与城市共成长,第六届上海创新创业青年50人论坛将举办
  • “注胶肉”或已泛滥?这几种肉,再爱吃也要管住嘴
  • 探访小剧场、直播间、夜经济:五一假期多地主官调研新消费