我身上留著高級語言的血,卻被用來對付高級語言!
本文轉載自微信公眾號「業余碼農」,作者Amazing10。轉載本文請聯系業余碼農公眾號。
在我誕生之前,人類就已經掌握了編程這門手藝。只不過那時他們還得用最底層的匯編語言進行編寫程序,那一連串對寄存器和內存地址的操作,我現在看起來還頭皮發麻。
不過好在人類自己也受不了,特別是還需要針對不同CPU的指令集進行兼容時,最終大家都覺得是時候讓我誕生來解救他們了。
人類覺得匯編語言過于低級,完全是反人類的思維,所以就發明了一些所謂的高級語言。這些語言非常方便他們的理解和編寫,但是卻并不好控制。
于是我,就像是個工具人一樣,被用來幫助人類以及那些冰冷的機器去征服這些高級語言。
事實上,我每天的工作很枯燥,無非就是把一些字母數字之類的轉成一堆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,寫過網站,搭過服務器。