發(fā)信人: gentboy (老流氓,老水車,老男人就是快樂的一家), 信區(qū): Java
標(biāo) 題: 填坑:oo的前世今生及后世
發(fā)信站: 水木社區(qū) (Fri Apr 18 13:27:06 2008), 站內(nèi)
摘要:需求一直在擴(kuò)展,邏輯復(fù)雜度以更高的速度增加,而人的邏輯處理能力沒有任何變?
。oo解決了一個(gè)stage的問題,但是類似于軟件危機(jī)的問題肯定還會(huì)出現(xiàn),期待新的邏輯或
者工具來解決這個(gè)問題。
N多年前,軟件危機(jī)的出現(xiàn)基于三個(gè)事實(shí),一個(gè)是需求迅速增長,功能要求越來越多;再者軟件的復(fù)雜度并不是與軟件的體積成正比的,復(fù)雜度的增長速度要遠(yuǎn)大于代碼的行數(shù)的增長速度。
還有一個(gè)沒有被強(qiáng)調(diào)的原因就是,人的能力是有限的,對(duì)于復(fù)雜的軟件,沒有任何一個(gè)人能掌握所有的邏輯,即使他了解所有的邏輯,也不可能同時(shí)考慮到這些邏輯。因此,人們?cè)诰帉戃浖r(shí),只能在有限的視野內(nèi)工作,這種情況本身就決定了軟件中的缺陷難以避免。
oo被認(rèn)為是解決軟件危機(jī)一個(gè)比較好的方法,主要原因就是oo將整個(gè)軟件中的大量邏輯和數(shù)據(jù)封裝起來,從而使得程序員不必關(guān)注所有的細(xì)節(jié),而只關(guān)注與自己負(fù)責(zé)的部分有關(guān)的細(xì)節(jié)。這大大減輕了程序員的負(fù)擔(dān),從而也使軟件規(guī)模得到了較大的擴(kuò)大。
但是,需求仍在繼續(xù)增長,而且邏輯的復(fù)雜度又以更快的速度增長。用oo編程的程序員們漸漸感覺到即使大量的邏輯被封裝了,剩下的要處理的邏輯仍然足夠復(fù)雜。
而且,oo也是一把雙刃劍,如果封裝的方法不當(dāng),同樣會(huì)給別人的開發(fā)造成麻煩。而且不同的程序員往往對(duì)同一個(gè)應(yīng)用有著不同的理解。這使得協(xié)作中的沖突很常見。
因此大量的針對(duì)具體應(yīng)用的framework出現(xiàn)了,比如orm, ejb, struts等等,這些framework從某種程度上定義了某種具體應(yīng)用的范式,把應(yīng)用中有共性的部分拿出來,而讓程序員做那些有特性的東西。這又讓程序員少考慮了不少東西。
到目前為止,framework的確起了不小的作用,也出現(xiàn)了很多超大型的framework,能讓程序員寫很少的代碼就能完成原來可能要18個(gè)人干半年才能完成的任務(wù)。
但是,framework也有其本身的缺陷,一個(gè)是framework往往本身就足夠復(fù)雜,難以學(xué)習(xí)已經(jīng)是一些大型的framework的通病。另外framework本身也有質(zhì)量問題,過分依賴或者不正確的使用framework的后果同樣是致命的。
framework替你做的事情越多,程序員往往就越難以使用它,但是如果他做的東西少,程序員就會(huì)喊自己做了很多重復(fù)勞動(dòng)。因此這兩者之間要有一個(gè)平衡。從這個(gè)角度來講,spring做的比jboss要好。
展望將來,需求的規(guī)模還會(huì)繼續(xù)增長,而邏輯的復(fù)雜度仍然會(huì)以相對(duì)于需求的復(fù)雜度的指數(shù)形式增長。但是人的腦子跟幾十年前沒什么區(qū)別,還是同時(shí)能處理那么多邏輯。尖銳問題肯定會(huì)出現(xiàn)。
但是解決問題的方法呢?單單靠語言特性恐怕已經(jīng)難以再做什么。人們應(yīng)當(dāng)再次反思程序這個(gè)概念本身,提出新的解決方案。或許人們會(huì)開發(fā)出更為實(shí)用的framework以定義業(yè)務(wù)邏輯,更為智能化的集成開發(fā)/協(xié)作環(huán)境工具來擴(kuò)展我們的大腦,或者其它...
--
晶晶姑娘是個(gè)好姑娘
※ 修改:·gentboy 于 Apr 18 13:28:32 2008 修改本文·[FROM: 210.13.85.*]
※ 來源:·水木社區(qū) newsmth.net·[FROM: 210.13.85.*]
標(biāo) 題: 填坑:oo的前世今生及后世
發(fā)信站: 水木社區(qū) (Fri Apr 18 13:27:06 2008), 站內(nèi)
摘要:需求一直在擴(kuò)展,邏輯復(fù)雜度以更高的速度增加,而人的邏輯處理能力沒有任何變?
。oo解決了一個(gè)stage的問題,但是類似于軟件危機(jī)的問題肯定還會(huì)出現(xiàn),期待新的邏輯或
者工具來解決這個(gè)問題。
N多年前,軟件危機(jī)的出現(xiàn)基于三個(gè)事實(shí),一個(gè)是需求迅速增長,功能要求越來越多;再者軟件的復(fù)雜度并不是與軟件的體積成正比的,復(fù)雜度的增長速度要遠(yuǎn)大于代碼的行數(shù)的增長速度。
還有一個(gè)沒有被強(qiáng)調(diào)的原因就是,人的能力是有限的,對(duì)于復(fù)雜的軟件,沒有任何一個(gè)人能掌握所有的邏輯,即使他了解所有的邏輯,也不可能同時(shí)考慮到這些邏輯。因此,人們?cè)诰帉戃浖r(shí),只能在有限的視野內(nèi)工作,這種情況本身就決定了軟件中的缺陷難以避免。
oo被認(rèn)為是解決軟件危機(jī)一個(gè)比較好的方法,主要原因就是oo將整個(gè)軟件中的大量邏輯和數(shù)據(jù)封裝起來,從而使得程序員不必關(guān)注所有的細(xì)節(jié),而只關(guān)注與自己負(fù)責(zé)的部分有關(guān)的細(xì)節(jié)。這大大減輕了程序員的負(fù)擔(dān),從而也使軟件規(guī)模得到了較大的擴(kuò)大。
但是,需求仍在繼續(xù)增長,而且邏輯的復(fù)雜度又以更快的速度增長。用oo編程的程序員們漸漸感覺到即使大量的邏輯被封裝了,剩下的要處理的邏輯仍然足夠復(fù)雜。
而且,oo也是一把雙刃劍,如果封裝的方法不當(dāng),同樣會(huì)給別人的開發(fā)造成麻煩。而且不同的程序員往往對(duì)同一個(gè)應(yīng)用有著不同的理解。這使得協(xié)作中的沖突很常見。
因此大量的針對(duì)具體應(yīng)用的framework出現(xiàn)了,比如orm, ejb, struts等等,這些framework從某種程度上定義了某種具體應(yīng)用的范式,把應(yīng)用中有共性的部分拿出來,而讓程序員做那些有特性的東西。這又讓程序員少考慮了不少東西。
到目前為止,framework的確起了不小的作用,也出現(xiàn)了很多超大型的framework,能讓程序員寫很少的代碼就能完成原來可能要18個(gè)人干半年才能完成的任務(wù)。
但是,framework也有其本身的缺陷,一個(gè)是framework往往本身就足夠復(fù)雜,難以學(xué)習(xí)已經(jīng)是一些大型的framework的通病。另外framework本身也有質(zhì)量問題,過分依賴或者不正確的使用framework的后果同樣是致命的。
framework替你做的事情越多,程序員往往就越難以使用它,但是如果他做的東西少,程序員就會(huì)喊自己做了很多重復(fù)勞動(dòng)。因此這兩者之間要有一個(gè)平衡。從這個(gè)角度來講,spring做的比jboss要好。
展望將來,需求的規(guī)模還會(huì)繼續(xù)增長,而邏輯的復(fù)雜度仍然會(huì)以相對(duì)于需求的復(fù)雜度的指數(shù)形式增長。但是人的腦子跟幾十年前沒什么區(qū)別,還是同時(shí)能處理那么多邏輯。尖銳問題肯定會(huì)出現(xiàn)。
但是解決問題的方法呢?單單靠語言特性恐怕已經(jīng)難以再做什么。人們應(yīng)當(dāng)再次反思程序這個(gè)概念本身,提出新的解決方案。或許人們會(huì)開發(fā)出更為實(shí)用的framework以定義業(yè)務(wù)邏輯,更為智能化的集成開發(fā)/協(xié)作環(huán)境工具來擴(kuò)展我們的大腦,或者其它...
--
晶晶姑娘是個(gè)好姑娘
※ 修改:·gentboy 于 Apr 18 13:28:32 2008 修改本文·[FROM: 210.13.85.*]
※ 來源:·水木社區(qū) newsmth.net·[FROM: 210.13.85.*]