冒號課堂

          新版《冒號和他的學生們》
          冒號課堂§10.2:抽象類型
               摘要: 抽象類型——實中之虛(介紹抽象類型的種類、意義及其用法

          ? 淺顯的比方只是門檻前的臺階,借之或可拾級入門,卻無法登堂入室

          ? 具體類型是創(chuàng)建對象的模板,抽象類型是創(chuàng)建類型的模塊

          ? 抽象數據類型的核心是數據抽象,而抽象類型的核心是多態(tài)抽象

          ? 必先以術養(yǎng)道,而后以道御術

          ? 以社會身份而非個人身份作為公民之間聯(lián)系的紐帶,正是針對接口而非實現(xiàn)來編程的社會現(xiàn)實版

          ? 個體身份對應的規(guī)范抽象借助封裝,以數據抽象的形式出現(xiàn)

          ? 家庭身份對應的規(guī)范抽象借助繼承,以類型層級的形式出現(xiàn)

          ? 社會身份對應的規(guī)范抽象借助多態(tài),以多態(tài)抽象的形式出現(xiàn)  閱讀全文

          posted @ 2009-10-28 08:16 鄭暉 閱讀(3461) | 評論 (0)  編輯

          《冒號課堂》上市
               摘要: 公告:《冒號課堂》已正式上市。  閱讀全文

          posted @ 2009-10-26 12:54 鄭暉 閱讀(2300) | 評論 (2)  編輯

          冒號課堂§10.1:多態(tài)類型
               摘要: 多態(tài)類型——靜中之動(通過實例展示多態(tài)類型的三種用法

          ? 繼承是多態(tài)的基礎,多態(tài)是繼承的目的

          ? 多態(tài)是動靜結合的產物,將靜態(tài)類型的安全性和動態(tài)類型的靈活性融為一體

          ? 前者(參數多態(tài))是發(fā)散式的,讓相同的實現(xiàn)代碼應用于不同的場合

          ? 后者(包含多態(tài))是收斂式的,讓不同的實現(xiàn)代碼應用于相同的場合

          ? 模板方法模式突出的是穩(wěn)定堅固的骨架,策略模式突出的是靈活多變的手腕  閱讀全文

          posted @ 2009-10-20 18:18 鄭暉 閱讀(3182) | 評論 (0)  編輯

          冒號課堂§6.4:后臺腳本
               摘要: 后臺腳本——敏捷開發(fā)的利器(簡談Perl、PHP、Python和Ruby
          ? 語言的發(fā)展趨勢一定是動靜結合、剛柔并濟
          ? Perl凝練晦澀,Python優(yōu)雅明晰,Ruby精巧靈動,PHP簡明單純
          ? 或許優(yōu)雅正是來自對細節(jié)和規(guī)范的重視
          ? (RoR)與Ruby結合之后,便如一只猱身而上靈貓,立刻襯托出Java和.NET大象般的身影  閱讀全文

          posted @ 2009-03-02 10:05 鄭暉 閱讀(3780) | 評論 (4)  編輯

          冒號課堂§6.3:前臺語言
               摘要: 前臺語言——視覺與交互的藝術(簡談VB、Delphi和JavaScript
          ? Delphi讓復雜的事情變得簡單,VB讓簡單的事情變得更簡單
          ? 它(JavaScript)宛如一只神奇的魔袋,乍看平淡無奇,卻總能變出意想不到的寶貝
          ? 待友之道,貴在放大其優(yōu)點而縮小其缺點,對待語言亦當如是
          ? 大道相通,難者亦易,易者亦難  閱讀全文

          posted @ 2009-02-22 21:57 鄭暉 閱讀(3594) | 評論 (4)  編輯

          冒號課堂§6.2:平臺語言
               摘要: 平臺語言——先搭臺后唱戲(簡談Java和C#
          ? Java的目的是讓一種語言在多種平臺上運行,而C# 的目的是讓多種語言在一種平臺上運行
          ? 兩個平臺語言(Java和C#),一個重在語言,讓語言向平臺擴散;一個重在平臺,讓平臺來凝聚語言
          ? C++提供了一馬平川的大路,也提供了陷阱密布的小道;Java則在大路上鋪設水泥,同時封鎖了捷徑小道;C#同樣填平了大路上的坑坑洼洼,但把一些小道上“此路不通”的牌子悄悄換成了“此路危險”  閱讀全文

          posted @ 2009-02-15 22:41 鄭暉 閱讀(3275) | 評論 (3)  編輯

          冒號課堂§6.1:系統(tǒng)語言
               摘要: 系統(tǒng)語言——權力的雙刃劍(簡談C、C++和D
          ? 通禪悟道者拈花不語,坐井觀天者蛙鳴鼓噪
          ? Java程序員大多被慣壞了,環(huán)保意識要淡薄得多
          ? (指針)用得好可以是削鐵如泥的神兵利器,用得不好則可能是自我毀滅的罪惡淵藪
          ? OOP又不是金子,含量越高越好。試圖把一切都裝進OOP的箱子里的想法無異于削足適履
          ? 它們(系統(tǒng)語言)的理念是:優(yōu)化機器的時間而不是人的時間,優(yōu)化機器的記憶而不是人的記憶;假設編譯器是愚蠢的而程序員是聰明的,因此賦予程序員更多的權利、義務與責任
          ? C++是匹無轡無鞍的野馬,看似桀驁不馴,若能順性而御,必能足踏飛燕,行千里而不勞  閱讀全文

          posted @ 2009-02-08 22:03 鄭暉 閱讀(3673) | 評論 (1)  編輯

          冒號課堂§5.4:語言誤區(qū)
               摘要: 語言誤區(qū)——語言的宗教情結(關于編程語言的一些誤區(qū)
          ? 如果說編程范式是一種文化,那么編程語言更像是一種宗教——盡管它本不該是
          ? 語言只有兩種:一種怨聲載道,一種無人問津
          ? 對待一門語言的態(tài)度應該是:與其抱怨爭執(zhí),不如揚長避短
          ? 過分拔高一種語言與抹煞語言之間的差別是兩種極端,皆為秕言謬說
          ? 這些人若有幸拜關公為師,他們最艷羨的一定他的赤兔馬和青龍偃月刀,或許還會抹紅臉蓄長須什么的,就是不太愿學他的蓋世武功
          ? 理想的架構師應當如文學大師,既有恢弘大氣的構思,又有細膩深刻的筆法;應當如統(tǒng)軍大帥,既有運籌帷幄的韜略,又有沖鋒陷陣的武功  閱讀全文

          posted @ 2009-01-19 08:46 鄭暉 閱讀(4636) | 評論 (4)  編輯

          冒號課堂§5.3:動態(tài)語言
               摘要: 動態(tài)語言——披著彩衣飛舞的腳本語言(動態(tài)語言簡談
          ? 程序是為終端用戶服務的,而腳本是為程序員服務的
          ? 動態(tài)語言秉承的一個理念是:優(yōu)化人的時間而不是機器的時間
          ? 待靜態(tài)語言披盔戴甲、備馬抬槍之際,動態(tài)語言已衣袂飄飄,長劍出手了
          ? 當腳本語言披上動態(tài)語言的彩衣,昔日不起眼的毛毛蟲便羽化成碟,開始飄舞在眾人追逐的目光之中  閱讀全文

          posted @ 2009-01-14 09:10 鄭暉 閱讀(3550) | 評論 (0)  編輯

          冒號課堂§5.2:數據類型
               摘要: 數據類型——規(guī)則與變通(關于數據類型的討論
          ? Duck類型的哲學是:名義不重要,重要的是能力
          ? 將一個會叫會游的家伙放進池塘看起來不算壞主意,但如果一艘輪船趁機也轟隆隆地開了進來,事情恐怕就不那么美妙了
          ? 靜態(tài)類型檢查類似“疑罪從有”的有罪推定制,動態(tài)類型檢查類似“疑罪從無”的無罪推定制
          ? 盡可能守規(guī)則,必要時求變通
          ? 規(guī)則如褲帶,過于寬松和過于束縛都不好  閱讀全文

          posted @ 2009-01-08 00:02 鄭暉 閱讀(3158) | 評論 (0)  編輯

          冒號課堂§5.1:教學計劃
               摘要: 教學計劃——接下來的故事(討論下一步教學計劃
          ? 編程水平的提升之道是:在實戰(zhàn)中演練招法,在招法中領會心法,心法反過來提升招法,進而提高實戰(zhàn)水平,如此循環(huán)往復呈螺旋式上升過程。正所謂熟能生巧,巧能生通
          ? 迭代學習法:即在具體知識與抽象理論之間進行折返式學習
          ? 網頁的迷人之處就在于,能夠用精美的畫皮來包裹冗長低效的代碼
          ? 無論干哪一行,要想勝任愉快,離不開四樣東西:才能、興趣、方法和努力  閱讀全文

          posted @ 2008-12-30 10:17 鄭暉 閱讀(2929) | 評論 (1)  編輯

          冒號課堂§4.4:情景范式
               摘要: 情景范式——餐館里的編程范式(編程范式在餐館中的應用
          ? 廚師只需提供一種服務:把紙上菜變成盤中菜,至于蒸、煮、炒、燉等具體做法純屬實現(xiàn)細節(jié)
          ? 可以這么理解(閉包):所謂包,指函數與其周圍的環(huán)境變量捆綁打包;所謂閉,指這些變量是封閉的,只能為該函數所專用
          ? 合理地使用閉包能使代碼更加簡潔清晰,散發(fā)出函數式特有的優(yōu)雅氣質
          ? 換盤子有兩種方式:一種是服務員主動換,一種是客人要求換。前者是輪詢,后者是通知
          ? 如果把待加工的菜看作數據,技法看作算法,將數據與算法分離,以算法為中心,那是什么范式?  閱讀全文

          posted @ 2008-12-21 23:18 鄭暉 閱讀(3109) | 評論 (1)  編輯

          冒號課堂§4.3:匯總范式
               摘要: 匯總范式——一張五味俱全的大烙餅(總結編程范式
          ? 設計模式好比組合套路,能在一些特定場合下克敵制勝;編程范式則好比武功門派,博大精深且自成體系
          ? 一種編程范式之所以能獨樹一幟,關鍵在于它突破了原有的編程方式的某些限制,帶來革命性的新思維和新方法,進一步解放了程序員的勞動力
          ? 因其長而容己,因其短而容他,此萬物之理也
          ? 語言為形,范式為神。若能以神導形、以形傳神,則看似平白無趣的程序也能寫出詩畫般的意境  閱讀全文

          posted @ 2008-12-15 16:28 鄭暉 閱讀(2952) | 評論 (0)  編輯

          冒號課堂§4.2:邏輯范式
               摘要: 邏輯范式——當算法失去了控制(再談邏輯式編程
          ? 評價代碼的復雜度,長短只是一個因素。程序員不是打字員,花在思考上的時間和精力遠遠超過花在鍵盤上
          ? 算法=邏輯+控制。其中邏輯是算法的核心,控制主要用于改進算法的效率  閱讀全文

          posted @ 2008-12-07 23:19 鄭暉 閱讀(2982) | 評論 (1)  編輯

          冒號課堂§4.1:函數范式
               摘要: 函數范式——精巧的數學思維(再談函數式編程
          ? 單靠記憶只能觸及知識之表,單靠練習只能深入知識之里,唯有培養(yǎng)方能滲透知識之根
          ? 學會適度地容忍無知
          ? 不僅需要強調鉆勁和深度的“釘子精神”,還需要強調磨功和廣度的“刨子精神”
          ? 編程語言的語法、語義等都是從編程范式的樹根衍生而出的枝葉,把握了這種脈絡和節(jié)奏,代碼才會如音樂舞蹈般韻律有致
          ? 每種范式擅長的問題領域不盡相同,只有博聞廣識,方可揚長避短,程序才會如行云流水般流暢自然
          ? 程序員更習慣機器風格的過程式思維和現(xiàn)實風格的OOP思維,不容易接納數學風格的函數式思維  閱讀全文

          posted @ 2008-11-30 22:27 鄭暉 閱讀(3231) | 評論 (3)  編輯

          冒號課堂§3.4:事件驅動
               摘要: 事件驅動——有事我叫你,沒事別煩我(事件驅動式編程簡談
          ? 它們(同步回調和異步回調)都使調用者不再依賴被調者,將二者從代碼上解耦,異步調用更將二者從時間上解耦
          ? 它們(控制反轉、依賴反轉和依賴注射)的主題是控制與依賴,目的是解耦,方法是反轉,而實現(xiàn)這一切的關鍵是抽象接口
          ? “回調”強調的是行為方式——底層反調高層,而“抽象接口”強調的是實現(xiàn)方式——正是由于接口具有抽象性,底層才能在調用它時無需慮及高層的具體細節(jié),從而實現(xiàn)控制反轉
          ? 控制反轉導致了事件驅動式編程的被動性
          ? 事件驅動式還具有異步性的特征,這是由事件的不可預測性與隨機性決定的
          ? 獨立是異步的前提,耗時是異步的理由
          ? 出版/訂閱模式正是觀察者模式的別名,一方面可看作簡化或退化的事件驅動式,另一方面可看作事件驅動式的核心思想  閱讀全文

          posted @ 2008-11-24 08:37 鄭暉 閱讀(4096) | 評論 (5)  編輯

          冒號課堂§3.3:切面范式
               摘要: 切面范式——多角度看問題(AOP簡談
          ? 從宏觀角度看,太陽底下沒有新鮮事——AOP無非是SoC原理和DRY原則的一種應用
          ? 從微觀角度看,太陽每天都是新的——AOP雖自OOP的土壤中長出,卻脫離藩籬自成一體
          ? 抽象是前提,分解是方式,模塊化是結果
          ? 在常人眼中復雜的牛體,庖丁經過抽象,已目無全牛,及至提刀分解,自是游刃有余。待牛如土委地,模塊化既成
          ? 兩條(抽象與分解的原則):單一化,正交化。每個模塊職責明確專一,模塊之間相互獨立,即高聚合低耦合
          ? 對程序員來說,英語也是一門計算機語言,而且是必修的語言
          ? OOP只能沿著繼承樹的縱向方向重用,而AOP則彌補了OOP的不足,可以在橫向方向重用
          ? 如果一個程序是一個管道系統(tǒng),AOP就是在管道上鉆一些孔,在每個孔中注入新的代碼流  閱讀全文

          posted @ 2008-11-17 08:35 鄭暉 閱讀(3165) | 評論 (0)  編輯

          冒號課堂§3.2:超級范式
               摘要: 超級范式——提升語言的級別(元編程簡談
          ? 元編程作為超級范式的一個體現(xiàn)是,它能提升語言的級別
          ? 如果說OOP的關鍵在于構造對象的概念,那么LOP的關鍵在于構造語言的語法
          ? 離開IDE就無法編寫、編譯或調試的程序員,如同卸盔下馬后便失去戰(zhàn)斗力的武士,是殘缺和孱弱的
          ? 既然有重復的代碼,不能從語法上提煉,不妨退一步從文字上提煉
          ? 元程序將程序作為數據來對待,能自我發(fā)現(xiàn)、自我賦權和自我升級,有著其他程序所不具備的自覺性、自適應性和智能性,可以說是一種最高級的程序  閱讀全文

          posted @ 2008-11-10 23:40 鄭暉 閱讀(2337) | 評論 (0)  編輯

          冒號課堂§3.1:泛型范式
               摘要: 泛型范式——抽象你的算法(泛型式編程簡談)
          ? 算法串聯(lián)數據,如脊貫肉;數據實化算法,如肉附脊
          ? 泛型編程是算法導向的,即以算法為起點和中心點,逐漸將其所涉及的概念內涵模糊化、外延擴大化,將其所涉及的運算抽象化、一般化,從而擴展算法的適用范圍
          ? 思想是雞,結論是蛋  閱讀全文

          posted @ 2008-11-05 23:35 鄭暉 閱讀(2866) | 評論 (1)  編輯

          冒號課堂§2.4:并發(fā)范式
               摘要: 并發(fā)范式——合作與競爭(并發(fā)式編程簡談
          ? 有誰愿意駕駛一輛啟動后不能剎車、不能倒車、不能變速、油盡方停的汽車呢?
          ? 并發(fā)式編程以進程為導向、以任務為中心將系統(tǒng)模塊化
          ? 并發(fā)式編程以資源共享與競爭為主線  閱讀全文

          posted @ 2008-11-04 00:33 鄭暉 閱讀(1250) | 評論 (2)  編輯

          冒號課堂§2.3:對象范式
               摘要: 對象范式——民主制社會的編程法則(OOP簡談
          ? 如果把整個流程看作一顆倒長的大樹,過程式編程自樹根向下,逐漸分支,直到每片樹葉,類似數學證明中的分析法,即執(zhí)果索因的逆推法;OOP則從每片樹葉開始,逐漸合并,直到樹根,類似數學證明中的綜合法,即執(zhí)因索果的正推法
          ? 與其說OOP更具重用性,不如說更具易用性
          ? 函數是被動的實體,對象是主動的實體
          ? 過程式程序的世界是君主制的;OO程序的世界是民主制的  閱讀全文

          posted @ 2008-11-04 00:20 鄭暉 閱讀(1436) | 評論 (3)  編輯

          冒號課堂§2.2:聲明范式
               摘要: 聲明范式——目標決定行動(聲明式編程簡談
          ? 命令式編程是行動導向的,因而算法是顯性而目標是隱性的;聲明式編程是目標驅動的,因而目標是顯性而算法是隱性的
          ? 聲明式編程重目標、輕過程,專注問題的分析和表達而不致陷入算法的迷宮,其代碼也更加簡潔清晰、易于修改和維護
          ? 歸根結底,編程是尋求一種機制,將指定的輸入轉化為指定的輸出  閱讀全文

          posted @ 2008-11-03 23:27 鄭暉 閱讀(2603) | 評論 (0)  編輯

          冒號課堂§2.1:命令范式
               摘要: 命令范式——一切行動聽指揮(命令式編程簡談
          ? (命令式編程)其世界觀是:程序是由若干行動指令組成的有序列表;其方法論是:用變量來儲存數據,用語句來執(zhí)行指令
          ? (結構化編程)在微觀上,主張循規(guī)守矩;在宏觀上,主張分而治之
          ? 一個按結構化編程思想設計的流程圖,每個模塊大小適中、模塊之間關系簡明、模塊內部線路清晰,單從視覺上就會給人一種美感  閱讀全文

          posted @ 2008-11-03 23:16 鄭暉 閱讀(2910) | 評論 (2)  編輯

          冒號課堂§1.0:開班導言
               摘要: 開班導言
          1開班發(fā)言——程序員的四層境界
          ? 學會不如會學,會學不如會用,會用不如被用
          ? 知識之上是思想,思想之上是精神
          2首輪提問——什么語言好?
          ? 沒有激情作氧氣,靈感的火花注定轉瞬即滅
          3語言選擇——合適的就是好的
          ? 評判語言優(yōu)劣,如同爭論兵器高下,倘若撇開使用的主體和對象,皆為空泛之談
          ? 西門吹雪的西來一劍,那是C語言;李尋歡的小李飛刀,那是匯編語言;陸小鳳的靈犀一指,那是機器語言
          4初識范式——程序王國中的世界觀與方法論
          ? 當你編程之時,便進入到自己創(chuàng)造的世界之中。這是你的世界,只有注入你的想象力、創(chuàng)造力和激情,它才有勃勃生機。你編寫的豈止是代碼,分明還有樂曲;你敲擊的豈止是鍵盤,分明還有琴鍵;你運行的豈止是程序,分明還有世界。當優(yōu)美的旋律奏起,整個世界都隨之翩然起舞,一種莫可名狀的滿足是否會充溢你的全身?
          5軟件技術——實用還是時髦?
          ? 知識的學習有幾種方式:一種靠記憶,一種靠練習,一種靠培養(yǎng)
          ? 學習編程范式能增強編程語言的語感  閱讀全文

          posted @ 2008-10-14 09:37 鄭暉 閱讀(4757) | 評論 (18)  編輯

          導航

          統(tǒng)計

          公告

          博客搬家:http://blog.zhenghui.org
          《冒號課堂》一書于2009年10月上市,詳情請見
          冒號課堂

          留言簿(17)

          隨筆分類(61)

          隨筆檔案(61)

          文章分類(1)

          文章檔案(1)

          最新隨筆

          積分與排名

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 普宁市| 法库县| 鹰潭市| 连城县| 容城县| 辉县市| 沙坪坝区| 察雅县| 浦东新区| 鹤庆县| 西宁市| 西乌| 维西| 兰坪| 斗六市| 杭州市| 龙口市| 台州市| 东阳市| 英吉沙县| 西和县| 平果县| 邵武市| 绥化市| 都江堰市| 大足县| 广平县| 湖南省| 浙江省| 台江县| 承德县| 增城市| 临夏市| 辽宁省| 怀宁县| 莱西市| 吉水县| 开封县| 遂溪县| 南昌县| 长丰县|