news 2026/4/18 18:19:50

c语言第一个编译器是用什么语言写的?自举原理

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
c语言第一个编译器是用什么语言写的?自举原理

你可曾思考过如下问题,世界上首个C语言编译器,它究竟是运用何种语言编写而成的?

要解开这个谜团,我们得回到计算机的起点

CPU真正能够读懂的,仅仅是那由0和1所构成的机器语言,这是所有故事得以矗立的基石。

那么,第一步是怎么走的呢?

汇编语言出现了:最开始的那些搞程序的厉害人物们,借助机器语言这个极为原始的工具,费尽一番周折写出了首个汇编编译器。汇编语言能够被视作机器指令的“英文简略形式”,虽说依旧处于很底层的层面,然而已经远比0和1要友善得多了。

高级语言的那个被称作“老祖宗”的存在,在有了汇编语言这个更为强大的工具之后,那些大神们能够借助它去编写更为复杂的程序了,于是呀,世界上第一个C语言编译器,也就是我们所说的“老祖宗”版的,是用汇编语言给写出来的。

关键一步:自举,现在,好戏开始了。我们能够利用这个汇编版的“老祖宗”C编译器,去编译一个用C语言自身所写的新编译器。一旦成功达成,我们便获得了一个“纯种”的、依靠C语言自己编译自身的编译器。到了这个时候,我们就能够舍弃那个汇编版的“老祖宗”,达成“自举”了。

不只是C语言,诸如Pascal,Fortran一类早期的高级语言,差不多都踏上了相同的路径:借助一个更早且更基础的语言,去诞育自身的“首个子女”。

大神们如何“滚”出编译器?

听到这些内容,你大概会产生一个问题,那就是运用汇编写一个C语言编译器,这该是多么规模宏大、多么违背常理思路的一项工程呀,这种情况有可能实现吗?

答案是,不仅存在可能性,并且大神们实实在在达成了。早期,有Unix操作系统,求伯君所编写的WPS,风靡一时的Turbo Pascal,其最初的版本统统是直接运用汇编写就而成的。那个时期,程序员所具备的硬核能力,的确超越了我们所能想象的范畴。

但是,那种更具普遍性,更为聪慧的方式,则为是以“滚动雪球”样式的迭代去予以开发,进而言之,这便是属于“自我发起提升”的一种完整实践情形:

对此过程,我更倾向于将其称呼为 “迭代优化” ,那座一望便觉难以攀登的高峰,被它分解,变为了一级级能够逐步攀登的台阶。

从编译器到应用开发的能力平权

“自举”思想 ,实则早就跨越了编译器范畴 ,变为促使整个软件开发演化的关键哲学。其本质就在于:运用高级工具去构建更高级的工具 ,持续把底层繁杂的工作封装起来 ,使得创造的门槛一遍遍降低。

此刻,我们正在将相同的逻辑运用到应用软件自身的开发之中,我们努力使得并非程序员的那些人,也能够迅速搭建出自身所需的管理系统。

恰是处于这个背景状况之下,国产的无代码开发平台得以出现了。它所开展进行的事情,与当年的“自举”存在着异曲同工的巧妙之处:

这个平台很复杂,它能被视作那个由Java、C++等高级语言编写而成的“母体”,或者是“老祖宗编译器”。

开发方式,它所倡导的是一种名为“表格编程”的技术,对于数据库、算法这类底层实现你无需去关心;就如同使用Excel绘制表格那般,借由拖拽以及中文配置这种陈述式的方式,向计算机表明你所需要的单据究竟是什么样的,流程又是什么样的,权限又是何种情况。

达成“自举”:一旦这个“母体”构建完成,此后业务人员以及管理者便能够予以运用,在不编写任何一行代码的状况下,借由它“自举”出归属于自身的诸如ERP、CRM、WMS等此类全套企业管理软件。

这带来了几个显而易见的好处:

小结

回顾这条明晰的主线,最初是由最原始的0和1对CPU进行控制,接着是运用C语言来抽象提取系统级的能力,而后到如今我们借助无代码平台直接去定义业务流程。这一整个历程,其核心是一个持续不断地封装复杂性、把构建的能力持续交付给更为广泛群体的故事。

技术进步最终的目的,并非要使工具变得更为神秘,而是要让创造变得更为简单,让每一个拥有想法的人,都能够成为自身数字世界的建造者。

对此,您怎么看?非常欢迎您在评论区补充观点或者干货。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/18 18:05:38

YALMIP MATLAB优化建模工具箱:从入门到精通的完整指南

YALMIP MATLAB优化建模工具箱:从入门到精通的完整指南 【免费下载链接】YALMIP MATLAB toolbox for optimization modeling 项目地址: https://gitcode.com/gh_mirrors/ya/YALMIP 你是否曾经面对复杂的优化问题感到无从下手?是否在MATLAB中编写优…

作者头像 李华
网站建设 2026/4/14 6:07:40

catpull-v2 开源UniApp可视化跨端低代码开发平台

github:https://github.com/M-topu/catpull-v2 “让应用开发像搭积木一样简单”。平台融合UniApp实现可视化搭建跨端应用的能力,采用“所见即所得”的设计理念。无需编写复杂代码,通过拖拽组件即可生成可同时发布到微信小程序、H5页面和APP。…

作者头像 李华
网站建设 2026/4/14 6:05:51

网络协议实战:使用gRPC优化伏羲模型内部微服务通信

网络协议实战:使用gRPC优化伏羲模型内部微服务通信 在构建像伏羲这样复杂的AI模型服务时,我们通常会把系统拆分成多个独立的微服务,比如数据预处理、模型推理、结果后处理等。这些服务之间需要频繁地“对话”,交换数据。过去&…

作者头像 李华
网站建设 2026/4/18 18:08:38

CLAP模型多模态扩展效果展示:视觉-音频联合理解

CLAP模型多模态扩展效果展示:视觉-音频联合理解 1. 引言 你有没有遇到过这样的情况:看到一段视频,画面里有人在弹吉他,但声音却是鸟叫声?或者听到一段优美的钢琴曲,却发现画面是嘈杂的街道?这…

作者头像 李华
网站建设 2026/4/16 22:07:23

春联生成模型开发环境配置:VSCode Python环境搭建指南

春联生成模型开发环境配置:VSCode Python环境搭建指南 想快速搭建一个能写春联的AI开发环境?这篇指南手把手教你用VSCode配置Python环境,从零开始轻松上手。 作为一个长期在AI领域折腾的开发者,我深知一个好用的开发环境有多重要。…

作者头像 李华