摘要: 昨日整理Gmail信箱之時,覺有不便之處,于是進(jìn)入“Suggest a feature for Gmail”的頁面,準(zhǔn)備提些建議。不意一只靈感的小蟲悄悄爬上腦梢,急欲捕之而后快。遂作“A Proposal on Organization of Information System”一文,以備Gmail參考之用。甘冒不謙之嫌,竊以為該提案是對包括文件系統(tǒng)、郵件系統(tǒng)等在內(nèi)的信息系統(tǒng)的組織方式的一種創(chuàng)新。。。
閱讀全文
摘要:
關(guān)于信息系統(tǒng)組織方式的一個改進(jìn)方案
Information itself is great, but storing and retrieving information sucks.
From a user’s view, most information systems are essentially organized in hierarchical structure. The major flaw of this kind of structure is that it only provides a single path to the target information. Aiming at this, this article proposes a practical solution by borrowing some ideas from Gmail system.
閱讀全文
摘要: 在這樣一個非常時期,任何激情均無以掙脫悲情,創(chuàng)作的靈感也隨之芳蹤難覓。與此同時,《冒號和他的學(xué)生們》系列也到了下一個驛站。。。
如果說這個系列是一粒種子,BlogJava便是肥沃的土壤,關(guān)注的目光便是和煦的陽光,真誠的留言便是滋潤的雨露。。。
閱讀全文
摘要:
編程范式總結(jié)
眾人落座之后,冒號開始了第四課的講授:“我們已經(jīng)涉及了不少編程范式,雖只是走馬觀花,亦可管窺一斑?,F(xiàn)用表格歸納如下——”。。。
編程水平的提升之道是:在實(shí)戰(zhàn)中演練招法,在招法中領(lǐng)會心法,心法反過來提升招法,進(jìn)而提高實(shí)戰(zhàn)水平,如此循環(huán)往復(fù)呈螺旋式上升過程。正所謂熟能生巧,巧能生通。。。
軟件工程中有個迭代開發(fā)法,本班則采用迭代學(xué)習(xí)法:即在具體知識與抽象理論之間進(jìn)行折返式學(xué)習(xí)。當(dāng)然這種迭代不是機(jī)械式的重復(fù),而是增量式的循環(huán)。。。
閱讀全文
摘要:
餐館里的編程范式
嘆號摘下眼鏡,揉了揉眼:“范式再好,多了也難免有些審美疲勞?!?
逗號也搓著太陽穴:“現(xiàn)在腦子被灌得沉甸甸的。”
“彼此彼此!你們的腦袋鬧澇災(zāi),我的喉嚨鬧旱災(zāi)?!泵疤栒f著,拿起礦泉水瓶一飲而盡。
大伙聽著怪別扭的,這不是拐著彎說我們腦子進(jìn)水了嗎?
冒號清了清嗓子:“為尊重民意,也為避免消化不良,大家先放松一下。下面我們來個情景編程?!薄!!?nbsp;
閱讀全文
摘要:
AOP簡談
引號重開話題:“OOP方興未艾,AOP又開始嶄露頭角。AOP算是OOP的一種分支、一種補(bǔ)充還是一種超越?”。。。
“準(zhǔn)確地說,抽象是前提,分解是方式,模塊化是結(jié)果?!泵疤柡苤v究精確,“大家記得庖丁解牛的故事吧?在常人眼中復(fù)雜的牛體,庖丁經(jīng)過抽象,已目無全牛,及至提刀分解,自是游刃有余。待牛如土委地,模塊化既成。”。。。
問號提問:“抽象與分解的原則是什么?”
冒號作了個V字:“兩條:單一化,正交化。每個模塊職責(zé)明確專一,模塊之間相互獨(dú)立,即高聚合低耦合。。。
何謂橫切關(guān)注點(diǎn)?顧名思義,乃是與程序的縱向主流執(zhí)行方向橫向正交的關(guān)注焦點(diǎn)。。。
對程序員來說,英語也是一門計(jì)算機(jī)語言。。。
閱讀全文
摘要:
元編程簡談
引號忽然想起一事,問道:“有一本名為《C++模版元編程》的書,既然提到了模板,想來也屬于泛型編程吧?”。。。
“元程序?qū)⒊绦蜃鳛閿?shù)據(jù)來對待,能自我發(fā)現(xiàn)和自我賦權(quán),有著其他程序所不具備的自覺性、自適應(yīng)性和智能性,可以說是一種最高級的程序。它要求編程者超越常規(guī)的編程思維,在一種嶄新的高度上理解編程。想象一下,”冒號激情勃發(fā),“如果有一天機(jī)器人能自我學(xué)習(xí)、自我完善,甚至能生產(chǎn)機(jī)器人,實(shí)現(xiàn)‘智能繁衍’,是不是很美妙?”。。。
閱讀全文
摘要:
泛型式編程簡談
冒號重新開講:“你們會不會經(jīng)常遇到這種情景:一遍又一遍地寫著相似的代碼,有心將其歸并,卻因種種原因無法踐行?!?
逗號心有戚戚焉道:“是啊,有時明明兩個函數(shù)的實(shí)現(xiàn)幾乎一模一樣的,就因?yàn)槟承﹨?shù)不匹配,無法合而為一。”
“有一種編程范式可以解決這個問題,它打破了不同數(shù)據(jù)結(jié)構(gòu)之間的壁壘,讓你的代碼不再臃腫,這——就是泛型編程?!泵疤柕恼Z調(diào)和說辭不免令人聯(lián)想到電視上的減肥廣告。。。
算法串聯(lián)數(shù)據(jù),如脊貫肉;數(shù)據(jù)實(shí)化算法,如肉附脊。。。
泛型編程是算法導(dǎo)向(Algorithm-Oriented)的,即以算法為起點(diǎn)和中心點(diǎn),逐漸將其所涉及的數(shù)據(jù)結(jié)構(gòu)內(nèi)涵模糊化、外延擴(kuò)大化,從而擴(kuò)展算法的適用范圍。。。
在數(shù)學(xué)家眼里,思想是雞,結(jié)論是蛋。。。
閱讀全文
摘要:
并發(fā)式編程簡談
逗號好奇地問:“還有其他類型的編程范式嗎?”
“不但有,而且有很多?!泵疤柡攘艘豢谒朴频卣f,“并發(fā)式編程就是其中之一。”。。。
并發(fā)式編程以進(jìn)程為導(dǎo)向(Process-Oriented),以資源共享與競爭為主線——與當(dāng)今世界形勢何其相似乃爾!這意味著程序設(shè)計(jì)將圍繞進(jìn)程的劃分與調(diào)度、進(jìn)程之間的通訊與同步等等來展開。。。
如果將程序系統(tǒng)視作公司,那么并發(fā)式系統(tǒng)是產(chǎn)品型公司,每個進(jìn)程是一名工人,其職責(zé)是執(zhí)行單一任務(wù);對象式系統(tǒng)是服務(wù)型公司,每個對象是一名服務(wù)員,其職責(zé)是提供系列服務(wù)。。。
閱讀全文
摘要:
OOP簡談
短憩之后,引號迫不及待地問:“面向?qū)ο蟮姆妒綉?yīng)該是一種特殊的命令式吧?”。。。
與其說OOP更具重用性,不如說更具易用性。。。
如果把整個流程看作一顆倒長的大樹,過程式編程自樹根向下,逐漸分支,直到每片樹葉,類似數(shù)學(xué)證明中的分析法,即執(zhí)果索因的逆推法;OOP則從每片樹葉開始,逐漸合并,直到樹根,類似數(shù)學(xué)證明中的綜合法,即執(zhí)因索果的正推法。。。
函數(shù)是被動的實(shí)體,對象是主動的實(shí)體。過程式程序的世界是君主制的,主函數(shù)是國王,其他函數(shù)是臣民,等級分明,所有臣民在聽命于上級的同時也對下級發(fā)號施令,最終為國王服務(wù);OO程序的世界是民主制的,所有對象都是獨(dú)立而平等的公民,有權(quán)力保護(hù)自己的財(cái)產(chǎn)和隱私并向他人尋求服務(wù),同時有義務(wù)為他人提供承諾的服務(wù),公民之間通過信息交流來協(xié)作完成各種任務(wù)。。。
閱讀全文
摘要:
命令式編程與聲明式編程簡介
第二課伊始,冒號開門見山:“首先介紹的是最基本的兩種編程范式:命令式和聲明式,其中命令式又稱過程式。。。”
命令式編程是行動導(dǎo)向(Action-Oriented)的,因而算法是顯性而目標(biāo)是隱性的;聲明式編程是目標(biāo)驅(qū)動(Goal-Driven)的,因而目標(biāo)是顯性而算法是隱性的。。。
歸根結(jié)底,編程是尋求一種機(jī)制,將指定的輸入轉(zhuǎn)化為指定的輸出。三種范式對此提供了迥然不同的解決方案:命令式把程序看作一個自動機(jī),輸入是初始狀態(tài),輸出是最終狀態(tài),編程就是設(shè)計(jì)一系列指令,通過自動機(jī)執(zhí)行以完成狀態(tài)轉(zhuǎn)變;函數(shù)式把程序看作一個數(shù)學(xué)函數(shù),輸入是自變量,輸出是因變量,編程就是設(shè)計(jì)一系列函數(shù),通過表達(dá)式變換以完成計(jì)算;邏輯式把程序看作一個邏輯證明,輸入是題設(shè),輸出是結(jié)論,編程就是設(shè)計(jì)一系列命題,通過邏輯推理以完成證明。。。
閱讀全文
摘要:
關(guān)于框架、設(shè)計(jì)模式、架構(gòu)和編程范式的討論
“現(xiàn)在我們具體介紹一下編程范式。”冒號忽然頓住,隱覺一抹失望從眾人臉上掠過,問號更是欲言又止,便鼓勵他開口。
問號略顯遲疑:“您說編程范式是一種心法,那框架、設(shè)計(jì)模式還有架構(gòu)呢?”。。。
“自以為懂的未必真的懂,自以為不懂的未必真的不懂?!?冒號玩起了玄學(xué),“有些概念和技術(shù)即使背得爛熟,甚至用得爛熟,那也不代表真正掌握;有些概念和技術(shù)看起來很新奇,卻不過是新瓶裝舊酒。”。。。
框架與工具包最大的差別在截然相反的設(shè)計(jì)理念上:庫和工具包是為程序員帶來自由的,框架是為程序員帶來約束的。。。
設(shè)計(jì)模式是軟件的戰(zhàn)術(shù)思想,架構(gòu)是軟件的戰(zhàn)略決策。。。
知識的學(xué)習(xí)有幾種方式:一種靠記憶,一種靠練習(xí),一種靠培養(yǎng)。。。
句號悟道:“您是想告訴我們,編程范式就是編程語言的語感?”。。。
閱讀全文
摘要:
關(guān)于編程心法
問號第一個從小說里走出來,問道:“剛才談到了低級語言和中級語言,現(xiàn)在該談高級語言了吧?”。。。
掌握一門語言的語法、工具和技巧固然重要,但那只相當(dāng)于學(xué)會一門兵器的招法,更重要的當(dāng)然是心法。招法重形,心法重意。得形而忘意,無異舍本逐末;得意而忘形,方能游刃有余。下面要談的就是一種心法:編程范式。。。
當(dāng)你編程之時,便進(jìn)入到自己創(chuàng)造的世界之中。這是你的世界,只有注入你的想象力、創(chuàng)造力和激情,它才有勃勃生機(jī)。你編寫的豈止是代碼,分明還有樂曲;你敲擊的豈止是鍵盤,分明還有琴鍵;你運(yùn)行的豈止是程序,分明還有世界。當(dāng)優(yōu)美的旋律奏起,整個世界都隨之翩然起舞,一種莫可名狀的滿足是否會充溢你的全身?。。。
句號一語驚人:“找對象是‘對象導(dǎo)向’的,去約會是‘面向?qū)ο蟆??!?。?!?nbsp;
閱讀全文
摘要:
簡要回顧計(jì)算機(jī)語言
問號覺得自己的問題并未解決,追問:“這么多種語言,僅憑流行度就能分出主次優(yōu)劣嗎?”
“流行度當(dāng)然不是唯一的指標(biāo)。”冒號答道,“語言的主次優(yōu)劣因人而異,答案在你們自己身上。還是剛才那句話,唯一的老師是你自己。”
期待的目光如風(fēng)中之燭般開始黯淡。。。
好的語言就是適合編程者和解決對象的語言。。。
句號靈光一閃:“我明白了——西門吹雪的西來一劍,那是C語言;李尋歡的小李飛刀,那是匯編語言;陸小鳳的靈犀一指,那是機(jī)器語言?!?。。。
閱讀全文
摘要:
關(guān)于流行計(jì)算機(jī)語言的討論
眾人面面相覷,一陣沉默后開始竊竊私語,顯然有些不太習(xí)慣這種教學(xué)方式——筆記本上還沒寫兩個字呢,老師就把球給踢回來了。
冒號也不說話,只是微笑地望著大家。
還是問號打破僵局,開始發(fā)問:“老師——”。。。
沒有激情作氧氣,靈感的火花注定轉(zhuǎn)瞬即滅。。。
閱讀全文
摘要:
程序員提高班之開班發(fā)言
冒號開了個程序員提高班,今天迎來了首期學(xué)員,他們是問號、句號、逗號、引號和嘆號,皆為IT業(yè)的新兵。望著臺下洋溢著青春與渴望的臉龐,冒號開始了他的開班發(fā)言——
大家好!先自我介紹一下,本人姓冒名號字解之。。。
本班的宗旨是:學(xué)會不如會學(xué),會學(xué)不如會用,會用不如被用。。。
如果知識是水,我們要挖掘最先涌動的那顆泉眼;如果知識是火,我們要捕捉起初點(diǎn)燃的那顆火花。。。
閱讀全文