11 2008 檔案
摘要:
函數(shù)范式——精巧的數(shù)學思維(
再談函數(shù)式編程)
? 單靠記憶只能觸及知識之表,單靠練習只能深入知識之里,唯有培養(yǎng)方能滲透知識之根
? 學會適度地容忍無知
? 不僅需要強調鉆勁和深度的“釘子精神”,還需要強調磨功和廣度的“刨子精神”
? 編程語言的語法、語義等都是從編程范式的樹根衍生而出的枝葉,把握了這種脈絡和節(jié)奏,代碼才會如音樂舞蹈般韻律有致
? 每種范式擅長的問題領域不盡相同,只有博聞廣識,方可揚長避短,程序才會如行云流水般流暢自然
? 程序員更習慣機器風格的過程式思維和現(xiàn)實風格的OOP思維,不容易接納數(shù)學風格的函數(shù)式思維
閱讀全文
摘要:
事件驅動——有事我叫你,沒事別煩我(
事件驅動式編程簡談)
? 它們(同步回調和異步回調)都使調用者不再依賴被調者,將二者從代碼上解耦,異步調用更將二者從時間上解耦
? 它們(控制反轉、依賴反轉和依賴注射)的主題是控制與依賴,目的是解耦,方法是反轉,而實現(xiàn)這一切的關鍵是抽象接口
? “回調”強調的是行為方式——底層反調高層,而“抽象接口”強調的是實現(xiàn)方式——正是由于接口具有抽象性,底層才能在調用它時無需慮及高層的具體細節(jié),從而實現(xiàn)控制反轉
? 控制反轉導致了事件驅動式編程的被動性
? 事件驅動式還具有異步性的特征,這是由事件的不可預測性與隨機性決定的
? 獨立是異步的前提,耗時是異步的理由
? 出版/訂閱模式正是觀察者模式的別名,一方面可看作簡化或退化的事件驅動式,另一方面可看作事件驅動式的核心思想
閱讀全文
摘要:
切面范式——多角度看問題(
AOP簡談)
? 從宏觀角度看,太陽底下沒有新鮮事——AOP無非是SoC原理和DRY原則的一種應用
? 從微觀角度看,太陽每天都是新的——AOP雖自OOP的土壤中長出,卻脫離藩籬自成一體
? 抽象是前提,分解是方式,模塊化是結果
? 在常人眼中復雜的牛體,庖丁經(jīng)過抽象,已目無全牛,及至提刀分解,自是游刃有余。待牛如土委地,模塊化既成
? 兩條(抽象與分解的原則):單一化,正交化。每個模塊職責明確專一,模塊之間相互獨立,即高聚合低耦合
? 對程序員來說,英語也是一門計算機語言,而且是必修的語言
? OOP只能沿著繼承樹的縱向方向重用,而AOP則彌補了OOP的不足,可以在橫向方向重用
? 如果一個程序是一個管道系統(tǒng),AOP就是在管道上鉆一些孔,在每個孔中注入新的代碼流
閱讀全文
摘要:
超級范式——提升語言的級別(
元編程簡談)
? 元編程作為超級范式的一個體現(xiàn)是,它能提升語言的級別
? 如果說OOP的關鍵在于構造對象的概念,那么LOP的關鍵在于構造語言的語法
? 離開IDE就無法編寫、編譯或調試的程序員,如同卸盔下馬后便失去戰(zhàn)斗力的武士,是殘缺和孱弱的
? 既然有重復的代碼,不能從語法上提煉,不妨退一步從文字上提煉
? 元程序將程序作為數(shù)據(jù)來對待,能自我發(fā)現(xiàn)、自我賦權和自我升級,有著其他程序所不具備的自覺性、自適應性和智能性,可以說是一種最高級的程序
閱讀全文
摘要:
泛型范式——抽象你的算法(
泛型式編程簡談)
? 算法串聯(lián)數(shù)據(jù),如脊貫肉;數(shù)據(jù)實化算法,如肉附脊
? 泛型編程是算法導向的,即以算法為起點和中心點,逐漸將其所涉及的概念內涵模糊化、外延擴大化,將其所涉及的運算抽象化、一般化,從而擴展算法的適用范圍
? 思想是雞,結論是蛋
閱讀全文
摘要:
并發(fā)范式——合作與競爭(
并發(fā)式編程簡談)
? 有誰愿意駕駛一輛啟動后不能剎車、不能倒車、不能變速、油盡方停的汽車呢?
? 并發(fā)式編程以進程為導向、以任務為中心將系統(tǒng)模塊化
? 并發(fā)式編程以資源共享與競爭為主線
閱讀全文
摘要:
對象范式——民主制社會的編程法則(
OOP簡談)
? 如果把整個流程看作一顆倒長的大樹,過程式編程自樹根向下,逐漸分支,直到每片樹葉,類似數(shù)學證明中的分析法,即執(zhí)果索因的逆推法;OOP則從每片樹葉開始,逐漸合并,直到樹根,類似數(shù)學證明中的綜合法,即執(zhí)因索果的正推法
? 與其說OOP更具重用性,不如說更具易用性
? 函數(shù)是被動的實體,對象是主動的實體
? 過程式程序的世界是君主制的;OO程序的世界是民主制的
閱讀全文
摘要:
聲明范式——目標決定行動(
聲明式編程簡談)
? 命令式編程是行動導向的,因而算法是顯性而目標是隱性的;聲明式編程是目標驅動的,因而目標是顯性而算法是隱性的
? 聲明式編程重目標、輕過程,專注問題的分析和表達而不致陷入算法的迷宮,其代碼也更加簡潔清晰、易于修改和維護
? 歸根結底,編程是尋求一種機制,將指定的輸入轉化為指定的輸出
閱讀全文
摘要:
命令范式——一切行動聽指揮(
命令式編程簡談)
? (命令式編程)其世界觀是:程序是由若干行動指令組成的有序列表;其方法論是:用變量來儲存數(shù)據(jù),用語句來執(zhí)行指令
? (結構化編程)在微觀上,主張循規(guī)守矩;在宏觀上,主張分而治之
? 一個按結構化編程思想設計的流程圖,每個模塊大小適中、模塊之間關系簡明、模塊內部線路清晰,單從視覺上就會給人一種美感
閱讀全文