我身上留着高级语言的血,却被用来对付高级语言!

开发 后端
在我诞生之前,人类就已经掌握了编程这门手艺。只不过那时他们还得用最底层的汇编语言进行编写程序,那一连串对寄存器和内存地址的操作,我现在看起来还头皮发麻。

[[404478]]

本文转载自微信公众号「业余码农」,作者Amazing10。转载本文请联系业余码农公众号。

在我诞生之前,人类就已经掌握了编程这门手艺。只不过那时他们还得用最底层的汇编语言进行编写程序,那一连串对寄存器和内存地址的操作,我现在看起来还头皮发麻。

不过好在人类自己也受不了,特别是还需要针对不同CPU的指令集进行兼容时,最终大家都觉得是时候让我诞生来解救他们了。

人类觉得汇编语言过于低级,完全是反人类的思维,所以就发明了一些所谓的高级语言。这些语言非常方便他们的理解和编写,但是却并不好控制。

于是我,就像是个工具人一样,被用来帮助人类以及那些冰冷的机器去征服这些高级语言。

事实上,我每天的工作很枯燥,无非就是把一些字母数字之类的转成一堆0101的串儿。我也搞不懂这些串儿最后是怎么起作用的,反正我就照着人类给我定的那些规则办。

开始我干的事情还算轻松,但慢慢的,我发现接触到的高级语言越来越复杂,这些家伙个个都身负武装、功能齐全,为了对付他们可把我累坏了。

不仅如此,随着技术发展,CPU老大哥的架构也越来越多,我还得去兼容越来越多的体系和结构。时间一长,这我更顶不住了。

我想了想,不能所有事都由我来干,我需要找几个帮手专门帮我做事。最终靠我的人格魅力,我找到了六个壮汉能够帮我完成一些重复性的工作。我待他们就像待我的亲儿子一样。

老大叫做雷西卡(Lexical),做事十分稳重,具备优秀的分解思维,擅长将一连串的字符串分解成一个个记号。

于是我把他安排在最前线,直接与高级语言们对接。他经验丰富,久经战场,能够迅速识破高级语言的构造规则,并将之分解为一个个零碎的片段。

例如,对于Int a = 0;语句,在进行了雷西卡的一顿操作之后,对应的会生成 int,a,=,0,; 这几个记号。

老大做事还是非常有勇有谋的,他熟练的使用一种叫做「正则表达式」的工具,然后再借助几个神奇的算法,就能够将高级语言的代码语句剥离抽象化,清晰的展现出语句的结构性。

老二叫做塞塔斯(Syntax),性格比较内向,同时还有一点强迫症。但老二做事却是几个弟兄中最认真的。

老二位于老大的下游,直接利用老大加工好的代码记号。然后根据我给他事先定义好的「文法」,对代码记号进行处理。

老二人狠话不多,患有强迫症的他会把每一个代码记号标记在一棵树上,树上的每个节点反映着每个代码记号的逻辑,并且都会把赋值运算符作为根节点。

老二的标记就是拥有这样一颗语法分析树,把老大传下来的零碎片段整理得整整齐齐。

六弟兄里面最让我头疼的就是老三了。老三叫做塞门提克(Semantic),为人比较慵懒,并且有点吊儿郎当。

所以我也不敢让他干太多复杂的工作,一般就让他负责检查一下语法分析树,看看有没有什么不合规的数据,然后让他们强制改造一番,听起来有点像城管。

老四是最低调的那个,以至于我连他的名字都记不起来了。老四绝对是六个人中经验最丰富,久经战场的老兵了。

他往往能够以最高效的方式完成自己的工作,并且表达能力很棒。老二标记的语法分析树在老四面前,随随便便就写成了一连串表达式。

这些表达式可是根据代码运算完成的顺序,生成临时名字用来存放运算的值,这样一来,原本复杂的高级语言代码就被拆解成了一个一个简单的运算表达式。

这部分可是很核心的工作,老四是我信得过的人,虽然我还不记得他的名字。

小五是个聪明人,虽然年纪小,但是很有自己想法。他整天跟在老四屁股后头,滔滔不绝的跟他讲述自己对那些表达式的想法,老想着优化简化之类的。

不过我也害怕他年纪轻轻误入了歧途,所以给他工作制定了一些限定规则,好让他也不能随着自己心意乱来。

小六相比小五就踏实很多,虽然年纪也不大,但是做事踏实可靠,努力而又实在。

只不过最近稍微有点内卷,导致其他弟兄们也有点承受不住。

小六的工作就是把老四的那些表达式转成汇编语言,这个过程说起来简单,就像是翻译一样,但是确实挺辛苦的事。

在这个过程中,他需要给每个表达分配寄存器以及选择在内存中的空间。

事情太繁琐,这也是他每天都加班的原因。这个月的绩效奖金想了很久,还是决定给老六。

虽然他的内卷行为引起了众弟兄的不满,但是的确也是带动了整个团队的效率。

这六兄弟,每个人都有自己的性格特点,做事风格也不大相同。但也却是我最值得信的过的兄弟们,跟着我一同四处征战,也在不断的提升和成长。

回想这些我征战过的地方,时间一晃也过去70多年了。而如今,像C/C++, Objc, C#, Scala, Pascal, Delphi这些语言都已经入了我的阵营。

记得我第一次完整征服的高级语言还是fortran,那时跟着人类领袖约翰巴科斯一同征战的日子,真是让我怀念。(约翰巴科斯, YYDS)

[[404480]]

只不过随着社会的发展,我自己也不那么纯粹了,开始我自身就是由汇编语言打造的,但后来见识到了高级语言的强大之处后,我也逐渐被替换成高级语言为主的身躯。

现如今,与我同一家族的兄弟姐妹们也大都是由高级语言构造而成,比如像C语言等。

身上留着高级语言的血,却被用来对付高级语言。这是一件挺讽刺的事情,不过也可以理解,毕竟这个社会就是这样,弱肉强食。

不过随着我年岁的增长,我也慢慢发现我也并不是无所不能。我一直都知道还有另外一个家伙,跟我干着类似的事情,但是风格却跟我截然不同,大家都叫他解老师。

除此之外,他还获得一大批高级语言的认可,像PHP, Perl, Python, Ruby这些家伙,就死心塌地的加入了他的阵营。

我还知道在我家族内,一些小家伙也跟他在进行着不清不楚的交易。只是我日渐年迈,现在有心也无力了。

不过听说高级语言的阵营内,出现了一位天才。我也曾亲眼目睹这位人物,的确是旷世之才。最关键的是,他竟能够同时获得我以及解老师的双重认可,在我俩阵营内同时获得了一大批支持者。

或许,编程世界的天真要变了。

Hello,我是安酱,本硕毕业于华中科技大学,生物医学工程专业。读书期间玩过单片机,整过FPGA,写过网站,搭过服务器。

 

责任编辑:武晓燕 来源: 业余码农
相关推荐

2014-07-28 09:43:58

编程语言鉴别编程

2022-08-31 10:13:04

C语言代码

2011-01-04 17:08:10

汇编语言

2013-05-28 09:43:38

GoGo语言并发模式

2020-10-23 12:58:21

开发编码代码

2023-11-06 13:32:38

Go编程

2019-10-08 11:17:20

开发者技能工具

2023-09-21 22:02:22

Go语言高级特性

2023-11-01 08:08:50

Go语言传递请求

2012-08-07 09:29:09

程序员编程

2010-01-12 15:24:48

C++语言

2020-08-05 12:17:00

C语言代码分配

2018-03-05 08:13:13

临时性计算编程语言

2015-07-20 11:32:07

编程语言

2023-11-22 16:10:59

编程语言机器语言

2022-02-17 09:00:00

深度学习人工智能表征学习

2020-12-09 09:33:16

编程语言C语言汇编语言

2016-12-20 09:33:16

WindowsModernUI语言

2021-03-28 20:58:25

Go语言线程

2014-05-23 10:25:48

Clojure
点赞
收藏

51CTO技术栈公众号