官术网_书友最值得收藏!

譯者序

一次和上小學(xué)的兒子Vita閑聊,我隨口問(wèn)道:“你的筆記本電腦內(nèi)存是多大的來(lái)著?”他不假思索地回答:“好像是512 GB的吧。”我遲疑了一下,原來(lái)對(duì)他來(lái)說(shuō),“內(nèi)存”指的是磁盤的存儲(chǔ)容量,而不是RAM。

Vita學(xué)習(xí)編程有幾年了,論算法他可能比我上中學(xué)的時(shí)候懂得還多,但有時(shí)依然會(huì)搞不清這種看似很基礎(chǔ)的概念,但仔細(xì)一想也不怪他。實(shí)際上,生活中很多人會(huì)把手機(jī)的存儲(chǔ)容量稱為“內(nèi)存”,甚至有時(shí)連廠商自己也會(huì)這么說(shuō),其中一個(gè)原因是普通用戶在使用手機(jī)、筆記本電腦等設(shè)備時(shí),根本不需要關(guān)注RAM,因?yàn)椴僮飨到y(tǒng)已經(jīng)把它管理得妥妥的。相對(duì)地,磁盤存儲(chǔ)容量肯定更吸引用戶的關(guān)注,畢竟當(dāng)你存太多視頻的時(shí)候,系統(tǒng)就會(huì)毫不猶豫地“報(bào)警”。

隨著技術(shù)的發(fā)展,使用計(jì)算機(jī)設(shè)備的門檻越來(lái)越低,普通用戶也不再需要關(guān)心那些底層的東西。對(duì)大部分人來(lái)說(shuō),操作系統(tǒng)是預(yù)先裝在電腦里,一開機(jī)就可以使用的,而應(yīng)用程序則在安裝之后雙擊就可以運(yùn)行,至于驅(qū)動(dòng)程序,很多用戶甚至從未聽說(shuō)過(guò)這個(gè)詞。但回想30年前,在我上小學(xué)第一次接觸計(jì)算機(jī)的時(shí)候,用的還是DOS操作系統(tǒng),玩?zhèn)€游戲還得額外啟動(dòng)DOS4GW才能獲得完整的4 GB內(nèi)存尋址能力,甚至連鼠標(biāo)也要先手工加載驅(qū)動(dòng)程序才能使用,即便到了Windows 95的時(shí)代,在“即插即用”技術(shù)普及之前,手工安裝驅(qū)動(dòng)程序以及解決各種設(shè)備沖突依然是家常便飯。Vita聽了之后表示:“這么麻煩還怎么愉快地用電腦呢?”我回答說(shuō):“有句話說(shuō)得好——哪有什么歲月靜好,只是有人負(fù)重前行。那些臟活累活并沒有憑空消失,只是操作系統(tǒng)默默地幫你處理掉了而已,作為一個(gè)計(jì)算機(jī)科學(xué)愛好者,了解這些‘看不見’的東西也是很有必要的。”

除了操作系統(tǒng)和硬件設(shè)備,在軟件開發(fā)層面,程序員也越來(lái)越不需要關(guān)心底層原理了。特別是很多學(xué)編程的孩子,對(duì)一些重要的底層原理缺乏理解,當(dāng)然這和教育機(jī)構(gòu)在教學(xué)過(guò)程中沒有將這些原理滲透給他們有一定的關(guān)系。Vita曾經(jīng)在用Scratch編寫一個(gè)自動(dòng)生成迷宮的程序時(shí)遇到兩個(gè)問(wèn)題:一是Scratch中沒有多維數(shù)組;二是Scratch中沒有函數(shù)局部變量,在函數(shù)遞歸調(diào)用時(shí)變量的值會(huì)被覆蓋。其實(shí)這兩個(gè)問(wèn)題本質(zhì)上都是他對(duì)高級(jí)編程語(yǔ)言提供的特性過(guò)于依賴,而對(duì)其底層原理不夠了解所導(dǎo)致的。對(duì)于問(wèn)題一,如果知道多維數(shù)組在內(nèi)存中也是連續(xù)存放的,就不難想到可以把一維數(shù)組映射成多維數(shù)組來(lái)使用;對(duì)于問(wèn)題二,如果知道局部變量在底層都是用棧來(lái)存放的,就不難想到可以用數(shù)組手工模擬一個(gè)棧來(lái)實(shí)現(xiàn)遞歸調(diào)用中的變量值的暫存和恢復(fù)了。

通過(guò)這個(gè)例子,Vita切身體會(huì)到了解底層原理對(duì)解決編程問(wèn)題所帶來(lái)的幫助。不僅僅是孩子,很多學(xué)習(xí)編程的成年人以及職業(yè)程序員或許也碰到過(guò)類似的情境。如果對(duì)程序運(yùn)行的底層原理有深入的理解,這些問(wèn)題就可以迎刃而解,而能不能快速妥當(dāng)?shù)亟鉀Q這些問(wèn)題,往往能夠體現(xiàn)出程序員專業(yè)水平的高低——正如本書作者所說(shuō),只有理解程序的工作原理,才能真正提高技術(shù)水平。

很榮幸能夠成為《程序是怎樣跑起來(lái)的》第3版的譯者。這是一本暢銷多年的經(jīng)典作品,自2015年引進(jìn)出版以來(lái)廣受讀者好評(píng)。在這本書中,作者以深入淺出的方式梳理了程序員應(yīng)當(dāng)關(guān)心卻經(jīng)常忽視的基礎(chǔ)知識(shí)。在這次的第3版中,作者在對(duì)原有內(nèi)容進(jìn)行修訂的基礎(chǔ)上,還增加了機(jī)器學(xué)習(xí)和Python的相關(guān)章節(jié),既適合計(jì)算機(jī)科學(xué)愛好者和新手程序員入門學(xué)習(xí),也適合有一定經(jīng)驗(yàn)的程序員用來(lái)鞏固基礎(chǔ),查漏補(bǔ)缺。希望各位讀者都能通過(guò)閱讀本書有所收獲。

 

周自恒

2022年6月于上海

主站蜘蛛池模板: 门源| 喜德县| 天水市| 江都市| 苏尼特右旗| 阿荣旗| 尖扎县| 达州市| 米脂县| 防城港市| 行唐县| 荃湾区| 葫芦岛市| 南澳县| 青河县| 黎平县| 区。| 北辰区| 卢龙县| 承德县| 闸北区| 铁岭市| 原平市| 三江| 榆树市| 合水县| 时尚| 巴中市| 宜都市| 西乡县| 黔西县| 景德镇市| 平凉市| 黄骅市| 洪湖市| 松原市| 安多县| 沙洋县| 荔浦县| 元阳县| 陇西县|