關(guān)于我們
書單推薦
新書推薦
|
如何寫出好程序 ◆本書通過豐富的小提示、故事和關(guān)鍵術(shù)語的解釋,清晰地傳授各種編程技巧。書中包含Python、Java和Haskell的示例,無論你正在學(xué)習(xí)哪一種編程語言,都能幫助你獲得可移植的編程技能。 ◆首先介紹什么是好程序,然后討論如何理解編程語言和使用工具,以及如何確保程序不會(huì)丟失。接下來介紹如何讓程序清晰,如何測試、調(diào)試和優(yōu)化程序,以及如何獲得幫助。后介紹如何在課程作業(yè)和編程考試中取得好成績,以及如何選擇編程語言。 ◆學(xué)習(xí)編程并不僅僅是學(xué)習(xí)編程語言的細(xì)節(jié):要想成為一名優(yōu)秀的程序員,就必須成為調(diào)試代碼、測試代碼、編寫清晰代碼的專家,并且能解決遇到的任何疑難問題。同樣,要想在編程課程中獲得好成績,就必須學(xué)會(huì)如何在作業(yè)和考試中取得高分。 ◆本書通過豐富的小提示、故事和關(guān)鍵術(shù)語的解釋,清晰地傳授各種編程技巧。書中包含Python、Java和Haskell的示例,無論你正在學(xué)習(xí)哪一種編程語言,都能幫助你獲得可移植的編程技能。 ◆本書主要面向?qū)W習(xí)編程課程的學(xué)生以及編程初學(xué)者和希望提升編程技藝的程序員,能幫助你在課程中取得好成績,并有助于養(yǎng)成良好的軟件工程習(xí)慣,從而開發(fā)出易讀且高效的好程序。 ◆ 本書適合誰 如果你正在學(xué)習(xí)編程,那么本書再合適不過了。 如果你正在幫助其他人學(xué)習(xí)編程,本書也適合你。 如果你是一名專業(yè)的程序員,這本書不是為你準(zhǔn)備的但無論如何,歡迎你閱讀它。也許你愿意把它推薦給別人。我熱切期盼你的意見與建議。 ◆ 本書的結(jié)構(gòu) 學(xué)習(xí)編程的本質(zhì)是同時(shí)提升多項(xiàng)技能,因此我盡量在各章節(jié)之間加入了許多交叉參考資料,同時(shí)也留有足夠的自由度,讓你可以隨心所欲地在書中暢游。 第1~3章,讓我們開啟編程學(xué)習(xí)之旅。第4章將幫助你把正在學(xué)習(xí)的語言置于所有編程語言的視野中。第5~11章是本書的核心,你很可能會(huì)頻繁地翻閱這幾章。第12章和第13章專門講述如何在編程課程中取得好成績,如果你正在自學(xué)編程,完全可以跳過這些內(nèi)容。第14章和第15章是本書內(nèi)容的擴(kuò)展,希望能對你未來的編程生涯有所幫助。 ◆ 推薦序一 在1972年的圖靈獎(jiǎng)演講中,計(jì)算機(jī)科學(xué)家、軟件工程師Edsger Dijkstra回顧了自己作為荷蘭位程序員的一些經(jīng)歷和感悟。雖然在題為謙遜的程序員的演講中,Dijkstra饒有趣味地講述了自己早年從理論物理學(xué)轉(zhuǎn)向計(jì)算機(jī)科學(xué)的研究與實(shí)踐的故事,但是他的一些發(fā)現(xiàn)確實(shí)令人沮喪:社會(huì)對程序員的表現(xiàn)和他們的產(chǎn)品并不滿意。在計(jì)算機(jī)技術(shù)飛速發(fā)展的現(xiàn)實(shí)世界里,硬件產(chǎn)品的性能日益提升而價(jià)格卻不斷下降,同時(shí),人們對各種媒體上不惜筆墨地描述的人工智能、大數(shù)據(jù)技術(shù)、量子計(jì)算等新興領(lǐng)域的廣闊前景充滿向往。這一切都讓今天的程序員承擔(dān)著不可避免的壓力。如何寫出好程序正是每一位程序員都在思考和嘗試的事情。 雖然探討編程技藝的同道之人眾多,但是個(gè)體的經(jīng)驗(yàn)和結(jié)論可能千差萬別。以我本人為例,三十多年前初學(xué)編程的時(shí)候,我對程序員這一職業(yè)完全沒有概念。那時(shí)候,每個(gè)人都為自己獨(dú)特的任務(wù)來編寫程序,編程只是服務(wù)于主體目標(biāo)的一項(xiàng)邊緣工作。到了21世紀(jì),軟件工程作為一門學(xué)科已經(jīng)結(jié)出豐碩的果實(shí),軟件工程專業(yè)在很多高等院校也已生根開花。打開主流的招聘網(wǎng)站就會(huì)發(fā)現(xiàn),社會(huì)上對程序員這一工作的認(rèn)可度也已經(jīng)達(dá)到了相當(dāng)?shù)母叨。軟件成為人們生活、工作、學(xué)習(xí)、旅行、娛樂不可或缺的產(chǎn)品與服務(wù),軟件開發(fā)也被公認(rèn)為一項(xiàng)復(fù)雜的生產(chǎn)活動(dòng)。但是客觀地說,對于編程本身的研究好像并沒有激起太大的浪花。對那些渴望得到指點(diǎn)的初學(xué)者來說,找到如何寫出好程序的答案遠(yuǎn)不是一件輕而易舉的事情。 本書是一本名副其實(shí)的學(xué)習(xí)指南。不管是初學(xué)者,還是在鍵盤和屏幕前積累了不少開發(fā)經(jīng)驗(yàn)的在職程序員,養(yǎng)成良好的編程習(xí)慣都是事半功倍的關(guān)鍵。我們知道,職業(yè)運(yùn)動(dòng)員的日常訓(xùn)練內(nèi)容包括大量的體能訓(xùn)練,以及必不可少的動(dòng)作規(guī)范性練習(xí)。雖然這些訓(xùn)練看起來和比賽沒有直接的關(guān)聯(lián),但是沒有人能否認(rèn)好的成績來自嚴(yán)格而規(guī)范的訓(xùn)練。當(dāng)今社會(huì)對程序員的需求量較大,而優(yōu)秀程序員的供給存在巨大的缺口,這導(dǎo)致很多程序員并沒有經(jīng)過充分而合理的訓(xùn)練就直接投入賽場參與比賽。不能否認(rèn)實(shí)戰(zhàn)對于程序員成長的作用,正如無法否認(rèn)地基對于摩天高樓的決定作用一樣。測試、調(diào)試、優(yōu)化,讓程序清晰而簡潔,這些基本功恰好是一個(gè)程序員通向職業(yè)成功道路的鋪路石。一旦能夠開始編寫好程序,享受編程的樂趣,獲得職業(yè)的成就感,得到自身的滿足感,這一良性循環(huán)就充滿了正反饋。 作為愛丁堡大學(xué)的教授和軟件工程研究者,作者Perdita Stevens 并沒有板起面孔去寫一本嚴(yán)肅的教科書。讀者在這本書中可以體會(huì)到作者就像導(dǎo)游一樣,介紹了一段毫不枯燥的旅程。作者開啟的是循序漸進(jìn)的編程之旅:在旅途中,不僅用一些示例揭示希望表述的道理,還不斷使用有趣的知識點(diǎn)和言簡意賅的小提示引導(dǎo)讀者的注意力。更有意思的是,通過多年教學(xué)得出的經(jīng)驗(yàn),Stevens教授了解讀者會(huì)在哪里遇到困難,于是在這些地方給讀者提出了有價(jià)值的針對性建議。 本書的譯者有著軟件行業(yè)豐富的開發(fā)和管理經(jīng)驗(yàn),對于編程語言、開發(fā)工具和軟件工程實(shí)踐的出色理解無疑為翻譯本書提供了堅(jiān)實(shí)的基礎(chǔ)。整本書讀起來不僅非常順暢,對比原文還可以發(fā)現(xiàn),譯者非但沒有偏離原書作者的表達(dá)特點(diǎn),而且在一些細(xì)微之處用心地照顧到了中文讀者的閱讀習(xí)慣。 可以說,這是一本值得剛上手編程的學(xué)生一讀的好書。此外,對于有經(jīng)驗(yàn)的程序員,這本書也打開了一扇用不同視角審視編程藝術(shù)的窗口。 沈剛 華中科技大學(xué)軟件學(xué)院教授 ◆ 推薦序二 如果說現(xiàn)在是機(jī)器的時(shí)代,或者程序的時(shí)代,恐怕不會(huì)有人反對。事實(shí)上,程序已經(jīng)多到我們通常會(huì)忽略它們的存在了。游戲、手機(jī)、遠(yuǎn)程教學(xué)軟件,或者路邊絢麗多彩的廣告牌,背后都有程序在運(yùn)行。 每日與程序?yàn)榘,促使我們(nèi)W(xué)習(xí)如何編寫程序。 程序可以幫助我們解決復(fù)雜的問題,或者解決簡單但煩瑣的問題。不僅如此,學(xué)習(xí)編寫程序還可以幫助我們理解它,理解機(jī)器,進(jìn)而理解這個(gè)世界運(yùn)轉(zhuǎn)的規(guī)則。現(xiàn)在來看,如果存在兩個(gè)世界,一個(gè)是我們身處的物理世界,另一個(gè)是數(shù)字或者虛擬世界,那么程序就是連接這兩個(gè)世界的東西。我們借由程序,可以在這兩個(gè)世界之間自由穿行。 程序員可能會(huì)有不同的想法。在他們受到的訓(xùn)練里,寫程序是一件莊重又日常的事情。曾經(jīng)有一本著名的書《七周七語言》,講的是程序員如何在短時(shí)間內(nèi)掌握盡可能多的編程語言。是的,這對他們有莫大的吸引力。而且,一旦進(jìn)入程序的世界,你會(huì)發(fā)現(xiàn)那里跟色彩絢麗的廣告牌一樣豐富多彩。 程序員不僅要學(xué)會(huì)編寫程序,還要學(xué)會(huì)測試和調(diào)試程序。為了編寫大型程序,跟更多的程序員合作,他們要學(xué)會(huì)寫整潔的代碼,學(xué)會(huì)重構(gòu),讓代碼具有自解釋性和可維護(hù)性。這讓程序員更像是一個(gè)手藝人。 但這并不意味著你必須要成為一名程序員。 除了理解機(jī)器和這個(gè)世界,編寫程序其實(shí)可以是一件很好玩的事情,尤其是當(dāng)你看到計(jì)算機(jī)會(huì)聽你的話,按照你的程序執(zhí)行,得到你想要的結(jié)果的時(shí)候。慢慢地,你會(huì)發(fā)現(xiàn)你在用程序去表達(dá)你的想法,而且計(jì)算機(jī)可以理解它們,也就是理解你。 也許你會(huì)想到更多:除了方便自己,你的程序如何幫助更多的人呢?尤其是那些弱勢群體,如何讓他們生活得更好?如何讓你的程序符合道德倫理,拒絕侵犯隱私,后造福整個(gè)社會(huì)? 我想這才是好程序。 張凱峰 InfoQ社區(qū)編輯 ◆ 推薦序三 兩年前,我結(jié)束自己已從事十年的一線工作轉(zhuǎn)職成為一名程序員培訓(xùn)師。在近兩年的時(shí)間里,我在教學(xué)之余一直在思考與探索如何培養(yǎng)一名優(yōu)秀的程序員,并不斷總結(jié)與記錄教學(xué)經(jīng)驗(yàn)和對人員培養(yǎng)的理解。對于如何培養(yǎng)一名符合企業(yè)要求的、具備工程能力的程序員,主要的其實(shí)只有兩個(gè)方面:教會(huì)學(xué)員一門編程語言;幫助學(xué)員建立編程思維與解決問題的能力。 教會(huì)學(xué)員一門編程語言,這在整個(gè)教學(xué)活動(dòng)過程中是一件非常簡單的事情。通常在教學(xué)實(shí)踐中會(huì)從個(gè)Hello World開始,幫助學(xué)員理解程序的本質(zhì),同時(shí)驗(yàn)證學(xué)員所安裝的開發(fā)環(huán)境與開發(fā)工具的可用性。隨后便可以按部就班地從變量到數(shù)據(jù)類型這樣一路教下去,幫助學(xué)員弄懂每一個(gè)語法與函數(shù)的含義,通過在教學(xué)過程中使用大量的練習(xí)幫助其鞏固技能,終通過一個(gè)綜合性項(xiàng)目使其所學(xué)的技能得到綜合應(yīng)用。以上便是學(xué)習(xí)一門編程語言的路徑,也是許多程序員(包括我自己)學(xué)習(xí)一門編程語言的過程。 在教學(xué)實(shí)踐中幫助學(xué)員培養(yǎng)良好的編程思維與解決問題的能力,則是一件艱難而復(fù)雜的事情,也是決定教學(xué)水平高低的重要指標(biāo)。如果將學(xué)員從不會(huì)編程到學(xué)會(huì)編程形容為從0到1的過程,那從學(xué)會(huì)編程到可以編寫出更好的程序就是從1到100的過程,而這個(gè)過程也是決定該學(xué)員對于企業(yè)而言是屬于60分合格、80分優(yōu)秀還是100分卓越的關(guān)鍵。在這個(gè)過程中,學(xué)員的進(jìn)步無法通過掌握語法與類庫的累加來實(shí)現(xiàn),而是必須在原有的、通過模仿套用現(xiàn)有案例完成代碼堆疊的基礎(chǔ)能力上,增加代碼結(jié)構(gòu)設(shè)計(jì)能力、工程代碼管理能力以及代碼問題分析、定位、調(diào)試與解決能力才能實(shí)現(xiàn)?傮w而言,這個(gè)過程就是由掌握一門語言到可以獨(dú)立承擔(dān)一項(xiàng)工程研發(fā)任務(wù)的過程,其中核心的任務(wù)便是幫助學(xué)員培養(yǎng)良好的編程思維與解決問題的能力。 上述兩個(gè)方面在程序員的培養(yǎng)與成長過程中都非常重要,缺一不可。目前,市場上針對前者的課程、書籍與資料已經(jīng)稱得上汗牛充棟,但針對后者的學(xué)習(xí)資料卻很少,即便找到寥寥數(shù)本,要么內(nèi)容過于深?yuàn)W復(fù)雜,僅僅書籍的厚度就讓人望而生畏,要么太過零散簡潔,猶如武林高手秘傳的內(nèi)功心法一般,令新人無從下手。本書的出現(xiàn)剛好填補(bǔ)了這一空白,其由淺入深地向讀者講述了寫出好程序的思維與方法,并記錄了作者豐富的編程思考與經(jīng)驗(yàn)。 本書的譯者是國內(nèi)經(jīng)驗(yàn)極為豐富的工程實(shí)踐的優(yōu)秀推廣者,在其過往的工作中帶領(lǐng)并培養(yǎng)出了在業(yè)內(nèi)堪稱具有優(yōu)秀編程實(shí)踐的研發(fā)隊(duì)伍,對于研發(fā)人員的培養(yǎng)有深層次的體系化思考與實(shí)踐。 我相信,無論是剛開始學(xué)習(xí)編程的學(xué)員,還是初入職場的編程新人,或者是具有一定編程經(jīng)驗(yàn)的老兵,都可以從這本書中汲取到養(yǎng)分,收獲良多。同時(shí),這本書中的所思所得對于從事教學(xué)與培訓(xùn)行業(yè)的講師與課程設(shè)計(jì)師而言,也有非常高的學(xué)習(xí)、借鑒與參考價(jià)值。 宋俊毅 牛鷺學(xué)院聯(lián)合創(chuàng)始人 ◆ 推薦序四 在編程的世界里,我是一名逐夢者,一名造夢者,亦是一名售夢者。 懵懵懂懂、跌跌撞撞、迷迷茫茫之間,撞入了程序的領(lǐng)域,是慌張,是欣喜,是困難,也是收獲;蛟S和大部分人類似,初次接觸編程,并沒有激發(fā)我對編程的熱情,我只是在用背誦代碼的方式應(yīng)付考試。直到我發(fā)現(xiàn),助力我成功獲得份工作的,并不是我背誦的那些少得可憐的語法,而是不知道什么時(shí)候刻入我骨子里的clean code、思維方式和編程習(xí)慣。而伴隨著由之而來的良性循環(huán),我成了一名逐夢者。 編程是一種方式,是讓計(jì)算機(jī)做你想讓它做的事情,讓程序去解決現(xiàn)實(shí)中的問題。同時(shí)編程也是一門技藝,編寫優(yōu)雅的程序需要高超的技巧和相當(dāng)?shù)膶徝烙^,就像是譜一首樂曲,音調(diào)應(yīng)該是和諧的。在編程界,造夢者既在傾聽,又在獻(xiàn)策,既是趕工,又行美好,你需要捕獲難以捉摸的需求,并找到一種表達(dá)它們的方式,以便機(jī)器能夠輕松地理解。在項(xiàng)目時(shí)鐘的滴答聲中,趕工完成一項(xiàng)項(xiàng)工作的同時(shí),你每天都在一點(diǎn)點(diǎn)地創(chuàng)造奇跡。 結(jié)構(gòu)化思維在一定程度上指引著我們。先形成骨架,再去填充細(xì)節(jié),去豐滿內(nèi)容,思維就會(huì)有跡可循,布局就會(huì)頗有章法,解決問題就會(huì)更有效率。那么,在學(xué)習(xí)編程的初期,抑或在有頗多編程經(jīng)驗(yàn)之后再次回頭梳理時(shí),編程習(xí)慣的養(yǎng)成、抽象概念的提取,對于編程這條路來說,就像是提高了前進(jìn)的加速度。這本書清晰流暢、行云流水,言語之間無一不闡述著那些通用的編程技藝。閱讀本書,將從了解編輯器、IDE、版本控制、單元測試、測試程序、調(diào)試、重構(gòu)、防御式編程、優(yōu)化入手,磨煉基本功,進(jìn)而培養(yǎng)良好的編程習(xí)慣,形成專業(yè)的風(fēng)格和極致的治學(xué)態(tài)度,并在追求卓越的過程中積累習(xí)慣,將其變成編程道路甚至人生道路上的一種修養(yǎng),這也許是作者、譯者和我這名平凡的程序媛的售夢方式。 你、我,我們都已在編程的路上前行著,帶著修行者的信念,堅(jiān)定地前行著。我相信,若是歸途,星海共讀。 張喻 騰訊科技研發(fā)工程師 ◆ 譯者序 程序,在計(jì)算機(jī)尚未普及的年代,對我們來說是一個(gè)神秘而又高深的概念。然而,在如今的信息社會(huì),我們每天都會(huì)與各種各樣的程序打交道,我們的生活早已無法離開程序,程序已成為數(shù)字化時(shí)代的一部分。 也正是由于這個(gè)原因,越來越多的同學(xué)和我們一樣,選擇了程序員這份職業(yè)。無論是編程的初學(xué)者,還是具有一定經(jīng)驗(yàn)的程序員,抑或從業(yè)多年的技術(shù)專家,編寫出更清晰、更正確、更健壯的程序,都是我們追求的目標(biāo)。 現(xiàn)在,我們可以很容易地在市面上找到編程方面的書籍,它們或者是針對某一種語言的專業(yè)書刊,或者是某些技術(shù)細(xì)分領(lǐng)域的行業(yè)經(jīng)驗(yàn)分享。但很少能有這樣一本書:它通過具體的案例,清晰、系統(tǒng)地闡述編程技巧,并不限定于某一種語言,而是更關(guān)注傳授可移植的編程技能,讓讀者在掌握編程技巧的同時(shí),也能理解其背后的思想。這些思想,正是設(shè)計(jì)優(yōu)雅程序的精髓。 這是一本分享經(jīng)驗(yàn)與指引我們少走彎路的經(jīng)典書籍,針對如何設(shè)計(jì)優(yōu)質(zhì)的程序提出了實(shí)用、權(quán)威的指導(dǎo)。對初學(xué)者來說,它是一本不可或缺的入門指南;對從業(yè)多年的開發(fā)人員和技術(shù)專家來說,它也具有相當(dāng)高的參考價(jià)值。 我們幾個(gè)譯者是多年的同事和好友,也都在軟件行業(yè)摸爬滾打多年;叵肫鹪诮佑|編程的時(shí)候,從剛開始簡單的Hello World起步,再慢慢地開始編寫能工作的程序,到如今設(shè)計(jì)復(fù)雜的系統(tǒng)架構(gòu),我們都不可避免地碰到過各種問題,比如:代碼缺乏良好的可讀性,致使維護(hù)效率低下;工作中缺乏良好的備份習(xí)慣,導(dǎo)致返工的時(shí)候成本太高等。所幸我們通過各種探索和總結(jié),終克服了這些問題。在翻譯本書的過程中,我們多次感嘆:如果能在從業(yè)之初就接觸這本書就好了。 本書的作者Perdita Stevens是愛丁堡大學(xué)的教授,有著多年的編程和軟件工程教學(xué)經(jīng)驗(yàn),她將教學(xué)過程中的經(jīng)驗(yàn)提煉、總結(jié)并分享出來,我們在翻譯本書的過程中,就好像在與一位編程大師對話。在本書中,Perdita Stevens教授娓娓道出的內(nèi)容,對同樣是讀者的我們來說也是一筆寶貴的財(cái)富。 感謝我們的家人,本書的翻譯占用了我們大量的業(yè)余時(shí)間,對此他們給予了極大的理解與支持。更為可貴的是,在本書的翻譯過程中他們提供了很多專業(yè)的意見和建議。沒有他們的支持,我們是很難順利完成本書的翻譯工作的。 在本書的翻譯及出版過程中,機(jī)械工業(yè)出版社華章公司的編輯們逐字逐句地進(jìn)行檢查、校對和修改,從而提高了譯文的質(zhì)量。謝謝他們! 王磊 周訓(xùn)杰 萬學(xué)凡 ◆ 作者簡介 ◆ 佩蒂塔.史蒂文斯(Perdita Stevens)是愛丁堡大學(xué)的教授,曾教授多種編程語言的編程和軟件工程課程,學(xué)生涵蓋本科一年級學(xué)生到成熟的專業(yè)軟件開發(fā)人員。她與人合著了Using UML: Software Engineering with Objects and Components(1998),還因雙向轉(zhuǎn)換方面的工作獲得了2017年建模大會(huì)的10年極具影響力論文獎(jiǎng)和論文獎(jiǎng)。 ◆ 譯者簡介 ◆ 王磊,資深技術(shù)咨詢師,具有15年以上軟件開發(fā)經(jīng)驗(yàn),覆蓋金融、通信、互聯(lián)網(wǎng)、汽車等行業(yè)。對于微服務(wù)架構(gòu)、DDD、敏捷工程實(shí)踐、DevOps流程與技術(shù)、分布式開發(fā)、數(shù)據(jù)庫性能調(diào)優(yōu)、開發(fā)有著豐富經(jīng)驗(yàn),F(xiàn)任凱捷咨詢(中國)有限公司首席架構(gòu)師,譯有《Kubernetes 實(shí)戰(zhàn)》。 周訓(xùn)杰,資深技術(shù)咨詢師,代表譯作《演進(jìn)式架構(gòu)》,現(xiàn)任ThoughtWorks北美業(yè)務(wù)線技術(shù)負(fù)責(zé)人。擁有十多年軟件開發(fā)相關(guān)經(jīng)驗(yàn)。有著豐富的企業(yè)級和互聯(lián)網(wǎng)應(yīng)用的開發(fā)架構(gòu)實(shí)戰(zhàn)經(jīng)驗(yàn),擅長遺留系統(tǒng)改造及企業(yè)數(shù)字化平臺(tái)建設(shè)。 數(shù)字化轉(zhuǎn)型專家,InfoQ2020年度中國十大IT產(chǎn)業(yè)推動(dòng)者,F(xiàn)任凱捷咨詢(中國)有限公司AVP,首席咨詢顧問。《EDGE:價(jià)值驅(qū)動(dòng)的數(shù)字化轉(zhuǎn)型》《內(nèi)容智能:打贏每一場運(yùn)營戰(zhàn)爭》《AI重新定義企業(yè)》《回顧活動(dòng)引導(dǎo)》的譯者。 ◆第1章 介紹 1 1.1 本書適合誰 3 1.2 關(guān)于方框 4 1.3 本書的結(jié)構(gòu) 6 1.4 致謝 6 ◆第2章 什么是好程序 8 ◆第3章 如何開始 11 3.1 究竟什么是程序 11 3.2 你需要什么 12 3.2.1 使用交互式提示 13 3.2.2 使用文本編輯器 14 3.3 了解待辦任務(wù) 16 3.4 編寫程序 18 3.4.1 設(shè)置任務(wù) 19 3.4.2 朝著完全正確的代碼邁進(jìn) 24 3.5 感到困惑時(shí)怎么辦 25 ◆第4章 如何理解編程語言 29 4.1 編譯與解釋 30 4.2 類型 33 4.3 結(jié)構(gòu) 36 4.4 歷史、社區(qū)與動(dòng)機(jī) 38 4.5 范式 39 ◆第5章 如何使用工具 42 5.1 使用基本的工具 43 5.2 什么是IDE 44 5.3 展望 47 ◆第6章 如何確保程序不會(huì)丟失 48 6.1 立即恢復(fù):撤銷 49 6.2 基本災(zāi)難恢復(fù):文件 49 6.3 避免災(zāi)難:保存版本 51 6.4 流程自動(dòng)化:使用版本控制系統(tǒng) 52 6.5 管理未使用的代碼 54 6.6 備份和云 56 ◆第7章 如何測試程序 59 7.1 手動(dòng)測試 60 7.2 基本的自動(dòng)化測試 62 7.3 正確的自動(dòng)化測試 65 7.4 你應(yīng)該進(jìn)行哪些測試 66 7.5 應(yīng)該在何時(shí)編寫測試 68 7.6 基于屬性的測試 69 ◆第8章 如何讓程序清晰 72 8.1 編寫清晰的代碼對你有何幫助 72 8.2 注釋 74 8.3 名字 77 8.4 布局和留白 80 8.5 結(jié)構(gòu)和習(xí)慣用法 83 ◆第9章 如何調(diào)試程序 87 9.1 當(dāng)程序還無法運(yùn)行時(shí) 89 9.2 當(dāng)程序執(zhí)行錯(cuò)誤時(shí) 94 9.3 紙板調(diào)試法 103 9.4 如果這些都失敗了 103 9.5 修復(fù)bug 104 9.6 修復(fù)bug后 106 9.6.1 查找類似的bug 106 9.6.2 避免重復(fù)出現(xiàn)相同的bug 108 9.6.3 防御式編程 112 ◆第10章 如何優(yōu)化程序 114 10.1 可維護(hù)性 115 10.1.1 消除重復(fù) 116 10.1.2 選擇抽象 120 10.2 效率 122 10.3 重構(gòu) 126 10.4 提升技能 129 ◆第11章 如何獲得幫助 132 11.1 解決一般問題 133 11.2 解決具體問題 135 11.2.1 從錯(cuò)誤信息中獲得幫助 136 11.2.2 查找說明和有用的代碼 137 11.2.3 解決復(fù)雜的程序問題 138 11.2.4 尋求幫助 140 11.2.5 入門幫助 141 11.3 當(dāng)老師讓你困惑時(shí)怎么辦 142 ◆第12章 如何在課程作業(yè)中取得好成績 144 12.1 七條黃金法則 144 12.2 上機(jī)實(shí)驗(yàn) 146 12.3 課程設(shè)計(jì) 147 12.4 團(tuán)隊(duì)合作 148 12.5 演示 149 12.6 反思寫作 150 ◆第13章 如何在編程考試中取得好成績 152 13.1 準(zhǔn)備考試 153 13.1.1 了解考核內(nèi)容 153 13.1.2 用以前的試卷練手 154 13.1.3 考試規(guī)劃 155 13.2 考試中 155 13.3 書面考試的具體要點(diǎn) 156 13.4 上機(jī)考試的具體要點(diǎn) 156 13.5 選擇題考試 157 ◆第14章 如何選擇編程語言 159 14.1 需要考慮的問題 159 14.2 你可能遇到的幾種語言 162 14.3 語言環(huán)境的變化 164 ◆第15章 如何超越本書 166 15.1 編寫更多程序 166 15.2 特定的編程語言 167 15.3 一般編程 167 15.4 軟件工程 168 15.5 編程語言理論 170
你還可能感興趣
我要評論
|