冒號課堂

出版時間:2009年10月  出版社:電子工業(yè)出版社  作者:鄭暉  頁數(shù):476  字?jǐn)?shù):570000  
Tag標(biāo)簽:無  

內(nèi)容概要

本書是以編程范式和抽象機制為主線闡述編程設(shè)計思想的圖書。它以編程語言為形、以編程范式為神、以抽象機制為本,采用課堂對話的形式講述編程要義,深入淺出、寓教于樂。其中編程范式以O(shè)OP為重點,編程語言以C++、Java和C#為主。書中上半部著重介紹一些常用的編程范式,并對流行的編程語言的主要特色和應(yīng)用范圍作了簡明扼要的介紹。書中下半部對OOP的核心概念和思想進(jìn)行了細(xì)致而深入的剖析,而后闡述了一些重要的設(shè)計原則和思想,并讓它們在經(jīng)典的設(shè)計模式中得到印證。

書籍目錄

上篇:編程范式與編程語言  第1課 開班導(dǎo)言    1.1 開班發(fā)言——程序員的4層境界    1.2 首輪提問——什么語言好?    1.3 語言選擇——合適的就是好的    1.4 初識范式——程序王國中的世界觀與方法論    1.5 開發(fā)技術(shù)——實用還是時髦?  第2課 重要范式    2.1 命令范式——一切行動聽指揮    2.2 聲明范式——目標(biāo)決定行動    2.3 對象范式——民主制社會的編程法則    2.4 并發(fā)范式——合作與競爭  第3課 常用范式    3.1 泛型范式——抽象你的算法    3.2 超級范式——提升語言的級別    3.3 切面范式——多角度看問題    3.4 事件驅(qū)動——有事我叫你,沒事別煩我  第4課 重溫范式    4.1  函數(shù)范式—-精巧的數(shù)學(xué)思維    4.2 邏輯范式——當(dāng)算法失去了控制    4.3 匯總范式——一張五味俱全的大烙餅    4.4 情景范式——餐館里的編程范式  第5課 語言小談    5.1  教學(xué)計劃——接下來的故事    5.2 數(shù)據(jù)類型——規(guī)則與變通    5.3 動態(tài)語言——披著彩衣飛舞的腳本語言    5.4 語言誤區(qū)——語言的宗教情結(jié)  第6課 語言簡評    6.1  系統(tǒng)語言——權(quán)力的雙刃劍    6.2 平臺語言——先搭臺后唱戲    6.3 前臺語言——視覺與交互的藝術(shù)    6.4 后臺腳本——敏捷開發(fā)的利器下篇:抽象機制與對象范式  第7課 抽象封裝    7.1 抽象思維——減法和除法的學(xué)問    7.2 數(shù)據(jù)抽象——“做什么”重于“怎么做”    7.3 封裝隱藏——包裝的講究  第8課 抽象接口    8.1  軟件應(yīng)變——隨需而變,適者生存    8.2 訪問控制——代碼的多級管理    8.3 接口服務(wù)——講誠信與守規(guī)矩  第9課 繼承機制    9.1  繼承關(guān)系——繼承財富,更要繼承責(zé)任    9.2 慎用繼承——以謹(jǐn)慎之心對待權(quán)力  第10課 多態(tài)機制    10.1 多態(tài)類型——靜中之動    10.2 抽象類型——實中之虛  第11課 值與引用    11.1 語法類型——體用之分    11.2 語義類型——陰陽之道  第12課 設(shè)計原則    12.1  間接原則——柔勝于剛,曲勝于直    12.2 依賴原則——有求皆苦,無欲則剛    12.3 肉聚原則——不是一家人,不進(jìn)一家門    12.4 保變原則——與魔鬼打交道的藝術(shù)  第13課 設(shè)計模式    13.1 創(chuàng)建模式——不要問我從哪里來    13.2 結(jié)構(gòu)模式——建筑的技巧    13.3 行為模式——君子之交淡如水    13.4 閉班小結(jié)——軟件無形,編程有道索引設(shè)計手記編輯手記

章節(jié)摘錄

  上篇:編程范式與編程語言  第1課 開班導(dǎo)言  1.1 開班發(fā)言——程序員的4層境界  講解  冒號開了個程序員提高班,今天迎來了首期學(xué)員,他們是問號、句號、逗號、引號和嘆號,皆為IT業(yè)的新兵。望著臺下洋溢著青春與渴望的臉龐,冒號開始了他的開班發(fā)言——  大家好!先自我介紹一下,本人姓冒名號字解之。諸位不必叫我老師,就叫老冒好了。比在座各位癡長幾歲,“老”是擔(dān)得的,“師”卻不敢妄言。在下編程多年,自覺小有所成,不敢專藏,特開此班與眾共享。雖系一家之言、一孔之見,若能拋磚引玉,又何懼方家之哂?疏謬之處,還望海涵斧正,不致自誤誤人?! 】吞滓旬叄詺w正傳。本班主要采取討論的形式,只要是軟件開發(fā)中值得討論的,但凡本人力之所及,均可共同探討。  本班的宗旨是:學(xué)會不如會學(xué),會學(xué)不如會用,會用不如被用。對于一個軟件開發(fā)者來說,這意味著4個階段:  學(xué)會(知其所然)——掌握一些具體編程知識的初級程序員。  會學(xué)(知所以然)——能快速而深刻地理解技術(shù)并舉一反三的程序員。  會用(人為我用)——能將所學(xué)靈活運用到實際編程設(shè)計之中的高級程序員?! ”挥茫ㄎ覟槿擞茫茉O(shè)計出廣為人用的應(yīng)用程序(application)、庫(Library)、工具包(toolkit)、框架(framework)等的系統(tǒng)分析師和架構(gòu)師?! ≈劣诒挥玫母邔哟危绨l(fā)明出主流的設(shè)計模式、算法、語言,乃至理論等,則可稱得上計算機專家了。本班的目的,正是為各位向更高階段的提升助一臂之力。  大家可能都習(xí)慣了在小學(xué)、中學(xué)和大學(xué)里的課堂,那里的知識大多是系統(tǒng)而完備且貌似終極的,那里的學(xué)習(xí)大多是單向而被動的。但習(xí)慣并不意味著享受,更多的是因為別無選擇。你們曾被引入一座座知識殿堂,被告知它們?nèi)绾蚊垒喢缞J、巧奪天工,盡管很多時候你們或不以為然、或不解其妙,但還是不得不記下每一處被指點的細(xì)微結(jié)構(gòu)。很少有人帶你們看看當(dāng)初為建造這些殿堂而打下的地基、搭設(shè)的腳手架,哪怕只是上漆前的模樣也好,更遑論一瞻數(shù)易其稿的設(shè)計圖紙了。那些與殿堂相比顯得有些原始、甚至丑陋的東西,被有意無意地?fù)踉谝暰€之外??蓻]有那些,你們將來如何為這些宮殿添磚加瓦,又如何另起樓閣呢?  ……

編輯推薦

  《冒號課堂:編程范式與OOP思想》以課堂對話的形式講述編程要義?! ≡u點編程語言,闡發(fā)軟件設(shè)計思想。  寓莊于諧,深入淺出。

圖書封面

圖書標(biāo)簽Tags

評論、評分、閱讀與下載


    冒號課堂 PDF格式下載


用戶評論 (總計23條)

 
 

  •   自認(rèn)沒能耐評論這書,所以轉(zhuǎn)一下豆瓣里,另一位大牛Milo Yip的評論:
    ****://book.douban****/review/3395468/
      首先聲明,自從2010年初開始寫書評后,偶然認(rèn)識本書作者。因?qū)Ρ緯鴥?nèi)容感興趣,才從當(dāng)當(dāng)自購本書,并承諾會寫書評。但本人因同時間開始業(yè)余翻譯工作,共花了數(shù)月才讀畢本書。為保持盡量客觀獨立,本文刊登前并未經(jīng)他人審閱。
      
      本書分為兩部分,上篇為“編程范式與編程語言”,下篇為“抽象機制和對象范式”。先分別談上下篇,再談綜合感想。
      
      上篇‧編程范式與編程語言
      
      編程語言向來是計算機世界里的信仰話題,時常產(chǎn)生各種口舌之爭。但編程語言不是自然語言,編程語言并非因巴別塔或地域而造成混亂,而是人類為了用不同的思考方式,方便解決不同的問題,而去設(shè)計各式各樣的編程語言。要為特定問題選擇合適的編程語言,并把語言使用得流利、地道,我們需要的不僅是文法(語法和語意),最重要是學(xué)習(xí)使用語言的設(shè)計哲學(xué)。而每個語言在設(shè)計上支持不同的編程范式(programming paradigm),例如過程式、函數(shù)式(FP)、面向?qū)ο?OOP)、元編程等等。林林總總的范式,代表用不同的思考方式去編程。
      
      雖然本人在學(xué)生涯中曾學(xué)習(xí)過不同種類的編程語言,但是工作上主要使用支持OOP的語言。可能由于沒學(xué)過編譯原理,更少機會接觸不同編程語言及范式的理論基礎(chǔ)。本篇是一個不錯的簡介。尤其是當(dāng)中比較新的發(fā)展,如并發(fā)/并行、函數(shù)、切面等范式,本人一直沒有特別關(guān)注,所以本書對我而言可作為一個當(dāng)代編程語言現(xiàn)況的簡介。本篇雖然涉及不少思想概念,但以廣度為主,深度為次,覺得內(nèi)容像科普,讀得有趣又輕松。
      
      下篇‧抽象機制和對象范式
      
      第7至10章主要談OO的幾個重要概念,包括封裝、繼承和多態(tài)。但其內(nèi)容摒棄一般的直觀式解釋,而是深入地討論這些概念的定義,分析使用動機,以及使用時的原則。文中舉出的例子也十分有意思,例如多次描述Java SDK類庫里某些類的設(shè)計問題,應(yīng)如何避免等。在語言方面,經(jīng)常比較C++、Java和C#怎樣實現(xiàn)一些面向?qū)ο蟾拍?,指出很多語言間的細(xì)節(jié)差異。由于我常用的編程語言是C++,對值和引用的語意不夠敏感,覺得作者用第11章一整章專門討論這個題目,對我有所得著。第12章對我則可重溫一些SOLID等原則。第13章專門討論設(shè)計模式,但篇幅略短,對一般入門者可作為簡介。
      
      綜合感想
      
      先談一些個人經(jīng)歷。我是由Basic和C等過程式語言踏入編程之門,那時覺得過程式的思想很自然,只是把問題分而治之。五、六年后,再自學(xué)C++,發(fā)覺語法雖然有些復(fù)雜,但最大問題,是改變不了思想去用面向?qū)ο笤O(shè)計。那時候讀的C++書籍,主要篇幅集中在語法上,只是以一些很簡單的例子(如常見的***plex、Linked List和Shape)去說明OOP,心里覺得很不踏實。例如當(dāng)時會思考,一個足球游戲中,過程如何變成對象:
      
      void Kick(Player* player, Ball* ball, Vector* direction);
      
      應(yīng)該改寫成以下哪一個樣子呢?
      
      void Player::Kick(Ball& ball, const Vector& direction);
      void Ball::Kick(Player& player, const Vector& direction);
      
      回頭看來,其實問題在于,當(dāng)時缺乏把需求以對象方式抽象的思維,只是想把過程式的寫法用C++語法表示出來。后來發(fā)現(xiàn)必須認(rèn)真學(xué)習(xí)面向?qū)ο笤O(shè)計,便開始閱讀Booch大神的《Object Oriented Analysis and Design with Applications》。正值高中之年,感到此書艱澀非常。此后,經(jīng)歷多年,透過閱讀一些UML書籍,以及設(shè)計方面的書籍如《Design Patterns: Elements of Reusable Object-Oriented Software》、《Agile Software Development, Principles, Patterns, and Practices》等等,配合更多的實踐,才感到習(xí)慣了基本的面向?qū)ο笤O(shè)計方式。
      
      雖然以上提及到的都是好書,但如果當(dāng)年有這本《冒號課堂》,相信能更容易地掌握一個全局觀,也更有效地有系統(tǒng)地學(xué)習(xí)這些知識。本書的內(nèi)容非常嚴(yán)謹(jǐn),我沒有找到任何筆誤錯漏,內(nèi)容編采有原創(chuàng)性,文字水平也高,我覺得完全不亞于英文書籍,甚至可考慮出版英文版。個人建議,正在學(xué)習(xí)或使用OOP語言的朋友,可先閱本書,再看相關(guān)的參考文獻(xiàn)。本書時效長久,相信多年以后,仍可不時翻閱,溫故知新。
      
      意見方面,本人覺得本書內(nèi)地版封面是一敗筆。對沒讀過作者的博客,內(nèi)地版書名亦欠吸引力。若非作者介紹,也沒注意到這本書。另外,可能由于個人閱讀習(xí)慣,會跳過摘要、預(yù)覽、提問等環(huán)節(jié),直接閱讀內(nèi)文。參考條目方面,個人較喜歡置于書末,而非置于節(jié)末。不過這些都是個人喜好而已,各有利弊。但比較混亂的,是采用中括號(如[1])去同時表示腳注和參考條目。此外,可能由于我中文的不足,文中經(jīng)常遇到不認(rèn)識的中文字,詢問太太,她說很多都是小說常用的,而我基本上不看小說。不知道是否可以像simple English一樣,盡量采用常用簡單的文字,但這樣風(fēng)格可能會有所不同。
      
      最后還有一點值得留意,本書采用對話形式的文體,內(nèi)容圍繞冒號老師和他的幾位學(xué)生之間的對話。這是我第一次閱讀這種文體的技術(shù)書籍。對話生動,人物性格突出。這令我想起《論語》中,孔子和學(xué)生們以對話形式進(jìn)行有教無類、因材施教的教學(xué)。我羨慕這種理想的小班教學(xué)模式,希望自己能成為其中的學(xué)生。但是,教育界里,有多少位老師能有如此學(xué)識,又能如此開放地和學(xué)生進(jìn)行討論交流呢?假如,我能上這樣的課……
    你認(rèn)為這篇評論: 有用 38 沒用 1
  •   這本書原先一直在網(wǎng)上看,痛定思痛還是買到手上,有空時常翻翻

    對編程范式做了很簡單的介紹,通俗易懂

    但是覺得對范式之間的比較好像不是很足,總體來說是本很不錯的入門書籍
  •   編程范式,比較新穎的感念
  •   看了一半,忍不住上來發(fā)表評論,范式部分寫的很好,適合各層次讀者(超級高手除外),難能可貴的是編程基礎(chǔ)薄弱的人也能從中汲取豐富的營養(yǎng),用作者的話說是在心中種下了種子,確實是好書!
  •   如果你想深入思考編程的真諦,你一定要看此書,它會帶你登堂入室!

    如果你想提高你設(shè)計編程的實力,你一定要學(xué)習(xí)此書,它會帶給你的一雙翅膀,開拓你的眼界!
  •   這本書很值得一讀,但還是要有一點編程基礎(chǔ)才行。
  •   絕對精華,不看后悔,里面的思想夠消化一陣的
  •   書不錯,很喜歡,語言幽默,讓枯燥的知識變的更有趣,讀起來很輕松。修煉內(nèi)功、開闊視野的好書。
  •   我的基礎(chǔ)一般,看了覺得很受用。但是覺得不過癮,只是作了一個介紹,沒有深入寫
  •   尋覓已久想要得到的書。。
  •   值得反復(fù)回味的書
  •   很不錯,漲了見識。
  •   如果希望向架構(gòu)師方向發(fā)展,這是我看過的國內(nèi)最好的原創(chuàng)書籍之一
  •   幾年前在blog上看到 冒號課堂 久久不能忘懷,里面雖然有很多不懂的地方,可讓我大開眼界了,期待作者再出書,本想連<大話設(shè)計模式> 一起買的.畢竟看了二遍,可感覺還是不夠,特別是最后面的模式PK賽.寫的太好了,在伍迷的博客上看到他最近出新書了,所以打算等這二本書合訂成一本后再買。。
  •   從書的一開始我就被深深的吸引了,作者在第一部分將了一些編程范式,而且總結(jié)的很詳細(xì)和深入。最主要的不是很刻板的講述一些東西,讓人看的心曠神怡。第二部分還真在看的過程中,已經(jīng)有了良好的感覺。因暫時每看完就不多說!
  •   關(guān)于OOP的資料實在是太多了,現(xiàn)實中環(huán)境也很常見,前半部分關(guān)于范式的內(nèi)容能否給個導(dǎo)讀和實踐指南。書我只知道 lisp 和scheme的一部分書籍,還有程序設(shè)計語言概念和結(jié)構(gòu),erlang的幾本書。
  •   很強大的一本書,對進(jìn)一步登堂入室很有幫助??催@本書之前,最好是有OO的編程基礎(chǔ),已經(jīng)對面向?qū)ο笥幸欢ǖ恼J(rèn)識。
  •   文字?jǐn)⑹龅暮芏唷??!?/li>
  •   很好,就是有點虛無縹緲。
  •   看了一些,感覺不錯,贊嘆作者的文字功底,語言詼諧,準(zhǔn)確。
  •   我看的有點暈,自己水平太次了。
  •   看完以后沒太多了解 雖然關(guān)于描述的很多 但實際上講解的內(nèi)容還是對于工作也好 沒有太大的幫助 程序員不太需要知道這么多
  •   每頁1/4空白,1/5廢話,每個章節(jié)后的總結(jié)不倫不類
 

250萬本中文圖書簡介、評論、評分,PDF格式免費下載。 第一圖書網(wǎng) 手機版

京ICP備13047387號-7