天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

靜思錄 程序第一

  知止而后有定,定而后能靜,靜而后能安,安而后能慮,慮而后能得。     ——《大學(xué)》

  從寫(xiě)第一個(gè)x86程序算起,到現(xiàn)在,轉(zhuǎn)眼也已有十年。變量、數(shù)組、指針、引用、函數(shù)、命名空間、封裝、繼承、多態(tài)、GP、接口、元數(shù)據(jù)、反射、FP、DRY、TDD、SOA、WF、LINQ、AOP、DI、LOP ...... 在一條充滿了無(wú)數(shù)HelloWorld、被拋棄的想法、寒夜孤燈以及工程實(shí)踐"血淚史"的道路上,我從一個(gè)同學(xué)年少變成了奔三程序員"大叔",并且依然義無(wú)反顧地向前狂奔著。直到剛剛那一刻,我才突然回過(guò)頭,望著那條已經(jīng)不太能夠看得清起點(diǎn)的來(lái)時(shí)道路,心生一念:是否應(yīng)該先停一停,作些不同以往的思考?我為何而來(lái)?要向何處去?

  什么是寫(xiě)程序?為什么寫(xiě)程序的過(guò)程是這樣的?這樣寫(xiě)程序是正確的嗎?這樣寫(xiě)程序是唯一正確的方式嗎?現(xiàn)在,我的工作生活中很大一部分時(shí)間都是在寫(xiě)程序;在可以預(yù)計(jì)的將來(lái),我也不太可能依靠開(kāi)洗浴中心來(lái)討生活。所以我認(rèn)為認(rèn)真思考這些問(wèn)題對(duì)我的人生應(yīng)該是很有幫助的,而對(duì)于那些在類似的道路上前行的朋友們,即便不能起到拋磚引玉的作用、達(dá)到無(wú)心插柳的效果,至少也可以添作飯后茶余一笑。

  好!那么就先停一停,讓我們的視線穿過(guò)紛繁蕪雜的名詞,回到那個(gè)一切開(kāi)始的地方——程序。

  按照編程趣味讀物的慣例寫(xiě)法,時(shí)間應(yīng)該回到19XX年的一個(gè)夏夜,年輕的我正為了某個(gè)重要的理由在某某平臺(tái)上用某某開(kāi)發(fā)工具寫(xiě)一個(gè)叫某某某的程序,接下來(lái)就會(huì)若有所思地感慨過(guò)去2009減19XX年間世道變了許多。但是,事實(shí)上我當(dāng)時(shí)正在用VB6為一個(gè)同班漂亮女生寫(xiě)著很蹩腳的五子棋游戲(帶有“很炫”的splash screen),這個(gè)例子顯然不夠滄桑與深刻,所以讓我們跳過(guò)感慨直入主題。

  牛人說(shuō):人類文明運(yùn)行于軟件之上。竊以為:寫(xiě)程序便是要把人類的意識(shí)固化到計(jì)算機(jī)當(dāng)中,讓這些文明與智慧能夠反反復(fù)復(fù)地運(yùn)行下去。程序其實(shí)并不是在描述客觀世界,而是在描述人們對(duì)客觀世界的認(rèn)識(shí)。如果意識(shí)是物質(zhì)的模型,那么程序就是意識(shí)的模型。也許這種二階模型的構(gòu)造、變更與驗(yàn)證存在著固有的復(fù)雜性——寫(xiě)程序或者更具體地對(duì)我而言,開(kāi)發(fā)與維護(hù)企業(yè)軟件系統(tǒng)相對(duì)于吃泡面來(lái)說(shuō)是一件很困難的事情。對(duì)于絕大多數(shù)困難的事情,不同領(lǐng)域的天才們都曾經(jīng)給出驚人相似的解決方案——分治復(fù)用。面對(duì)強(qiáng)大的敵人,我們首先要保存自己,接著忽悠最廣大人民群眾并尋找革命同志,然后奮力挖墻腳,進(jìn)而剪除頑固不化的死忠,斷水?dāng)嚯姅嗝簹?,最后直搗黃龍,這就叫分治;前事不忘,后事之師,面對(duì)頻繁的需求變更與一個(gè)接一個(gè)嶄新的項(xiàng)目,如何能夠避免每次都"重新制造車輪",盡量利用已有的開(kāi)發(fā)成果并且使當(dāng)前的開(kāi)發(fā)成果能夠被今后的項(xiàng)目利用,這就是復(fù)用。分治是復(fù)用的先決條件,復(fù)用是分治的最終目標(biāo)。我所能想起的最早的復(fù)用,應(yīng)該就是 jmp 了。沒(méi)錯(cuò),是個(gè)匯編指令。雖然這個(gè)指令也用來(lái)構(gòu)造條件分支,但是開(kāi)發(fā)人員確實(shí)由此獲得了免于重復(fù)輸入相同代碼的能力,只要在適當(dāng)?shù)臅r(shí)候重新跳回起始地址就好了。此后,goto、do-while、foreach、函數(shù)、封裝、繼承、Component、RPC、WebService ... 使得我們可以穿透各種系統(tǒng)邊界在不同的層級(jí)上復(fù)用已經(jīng)存在的實(shí)現(xiàn)。同時(shí)我們還應(yīng)該注意到實(shí)現(xiàn)復(fù)用之外的另一條主線:接口復(fù)用。封裝、多態(tài)、接口、契約、依賴注入等等技術(shù)讓我們能夠在系統(tǒng)中引入更多的抽象,使得高層代碼能夠獨(dú)立于那些可能會(huì)發(fā)生變化的具體實(shí)現(xiàn),始終保持不變。當(dāng)我們懷著庖丁解牛的理想,以復(fù)用為最終目的,使用分而治之的策略將系統(tǒng)拆分成很多足夠細(xì)小的抽象概念與具體實(shí)現(xiàn)步驟時(shí),一個(gè)問(wèn)題產(chǎn)生了:是什么把這些層層疊疊的部件裝配到一起構(gòu)成了整個(gè)系統(tǒng)?換言之,程序代碼到底是什么?答案可以高度概括為一個(gè)正則表達(dá)式——[_A-Za-z][_A-Za-z0-9]*,沒(méi)錯(cuò),開(kāi)發(fā)人員使用標(biāo)識(shí)符給系統(tǒng)的任何一部分起名字,實(shí)例、屬性、方法、事件、類、接口、命名空間、JNDI、DI id ... 在排除了那些流程控制語(yǔ)句和元素聲明的寫(xiě)法等等在同一個(gè)程序語(yǔ)言中固定不變的內(nèi)容之后我們發(fā)現(xiàn),任何程序,無(wú)論采用何種編程范式,都是由一堆按照固定順序和方式出現(xiàn)標(biāo)識(shí)符組成的,其中每一個(gè)標(biāo)識(shí)符都代表了一個(gè)內(nèi)存地址或者另外一堆標(biāo)識(shí)符。采用不同的編程范式似乎只是在影響高層標(biāo)識(shí)符的意義與組織方式。排除接口復(fù)用方面的考慮不談,如果OB或者OO相對(duì)于過(guò)程式編程而言還存在其他優(yōu)勢(shì)的話,那么主要就體現(xiàn)在前者提供了構(gòu)造良好分治結(jié)構(gòu)的可能性,封裝、繼承、接口等技術(shù)就像一個(gè)黃頁(yè)分類系統(tǒng),如果設(shè)計(jì)良好可以讓用戶快速定位目標(biāo);而過(guò)程式編程的開(kāi)發(fā)成果永遠(yuǎn)是扁平的。 隨著系統(tǒng)復(fù)雜程度的增加,OO必然也會(huì)遇到相同的問(wèn)題,即如何有效的組織系統(tǒng)的各個(gè)部分,讓開(kāi)發(fā)人員可以更容易地根據(jù)需求進(jìn)行代碼定位,使得所有關(guān)于復(fù)用的努力能夠真正實(shí)現(xiàn);而不是因?yàn)橐肓诉^(guò)多的抽象層次讓系統(tǒng)變得難以理解,最終導(dǎo)致開(kāi)發(fā)人員明明知道可以復(fù)用的實(shí)現(xiàn)就在這里,卻因?yàn)槎盖偷膶W(xué)習(xí)曲線而不得不再次重新制造車輪。

  一段典型的現(xiàn)代OO代碼片段是這樣的:

   OO code

  這說(shuō)明我們每天寫(xiě)程序的人的生活也是這樣的:拿到一個(gè)需求;自己琢磨、Google、MSDN、API Doc、Community或者問(wèn)一圈同事才找到一些對(duì)象;逐一弄清楚上邊那些所有的What、WhatYet 以及 WhatElse 都代表了些蝦滅;編譯測(cè)試調(diào)試編譯測(cè)試調(diào)試編譯測(cè)試調(diào)試;直到我們真正的弄清楚了那些所有的What、WhatYet 以及 WhatElse 都代表了些蝦滅 ...... 每個(gè)公司的開(kāi)發(fā)流程可能不同,但是具體到代碼簽出之后到簽入之前的這段繁復(fù)的手工操作我想應(yīng)該還是大同小異的。即使這個(gè)框架是你一手設(shè)計(jì)的,你可以完全理解所有的抽象概念,那么對(duì)于一個(gè)新加入團(tuán)隊(duì)的員工呢?對(duì)于十年之后已經(jīng)不太記得當(dāng)初那些精心安排的工巧的你呢?

  就在這里停下吧!難道我許多年來(lái)傾注了滿腔的熱情,遵循著分治復(fù)用的原則,接受了諸多概念、技術(shù)、信仰與習(xí)慣,最后獲得的日常生活就是這樣的重復(fù)查找與驗(yàn)證么?我本可以用來(lái)記憶更多家人朋友消息或是八卦?shī)蕵?lè)新聞的大腦存儲(chǔ)空間必須要被征用過(guò)來(lái),把那些晦澀的標(biāo)識(shí)符及其出現(xiàn)順序倒背如流么?!

  不!我相信生活不應(yīng)該是這樣的。我相信寫(xiě)程序的最終目的應(yīng)當(dāng)是為了終結(jié)寫(xiě)程序;在OO之外,在現(xiàn)有的編程范式、模式與最佳實(shí)踐之外一定還有其他更好的辦法能夠提高程序代碼的生產(chǎn)效率、進(jìn)一步解放千千萬(wàn)萬(wàn)像我一樣的人——程序員。

 ?。ùm(xù))

it知識(shí)庫(kù)靜思錄 程序第一,轉(zhuǎn)載需保留來(lái)源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 6080yy奇领电影在线看 | 亚洲精品AV中文字幕在线 | 制服的微热 | 亚州AV中文无码乱人伦在线 | 国产精品久久久久久人妻精品蜜桃 | 女人吃男人的鸡鸡 | 亚州三级视频 | 久久99这里只有精品 | 国产精品18久久久久久欧美 | 国产精品日本欧美一区二区 | 娇妻被朋友玩得呻吟在线电影 | 公主纯肉高H文 | 好大好硬好爽好深好硬视频 | 印度人XXx | 国产白丝精品爽爽久久久久久蜜臀 | 国产手机在线亚洲精品观看 | 狠狠啪 日日啪 | 啊轻点灬大JI巴又大又粗 | 正在播放国产尾随丝袜美女 | 精品久久电影网 | 丰满老熟女白浆直流 | 天天影视网网色色欲 | 国产剧情福利AV一区二区 | 999人在线精品播放视频 | 超碰在线视频地址 | 国产麻豆精品人妻无码A片 国产麻豆精品久久一二三 国产麻豆精品传媒AV国产在线 | 国产人妻人伦精品久久久 | 色偷偷综合网 | 97精品国偷拍自产在线 | 午夜在线观看免费完整直播网页 | 女人高潮久久久叫人喷水 | 日日噜噜夜夜爽爽 | 桃花在线视频观看免费 | 欧美人与动牲交ZOOZ特 | 第一次处破女18分钟免费 | a级男女性高爱潮高清试看 A级毛片无码久久精品免费 | 69成人免费视频 | 亚洲一区在线观看视频 | 69久久国产精品热88人妻 | 国产精品乱码色情一区二区视频 | 蜜芽无码亚洲资源网站 |