我身上留著高級(jí)語(yǔ)言的血,卻被用來(lái)對(duì)付高級(jí)語(yǔ)言!
本文轉(zhuǎn)載自微信公眾號(hào)「業(yè)余碼農(nóng)」,作者Amazing10。轉(zhuǎn)載本文請(qǐng)聯(lián)系業(yè)余碼農(nóng)公眾號(hào)。
在我誕生之前,人類就已經(jīng)掌握了編程這門手藝。只不過(guò)那時(shí)他們還得用最底層的匯編語(yǔ)言進(jìn)行編寫程序,那一連串對(duì)寄存器和內(nèi)存地址的操作,我現(xiàn)在看起來(lái)還頭皮發(fā)麻。
不過(guò)好在人類自己也受不了,特別是還需要針對(duì)不同CPU的指令集進(jìn)行兼容時(shí),最終大家都覺(jué)得是時(shí)候讓我誕生來(lái)解救他們了。
人類覺(jué)得匯編語(yǔ)言過(guò)于低級(jí),完全是反人類的思維,所以就發(fā)明了一些所謂的高級(jí)語(yǔ)言。這些語(yǔ)言非常方便他們的理解和編寫,但是卻并不好控制。
于是我,就像是個(gè)工具人一樣,被用來(lái)幫助人類以及那些冰冷的機(jī)器去征服這些高級(jí)語(yǔ)言。
事實(shí)上,我每天的工作很枯燥,無(wú)非就是把一些字母數(shù)字之類的轉(zhuǎn)成一堆0101的串兒。我也搞不懂這些串兒最后是怎么起作用的,反正我就照著人類給我定的那些規(guī)則辦。
開(kāi)始我干的事情還算輕松,但慢慢的,我發(fā)現(xiàn)接觸到的高級(jí)語(yǔ)言越來(lái)越復(fù)雜,這些家伙個(gè)個(gè)都身負(fù)武裝、功能齊全,為了對(duì)付他們可把我累壞了。
不僅如此,隨著技術(shù)發(fā)展,CPU老大哥的架構(gòu)也越來(lái)越多,我還得去兼容越來(lái)越多的體系和結(jié)構(gòu)。時(shí)間一長(zhǎng),這我更頂不住了。
我想了想,不能所有事都由我來(lái)干,我需要找?guī)讉€(gè)幫手專門幫我做事。最終靠我的人格魅力,我找到了六個(gè)壯漢能夠幫我完成一些重復(fù)性的工作。我待他們就像待我的親兒子一樣。
老大叫做雷西卡(Lexical),做事十分穩(wěn)重,具備優(yōu)秀的分解思維,擅長(zhǎng)將一連串的字符串分解成一個(gè)個(gè)記號(hào)。
于是我把他安排在最前線,直接與高級(jí)語(yǔ)言們對(duì)接。他經(jīng)驗(yàn)豐富,久經(jīng)戰(zhàn)場(chǎng),能夠迅速識(shí)破高級(jí)語(yǔ)言的構(gòu)造規(guī)則,并將之分解為一個(gè)個(gè)零碎的片段。
例如,對(duì)于Int a = 0;語(yǔ)句,在進(jìn)行了雷西卡的一頓操作之后,對(duì)應(yīng)的會(huì)生成 int,a,=,0,; 這幾個(gè)記號(hào)。
老大做事還是非常有勇有謀的,他熟練的使用一種叫做「正則表達(dá)式」的工具,然后再借助幾個(gè)神奇的算法,就能夠?qū)⒏呒?jí)語(yǔ)言的代碼語(yǔ)句剝離抽象化,清晰的展現(xiàn)出語(yǔ)句的結(jié)構(gòu)性。
老二叫做塞塔斯(Syntax),性格比較內(nèi)向,同時(shí)還有一點(diǎn)強(qiáng)迫癥。但老二做事卻是幾個(gè)弟兄中最認(rèn)真的。
老二位于老大的下游,直接利用老大加工好的代碼記號(hào)。然后根據(jù)我給他事先定義好的「文法」,對(duì)代碼記號(hào)進(jìn)行處理。
老二人狠話不多,患有強(qiáng)迫癥的他會(huì)把每一個(gè)代碼記號(hào)標(biāo)記在一棵樹(shù)上,樹(shù)上的每個(gè)節(jié)點(diǎn)反映著每個(gè)代碼記號(hào)的邏輯,并且都會(huì)把賦值運(yùn)算符作為根節(jié)點(diǎn)。
老二的標(biāo)記就是擁有這樣一顆語(yǔ)法分析樹(shù),把老大傳下來(lái)的零碎片段整理得整整齊齊。
六弟兄里面最讓我頭疼的就是老三了。老三叫做塞門提克(Semantic),為人比較慵懶,并且有點(diǎn)吊兒郎當(dāng)。
所以我也不敢讓他干太多復(fù)雜的工作,一般就讓他負(fù)責(zé)檢查一下語(yǔ)法分析樹(shù),看看有沒(méi)有什么不合規(guī)的數(shù)據(jù),然后讓他們強(qiáng)制改造一番,聽(tīng)起來(lái)有點(diǎn)像城管。
老四是最低調(diào)的那個(gè),以至于我連他的名字都記不起來(lái)了。老四絕對(duì)是六個(gè)人中經(jīng)驗(yàn)最豐富,久經(jīng)戰(zhàn)場(chǎng)的老兵了。
他往往能夠以最高效的方式完成自己的工作,并且表達(dá)能力很棒。老二標(biāo)記的語(yǔ)法分析樹(shù)在老四面前,隨隨便便就寫成了一連串表達(dá)式。
這些表達(dá)式可是根據(jù)代碼運(yùn)算完成的順序,生成臨時(shí)名字用來(lái)存放運(yùn)算的值,這樣一來(lái),原本復(fù)雜的高級(jí)語(yǔ)言代碼就被拆解成了一個(gè)一個(gè)簡(jiǎn)單的運(yùn)算表達(dá)式。
這部分可是很核心的工作,老四是我信得過(guò)的人,雖然我還不記得他的名字。
小五是個(gè)聰明人,雖然年紀(jì)小,但是很有自己想法。他整天跟在老四屁股后頭,滔滔不絕的跟他講述自己對(duì)那些表達(dá)式的想法,老想著優(yōu)化簡(jiǎn)化之類的。
不過(guò)我也害怕他年紀(jì)輕輕誤入了歧途,所以給他工作制定了一些限定規(guī)則,好讓他也不能隨著自己心意亂來(lái)。
小六相比小五就踏實(shí)很多,雖然年紀(jì)也不大,但是做事踏實(shí)可靠,努力而又實(shí)在。
只不過(guò)最近稍微有點(diǎn)內(nèi)卷,導(dǎo)致其他弟兄們也有點(diǎn)承受不住。
小六的工作就是把老四的那些表達(dá)式轉(zhuǎn)成匯編語(yǔ)言,這個(gè)過(guò)程說(shuō)起來(lái)簡(jiǎn)單,就像是翻譯一樣,但是確實(shí)挺辛苦的事。
在這個(gè)過(guò)程中,他需要給每個(gè)表達(dá)分配寄存器以及選擇在內(nèi)存中的空間。
事情太繁瑣,這也是他每天都加班的原因。這個(gè)月的績(jī)效獎(jiǎng)金想了很久,還是決定給老六。
雖然他的內(nèi)卷行為引起了眾弟兄的不滿,但是的確也是帶動(dòng)了整個(gè)團(tuán)隊(duì)的效率。
這六兄弟,每個(gè)人都有自己的性格特點(diǎn),做事風(fēng)格也不大相同。但也卻是我最值得信的過(guò)的兄弟們,跟著我一同四處征戰(zhàn),也在不斷的提升和成長(zhǎng)。
回想這些我征戰(zhàn)過(guò)的地方,時(shí)間一晃也過(guò)去70多年了。而如今,像C/C++, Objc, C#, Scala, Pascal, Delphi這些語(yǔ)言都已經(jīng)入了我的陣營(yíng)。
記得我第一次完整征服的高級(jí)語(yǔ)言還是fortran,那時(shí)跟著人類領(lǐng)袖約翰巴科斯一同征戰(zhàn)的日子,真是讓我懷念。(約翰巴科斯, YYDS)
只不過(guò)隨著社會(huì)的發(fā)展,我自己也不那么純粹了,開(kāi)始我自身就是由匯編語(yǔ)言打造的,但后來(lái)見(jiàn)識(shí)到了高級(jí)語(yǔ)言的強(qiáng)大之處后,我也逐漸被替換成高級(jí)語(yǔ)言為主的身軀。
現(xiàn)如今,與我同一家族的兄弟姐妹們也大都是由高級(jí)語(yǔ)言構(gòu)造而成,比如像C語(yǔ)言等。
身上留著高級(jí)語(yǔ)言的血,卻被用來(lái)對(duì)付高級(jí)語(yǔ)言。這是一件挺諷刺的事情,不過(guò)也可以理解,畢竟這個(gè)社會(huì)就是這樣,弱肉強(qiáng)食。
不過(guò)隨著我年歲的增長(zhǎng),我也慢慢發(fā)現(xiàn)我也并不是無(wú)所不能。我一直都知道還有另外一個(gè)家伙,跟我干著類似的事情,但是風(fēng)格卻跟我截然不同,大家都叫他解老師。
除此之外,他還獲得一大批高級(jí)語(yǔ)言的認(rèn)可,像PHP, Perl, Python, Ruby這些家伙,就死心塌地的加入了他的陣營(yíng)。
我還知道在我家族內(nèi),一些小家伙也跟他在進(jìn)行著不清不楚的交易。只是我日漸年邁,現(xiàn)在有心也無(wú)力了。
不過(guò)聽(tīng)說(shuō)高級(jí)語(yǔ)言的陣營(yíng)內(nèi),出現(xiàn)了一位天才。我也曾親眼目睹這位人物,的確是曠世之才。最關(guān)鍵的是,他竟能夠同時(shí)獲得我以及解老師的雙重認(rèn)可,在我倆陣營(yíng)內(nèi)同時(shí)獲得了一大批支持者。
或許,編程世界的天真要變了。
Hello,我是安醬,本碩畢業(yè)于華中科技大學(xué),生物醫(yī)學(xué)工程專業(yè)。讀書(shū)期間玩過(guò)單片機(jī),整過(guò)FPGA,寫過(guò)網(wǎng)站,搭過(guò)服務(wù)器。