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