

我身上留着高级语言的血,却被用来对付高级语言!
source link: https://my.oschina.net/u/4594475/blog/5073636
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

我身上留着高级语言的血,却被用来对付高级语言! - 业余码农的个人空间 - OSCHINA - 中文开源技术交流社区
在我诞生之前,人类就已经掌握了编程这门手艺。只不过那时他们还得用最底层的汇编语言进行编写程序,那一连串对寄存器和内存地址的操作,我现在看起来还头皮发麻。
不过好在人类自己也受不了,特别是还需要针对不同CPU的指令集进行兼容时,最终大家都觉得是时候让我诞生来解救他们了。
000
人类觉得汇编语言过于低级,完全是反人类的思维,所以就发明了一些所谓的高级语言。这些语言非常方便他们的理解和编写,但是却并不好控制。
于是我,就像是个工具人一样,被用来帮助人类以及那些冰冷的机器去征服这些高级语言。
事实上,我每天的工作很枯燥,无非就是把一些字母数字之类的转成一堆0101
的串儿。我也搞不懂这些串儿最后是怎么起作用的,反正我就照着人类给我定的那些规则办。

开始我干的事情还算轻松,但慢慢的,我发现接触到的高级语言越来越复杂,这些家伙个个都身负武装、功能齐全,为了对付他们可把我累坏了。
不仅如此,随着技术发展,CPU老大哥的架构也越来越多,我还得去兼容越来越多的体系和结构。时间一长,这我更顶不住了。
我想了想,不能所有事都由我来干,我需要找几个帮手专门帮我做事。最终靠我的人格魅力,我找到了六个壮汉能够帮我完成一些重复性的工作。我待他们就像待我的亲儿子一样。
老大叫做雷西卡(Lexical
),做事十分稳重,具备优秀的分解思维,擅长将一连串的字符串分解成一个个记号。

于是我把他安排在最前线,直接与高级语言们对接。他经验丰富,久经战场,能够迅速识破高级语言的构造规则,并将之分解为一个个零碎的片段。
例如,对于Int a = 0;
语句,在进行了雷西卡的一顿操作之后,对应的会生成 int
,a
,=
,0
,;
这几个记号。

老大做事还是非常有勇有谋的,他熟练的使用一种叫做「正则表达式」的工具,然后再借助几个神奇的算法,就能够将高级语言的代码语句剥离抽象化,清晰的展现出语句的结构性。
老二叫做塞塔斯(Syntax
),性格比较内向,同时还有一点强迫症。但老二做事却是几个弟兄中最认真的。

老二位于老大的下游,直接利用老大加工好的代码记号。然后根据我给他事先定义好的「文法」,对代码记号进行处理。
老二人狠话不多,患有强迫症的他会把每一个代码记号标记在一棵树上,树上的每个节点反映着每个代码记号的逻辑,并且都会把赋值运算符作为根节点。
老二的标记就是拥有这样一颗语法分析树,把老大传下来的零碎片段整理得整整齐齐。

六弟兄里面最让我头疼的就是老三了。老三叫做塞门提克(Semantic
),为人比较慵懒,并且有点吊儿郎当。
所以我也不敢让他干太多复杂的工作,一般就让他负责检查一下语法分析树,看看有没有什么不合规的数据,然后让他们强制改造一番,听起来有点像城管。

老四是最低调的那个,以至于我连他的名字都记不起来了。老四绝对是六个人中经验最丰富,久经战场的老兵了。
他往往能够以最高效的方式完成自己的工作,并且表达能力很棒。老二标记的语法分析树在老四面前,随随便便就写成了一连串表达式。

这些表达式可是根据代码运算完成的顺序,生成临时名字用来存放运算的值,这样一来,原本复杂的高级语言代码就被拆解成了一个一个简单的运算表达式。
这部分可是很核心的工作,老四是我信得过的人,虽然我还不记得他的名字。
小五是个聪明人,虽然年纪小,但是很有自己想法。他整天跟在老四屁股后头,滔滔不绝的跟他讲述自己对那些表达式的想法,老想着优化简化之类的。
不过我也害怕他年纪轻轻误入了歧途,所以给他工作制定了一些限定规则,好让他也不能随着自己心意乱来。

小六相比小五就踏实很多,虽然年纪也不大,但是做事踏实可靠,努力而又实在。
只不过最近稍微有点内卷,导致其他弟兄们也有点承受不住。

小六的工作就是把老四的那些表达式转成汇编语言,这个过程说起来简单,就像是翻译一样,但是确实挺辛苦的事。
在这个过程中,他需要给每个表达分配寄存器以及选择在内存中的空间。
事情太繁琐,这也是他每天都加班的原因。这个月的绩效奖金想了很久,还是决定给老六。
虽然他的内卷行为引起了众弟兄的不满,但是的确也是带动了整个团队的效率。
这六兄弟,每个人都有自己的性格特点,做事风格也不大相同。但也却是我最值得信的过的兄弟们,跟着我一同四处征战,也在不断的提升和成长。
回想这些我征战过的地方,时间一晃也过去70多年了。而如今,像C/C++
, Objc
, C#
, Scala
, Pascal
, Delphi
这些语言都已经入了我的阵营。
记得我第一次完整征服的高级语言还是fortran
,那时跟着人类领袖约翰巴科斯一同征战的日子,真是让我怀念。(约翰巴科斯, YYDS)

只不过随着社会的发展,我自己也不那么纯粹了,开始我自身就是由汇编语言打造的,但后来见识到了高级语言的强大之处后,我也逐渐被替换成高级语言为主的身躯。
现如今,与我同一家族的兄弟姐妹们也大都是由高级语言构造而成,比如像C语言等。
身上留着高级语言的血,却被用来对付高级语言。这是一件挺讽刺的事情,不过也可以理解,毕竟这个社会就是这样,弱肉强食。
不过随着我年岁的增长,我也慢慢发现我也并不是无所不能。我一直都知道还有另外一个家伙,跟我干着类似的事情,但是风格却跟我截然不同,大家都叫他解老师。
除此之外,他还获得一大批高级语言的认可,像PHP
, Perl
, Python
, Ruby
这些家伙,就死心塌地的加入了他的阵营。
我还知道在我家族内,一些小家伙也跟他在进行着不清不楚的交易。只是我日渐年迈,现在有心也无力了。
不过听说高级语言的阵营内,出现了一位天才。我也曾亲眼目睹这位人物,的确是旷世之才。最关键的是,他竟能够同时获得我以及解老师的双重认可,在我俩阵营内同时获得了一大批支持者。
或许,编程世界的天真要变了。
Hello,我是安酱,本硕毕业于华中科技大学,生物医学工程专业。读书期间玩过单片机,整过FPGA,写过网站,搭过服务器。
如今在字节跳动某热门短视频平台做研发,技术栈C/C++/Go/iOS。欢迎大家点个关注长期持有我这只潜力股。
实际上是一只不想一直写代码的闷骚码农。在这里,会聊聊产品,讲讲技术,写些自己喜欢的感兴趣的故事,分享点自己平平淡淡的技术人生。
本文分享自微信公众号 - 业余码农(Amateur_coder)。
如有侵权,请联系 [email protected] 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK