隨著現實世界的逐漸毀滅,林易東所在的遊戲世界也在逐漸毀滅。
而在現實世界徹底毀滅之前,林易東所在的遊戲時間便先一步徹底毀滅了。
四周到處都是「0」和「1」,以及世界毀滅後留下的一堆殘渣。
林易東隨手撿起一塊塗鴉轉頭,而後將其捏成了一堆的「0」和「1」。
林易東隨手撈起一把「0」和「1」,而後看著它們在手裡靜靜地躺著。
本書首發天天看小說->𝚝𝚝𝚔.𝚝𝚠,提供給你無錯章節,無亂序章節的閱讀體驗
事實證明,「0」和「1」並不是沙子。
但也正因為如此,林易東心想,也許自己可以用「0」和「1」整點啥。
整根火柴?
不對,應該先弄一些基本構造。
如此想著,林易東開始試著撿起一些「0」和「1」,並將他們拼湊在一起。
「0」後面加個「1」,「1」後面加個「0」,「0」後面加個「0」,「1」後面加個「1」,諸如此類。
「0」是0,「00」是0,「000」是0;「0」是0,「01」是1,「011」是3;「1」是1,「10」是1,「100」是1;諸如此類。
「計算機語言?」
林易東眼前一亮,
「二進位?!」
林易東開始在自己腦子裡不斷地尋找著,
「也許我真的可以整點啥。」
林易東清楚的記得,計算機能處理二進位,二進位是處理器的「母語」。
或者說,它們只能理解二進位,這叫「機器語言「或「機器碼「。
在計算機早期階段,人們必須用機器碼寫程序。
具體來講,會先在紙上寫一個「高層次版」。
比如,偽代碼。
而在紙上寫好後,他們便會用「操作碼錶」把偽代碼轉成二進位機器碼。
一頓操作後,他們便可以將自己想要的程序餵入計算機並運行。
但這麼實在過於繁瑣,所以人們很快就厭煩了。
於是,人們整出了「助記符」。
「助記符」後面緊跟數據,形成完整指令。
當然,CPU表示:
「我根本不能理解文字,我只能理解二進位。」
但這不是問題,人們很快就解決了它。
人們意識到,他們可以寫二進位程序來幫忙。
它可以讀懂文字指令,自動轉成二進位指令。
這種程序呢,它就叫彙編器。
隨著時間推移,彙編器有越來越多功能,讓編程更容易。
林易東記得,其中一個功能是自動分析JUMP地址。
然而,即使彙編器有這些厲害功能,比如自動跳轉。
但是,彙編只是修飾了一下機器碼。
想著想著,林易東想到了更多東西。
林易東想到了紡織業,以及雅卡爾織布機。
當時的人如果只想織一塊紅色大桌布,可以直接放紅線進織布機。
但如果想要圖案怎麼辦?
比如條紋或者方格。
這時,工人就需要每隔一會兒調整一次織布機。
因為非常消耗勞動力,所以圖案紡織品很貴。
而特定位置有沒有穿孔,決定了線是高是低,橫線是從上還是從下穿過。
為了讓每行圖案不同,紙卡連成長條,形成連續指令。
而這,也許就是最早的編程。
事實證明,穿孔紙卡便宜、可靠、也易懂。
近一個世紀後,穿孔紙卡被廣泛用於人口普查。
一張卡存一個人的信息,比如性別、婚姻狀況、子女數量、出生地等等。
針對每個問題,人口普查工作者會在對應位置打孔。
當卡片插入匯總機,孔會讓對應總和值「+1」。
可以插入整個國家人口的卡片,在結束後得到各個總值。
值得注意的是,早期匯總機不算計算機,因為它們只做一件事。
那就是匯總數據,操作固定,不能編程。
穿孔紙卡存的也不是程序,而是數據。
之後很多年,這些機器被不斷加強。
可以做減、乘、除,甚至可以做一些小決定。
舉個例子,比如決定何時執行某指令。
為了正確執行不同計算,程式設計師發現自己需要某種控制面板。
他們構思了一種控制面板,在這塊面板上有很多小插孔。
他們希望自己可以插電線,讓機器的不同部分互相傳數據和信號。
但不幸的是,這意味著運行不同程序要重新接線。
所以程式設計師們不斷改善著「插線板」,並最終使它變成了可拔插的。
這一創舉,讓編程更方便,也可以給機器插入不同程序。
比如,一個插線板算銷售稅,另一個算工資單。
某段時間內,這樣做非常的流行。
但因為早期計算機非常昂貴,停機幾個星期只為換程序,這一點人們完全無法接受。
因此,人們急需更快、更靈活的新方式來編程。
「是什麼呢?」
一邊回想著自己當初上課時看的書,林易東的雙手一邊也在無意識的撥動著,
本小章還未完,請點擊下一頁繼續閱讀後面精彩內容!
「到底是什麼呢?」
對了,是因為內存變得價格下降,容量上升。
於是人們發現,與其把程序存在插線板,存在內存似乎可行。
而且這樣做,程序也更易於修改、也更方便CPU快速讀取。
而這類機器,似乎叫做「存儲程序計算機」。
如果內存足夠,不僅可以存要運行的程序,還可以存程序需要的數據。
包括程序運行時產生的新數據,程序和數據都存在一個地方。
「叫啥來著?」
林易東撓了撓下巴,
「啥啥諾啥啥曼結構?」
命名好像是來自一個傑出的數學家和物理學家,那位老兄好像曾說過:
「我在思考比炸彈重要得多的東西,計算機。」
「我在思考比計算機重要得多的東西,造物。」
如此想著,林易東看向了自己身前這台筆記本。
打開筆記本後,林易東發現裡面啥都沒有。
撓了撓頭皮後,林易東把筆記本合上了。
林易東很清楚,編程的目的是完成既定的需求。
換言之,編程的過程就是一個不斷遇到問題、解決問題並最終滿足需求的過程。
而在完成需求的過程中所遇到的問題,它們被稱為風險。
一名程式設計師如果可以提前識別風險,並會在真正開始編碼之前解決掉風險,那麼他就算是邁入了架構師的門檻。
解決複雜問題的一個重要途徑是對問題進行拆解,將其轉換為簡單問題或已知問題,並逐一解決。
人類目前所有的知識體系,都是建立在人類對這個世界的認知中。
計算機的整個知識體系,自然也不例外。
這也就意味著在編程中所遇到的問題,基本上都是在認知範圍內可以解決的。
甚至可以借鑑一些特別樸素的生活經驗,來幫助人們尋找解決問題的方向。
想到這裡,林易東再次想到了「一生二、二生三、三生萬物」。
古人觀察到自然界中各種對立又相聯的現象,如天地、日月、晝夜、男女、上下等,以哲學的思維方式,抽象出「陰陽」的概念。
在如今科技飛速發展的時代,人們對事物的認知越發理性化。
有一種與「陰陽」相同的事物一直被人們所使用,那便是二進位。
乾卦,表示111;兌卦,表示110;
離卦,表示101;震卦,表示100;
巽卦,表示011;坎卦,表示010;
艮卦,表示001;坤卦,表示000。
正所謂:
「太極生兩儀,兩儀生四象,四象生八卦」
簡簡單單的陽爻和陰爻,似乎就能夠組成世間萬物。
「也許,我可以靠著簡簡單單的『1』和『0』創造一個世界?
屬於我的世界?」