第99章 程式入門(結):薪傳

第99章 程式入門(結):薪傳

「程程,幫忙看一個問題唄?」

一名綁著單馬尾,臉蛋圓圓的妹子蹭到了程原的身旁,並小聲向他請教道:「我這個程序運行不起來!」

「哎,好吧。」程原聳了聳肩,並暫時放下了手中的筆記本。

隨後,他伸手輕輕一推桌邊,裝有輪子的辦公椅便將他送到了圓臉妹子的工位旁。接下來他抬頭看了一眼屏幕……

「我說團團啊。」程原痛苦地扶了扶額頭:「程序的主入口是main函數,你寫的這個mian函數是什麼鬼啊。」

「哎呀,不好意思。」被稱為團團的妹子下意識地吐了吐舌頭,隨後她用兩根手指飛快地敲擊了幾下鍵盤,這下程序終於成功地運行起來了。

「耶!我成功了,現在我也會寫程序啦!」望著彈出窗口中顯示的一行文字,團團高興地握了握拳頭。

一旁的程原下意識地張了張口,但是他最終並沒有打擊妹子的積極性。雖然她寫的只是一個最簡單的菜鳥入門程序,但誰還不是從菜鳥一步一步成長起來的呢?

隨後,程原再次一推桌子,返回了自己的工位。不過還沒等他重新拿起筆記本,另一名同事就已經帶著問題屁顛屁顛地跑過來了。

「程遠大佬,幫忙看一個問題唄……」

好吧,程原只好再次動身。

十秒鐘后,程原一臉無語地指著面前的幾行代碼道:「大熊啊,這個index我還可以理解,但是後邊的indey和indez是什麼東西啊?」

被稱為大熊的漢子憨厚地張了張嘴:「x,y,z,沒問題啊?」

程原:「……」

他感覺自己的肝在隱隱作痛。隨後,程原默默地調取了一點寶貴的信息點,為自己施展了一個小型的治療術。

好說歹說勸服大熊修改了變數名稱的拼寫,程原還沒來得及鬆口氣,下一個問題就找上了門。

「這行a[i++]+=++i+i+i++是誰寫的?」一看到面前的一串鬼畫符,程原就氣不打一處來:「趕快換回正常人類的寫法,這種東西以後沒人能看得懂。」

「這可是我想了好久才想出來的!」提問的強子不服氣地回道:「看不懂的人說明他水平不夠。」

面對強詞奪理的強子,程原本想批評他兩句,但想了想后還是忍住了:「在工作中,絕大部分時候都不要這樣寫程序。代碼是用來實現功能的,不是用來讓你炫耀技巧的。」

「那我加上註釋說明還不行么?」強子仍不死心,畢竟這行代碼中凝聚了他不少的「心血」。

「不好意思還是不行,這樣寫會出問題的。」程原無奈地扯過強子的鍵盤,並在上面隨手敲了兩下,打開了一個全是英文的網站:「你自己看看吧,jdk9前幾個月報出的問題,你這個寫法正好會觸發這個編譯器的Bug。」

聞言,強子連忙打開了他寶貴的電子詞典,開始一個單詞一個單詞地讀起了這個網頁中的內容……半晌后他發出了一聲驚叫:「我的天!居然編譯器也會出問題……大佬你是怎麼發現這個的啊?」

程原無奈地聳了聳肩。這個問題當時在網路上還是有一點討論熱度的,所以他自製的爬蟲小程序自然不會放過將這條消息推送到他面前的機會。

「編譯器又是什麼東西啊?」團團好奇地湊了過來。

程遠微微地嘆了口氣。他本來想解釋說,編譯器是一種可以將程序轉換為程序的程序,但是很明顯地,這個說法除了聽上去很高端以外,它並不能對菜鳥妹子產生一點點的幫助。

所以,程原想了想后說道:「編譯器……它就像是程序界中的『翻譯』。」

「翻譯?」團團好奇地問道:「它可以將什麼翻譯成什麼呢?」

「什麼都可以。」程原一邊考慮著適合的措辭一邊回答道:「不過一般來說的話,我們會使用它將平時編寫的代碼翻譯成機器能夠看懂的二進位指令……」

程遠緩緩地講著,他的思緒漸漸飄遠。

——

最開始,人們在計算時,只是使用手指,繩結和石頭。後來,人們發明了簡單的算盤和複雜的齒輪,幫助數學家們進行各種各樣的運算。

然而,齒輪的轉動速度是緩慢的,人們的加工精度是有限的。當需要處理複雜的運算時,即使是最好的工匠也沒辦法加工出滿足要求的齒輪,地球位面史上,曾經的一位「機械計算機」發明者就因此抱憾而終。

然而後來,人們發現,如果使用一些特定的工藝,對一些被稱為「半導體」的材料進行加工的話,就可以在其中產生一種被稱為「PN結」的結構。

當然,不了解這個「PN結」的原理並不要緊,我們只需要知道,曾經的人們使用這個PN結,發明了二極體和三極體。

當然,不了解二極體和三極體的原理也不要緊,我們只需要知道,曾經的人們使用二極體和三極體,組合出了與或非等邏輯門電路。

當然,不了解邏輯門的原理也不要緊,我們只需要知道,工程師們使用一個個的邏輯門,製作出了各種各樣的晶元。這些晶元中,有的能夠進行加減運算,有的能夠進行乘除,有的能夠對輸入的信號進行判斷……

雖然,這些晶元只能使用一串串的高低電壓,或者說二進位的「0」和「1」作為輸入與輸出,但是這就足夠了。

終於有一天,工程師們發明了這樣的一種晶元:

它可以接收最少兩個二進位數字,一個「操作指令類型」的信號,並輸出一個數字。

如果這個「操作指令」是加法,那麼這個晶元便對接收的兩個數字進行加法運算,並輸出計算結果。

如果這個「操作指令」是乘法,那麼這個晶元便對接收的兩個數字進行乘法運算,並輸出計算結果。

如果這個「操作指令」是比較大小,那麼這個晶元便返回兩個數字的比較結果……

工程師們為這個晶元設計了幾十上百種可以支持的操作指令。除此之外,工程師們還在這個晶元的旁邊安裝了各種各樣的,由電容或者磁鐵粉製作而成的「存儲器」,這些存儲器可以為晶元提供輸入信號,或者存儲晶元輸出的數值。

隨後,工程師們開始在紙帶上打孔。紙帶上的每一段,都對應著晶元需要執行的一行指令。

最終,整個系統被組合。一條條紙帶從識別孔洞的機器中劃過,一波波電脈衝忠實地將掃描到的指令存入存儲器。隨後,一個由信號構成的「箭頭」便可以從第一條指令開始,逐條地向晶元傳遞它所指向的指令。有時,這個箭頭會聽從晶元的命令,向前跳躍一段距離或是向後退兩步,或者在小範圍內轉上幾圈……不過一般情況下,它都能夠到達最終的目的地。而在那時,工程師們想要計算的複雜公式的運算結果,已經安安穩穩地躺在存儲器中了。

這個多功能的晶元,便是人們常說的CPU,而那一摞摞能夠鋪滿整個地面的紙條,便是早期的計算機程序。

——

「大概的情況就是這樣吧。」程原一邊指著屏幕中的一行行如同天書一般的符號一邊介紹道:「但是,一般人很難看得懂CPU直接使用的機器指令。因此,人們發明了各種各樣的高級語言,然後再用編譯器將這些高級語言轉換為彙編指令和機器指令,這樣就方便得多啦。」

「原來如此。」團團似懂非懂:「那……編譯器是用什麼語言寫的呢?」

「嗯,現在的大部分語言的編譯器都是用『C語言』寫的。」程原想了想后,表情古怪地拋出了這樣的一個回答。

「那C語言的編譯器又是用什麼語言寫的呢?」一旁的大熊想了想后也提了一個問題。

「C語言的編譯器是用C語言寫的。」程原滿意地笑了笑,果然有人跳坑了。

「啊?可是沒有編譯器就翻譯不了C語言,沒有C語言就寫不了編譯器……」旁聽的幾人陷入了混亂當中。

「恭喜你們成功領悟了遞歸。」程原得意地回道,這下他的心情終於平復了一些。

隨後,他一臉滿足地坐回了自己的位置上。不過還沒等他得意多久,他便感覺到一道目光從隔壁投射而來。程原不自覺地縮了縮脖子,並開始了下意識的左顧右盼。

十秒鐘后。

「好吧好吧,揭曉謎底。」在那道目光的注視下,程原最終還是繳械投降了:「最早的、最簡單的編譯器是用彙編寫的,而複雜一點的編譯器是用最簡單的編譯器生成的,複雜兩點的編譯器是用複雜一點的編譯器生成的,以此類推。」

這下,旁聽的幾人終於擺出了一臉恍然大悟的表情。

而程原則趁機一臉無奈地望向了那道目光的主人:一名戴著眼鏡的,瘦小的文靜少女。

[於小魚同學啊,我沒做什麼傷天害理的事啊。]程原用目光向少女示意道。

[誰叫你欺負團團姐的,哼。]少女不客氣地白了他一眼。

[明明是你的團團姐先來欺負我的。]程原用目光叫屈道。

[不管,哼。]被稱為於小魚的少女再次遞給了程原一個鄙夷的眼神,隨後她又轉過頭去對著鍵盤敲敲打打了。

好吧,被發了壞人卡的程原只好一臉鬱悶地坐回了自己的工位上,隨後他再次默默地打開了手中的筆記本。

「剛才我整理到哪了……哦對,程遠那傢伙陪著妹子去了小樹林,然後學了不少與『程式』相關的知識回來。哎,真羨慕那個傢伙還有人可以討論問題,我就只能盼著身邊的幾隻菜鳥早一點開竅……好吧,小魚不算菜鳥,但是不知道為什麼,她總是拿眼神戳我啊!」

「哎,真是的。」程原越想越沮喪:「所以說沒事不要做什麼程序員,只能當單身狗不說,就算天天為別人幫忙也會被鄙視!真是太過分了!」

上一章書籍頁下一章

核芯位面

···
加入書架
上一章
首頁 科幻靈異 核芯位面
上一章下一章

第99章 程式入門(結):薪傳

%