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