青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

原文被墻,覺得該文其意不錯,但其所指其實不是很明確,用語生澀啊...
=================================================================
http://calculist.blogspot.com/2007/09/science-and-engineering.html
Science and engineering
從 The Little Calculist 作者:Dave Herman

Joel Spolsky 有一個關(guān)于 軟件開發(fā)周期的階段 的帖子,該貼出乎意料地結(jié)束了我自己的觀察。在Joel看來,第一個階段是藝術(shù)(設(shè)計階段),第二個階段是工程(構(gòu)建階段)第三個階段是科學(xué)(調(diào)試和測試階段).

Joel的興趣是軟件管理和管理工具,但我對于開發(fā)工具有更多的興趣。一旦你認出了軟件開發(fā)的工程方面和科學(xué)方面的分水嶺,你就可以更好地理解開發(fā)方法的很多緊張對立,其中的一種對立導(dǎo)致了很多辯論。之所以產(chǎn)生這種不安,是因為基本的不變的不可褻瀆的(更別說神圣的圣潔的虔誠的)工程法則有時候和科學(xué)實踐是不一致的。
也就是說:抽象和模塊性是軟件工程的心和肺,法則1,2,3是“局部化關(guān)注點,也就是DRY,分離關(guān)注點,使關(guān)注點正交”。更簡單的說:使用抽象并且不要違反。通過使得一個關(guān)注點完全不注意(也就是說:參數(shù)化)另一個關(guān)注點,你可以最大自由地改變一個關(guān)注點而不影響另一個關(guān)注點。這是因為(allows for)局部化的原因,依次引發(fā)了獨立的開發(fā)和維護。訓(xùn)練有素的開發(fā)者創(chuàng)建分層抽象,并且一絲不茍地遵循他們的邊界。

但是當(dāng)開始調(diào)試時發(fā)生了什么呢?教條地(Dogmatically)遵循抽象邊界就像戴了一個眼罩;當(dāng)一個bug第一次出現(xiàn)的時候,你根本不知道它是隱藏在哪個抽象里,還是在層與層的交互之間。另一個思考抽象盒子內(nèi)部的通常的推論是 沖動地假設(shè)這個bug是別人的錯誤。(“一定是編譯器的錯!”) 我想起 Knuth 關(guān)于計算機科學(xué)的引用:
     這樣的人非常擅長處理不同的法則應(yīng)用到不同情況下的情形,他們是那些可以快速地改變抽象層次,可以同時觀察很多大的事物和小的細節(jié)的人。——引自 Hartmanis 的圖靈獎獲獎感言
我認為這里的描述更多的是在軟件開發(fā)的科學(xué)面或者也可以說是設(shè)計方面的——但不是工程方面的。
因為調(diào)試和測試是和觀察和理解一個現(xiàn)有的系統(tǒng)相關(guān)的,而不是構(gòu)建或修改一個系統(tǒng),我們自己構(gòu)建的藩籬(譯注:指層次抽象)使得我們的工程原則變成了障礙。調(diào)試工具,集成開發(fā)環(huán)境,測試框架,等等都被一種需要違反抽象邊界的需求而賦予了特色。

結(jié)果,干凈和骯臟(就像 Mitch 叫他們的)開始撕咬混戰(zhàn),他們爭斗的問題是:我們的軟件開發(fā)框架 對他們對 FIaI(NtMSHaG)LoE (ML) (譯注:實在不知道怎么翻譯)的堅持 是應(yīng)該絕對嚴格呢,或是絕對寬松(Smalltalk)? 我不知道通過 構(gòu)建涵蓋這些不同開發(fā)模型的軟件框架,我們是否能夠做的更好。

=================================================================
原文:

Joel Spolsky has a post about the phases of the software development cycle that's remarkably close to my own observations. In Joel's view, the first phase is art (i.e., design phase); the second is engineering (construction); and the third is science (debugging and testing).

Joel's interest is in project management and management tools, but mine is more in development tools. Once you recognize the divide between the engineering and science aspects of software development, you can better understand one of the tensions in the approach to development, a tension which leads to plenty of heated debate. This tension comes about because the Fundamental Immutable and Inviolable (Not to Mention Sacred, Holy, and Good) Laws of Engineering are sometimes at odds with the practice of science.

To wit: abstraction and modularity are the heart and lungs of software engineering. Rules #1 , 2 and 3 are "Localize concerns, i.e. , separate concerns and enforce their orthogonality." More simply: use abstractions and don't violate them. By making one concern completely oblivious to (i.e., parametric in) another, you maximize your freedom to change one without affecting the other. This allows for local reasoning which in turn leads to separable development and maintenance. Disciplined developers create layered abstractions and fastidiously respect their boundaries.

But what happens when you start debugging? Dogmatically adhering to abstraction boundaries is like wearing blinders; when a bug first arises, you never know which abstraction layer it's hiding in, or if it's in the interaction between layers. Another common consequence of thinking inside the abstraction box is impulsively assuming the bug is someone else's fault. ("The compiler must be broken!") I'm reminded of Knuth's quote about computer scientists:
Such people are especially good at dealing with situations where different rules apply in different cases; they are individuals who can rapidly change levels of abstraction, simultaneously seeing things "in the large" and "in the small."
          -- quoted in Hartmanis's
Turing Award lecture
I think this is describing more the science and perhaps also the design aspects--but not the engineering aspect--of software development.

Because debugging and testing are about observing and understanding an existing system, rather than constructing or modifying a system, the barriers we construct to enforce our engineering principles become obstacles. Debugging tools, IDE's, testing frameworks, etc. are all characterized by a need to violate abstraction boundaries.

As a result, the Cleans and Dirties (as Mitch calls them) fight tooth and nail about whether our software development frameworks should be absolutely strict in their adherence to the FIaI(NtMSHaG)LoE (ML) or absolutely lax (Smalltalk). I wonder if we couldn't do better by building software frameworks that were aware of these different modes of development.
posted on 2011-10-28 15:53 cingoli 閱讀(1880) 評論(7)  編輯 收藏 引用
Comments

只有注冊用戶登錄后才能發(fā)表評論。
網(wǎng)站導(dǎo)航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


 
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            午夜精品福利在线观看| 亚洲欧洲精品天堂一级| 欧美一级久久久| 99香蕉国产精品偷在线观看| 91久久国产综合久久| 久久久91精品国产一区二区三区 | 亚洲精品小视频在线观看| 欧美国产日产韩国视频| 久色婷婷小香蕉久久| 欧美成人蜜桃| 欧美视频一区二| 国产精品激情偷乱一区二区∴| 欧美亚州一区二区三区| 国产日韩欧美一区二区| 樱桃成人精品视频在线播放| 日韩午夜电影| 另类成人小视频在线| 久久久www免费人成黑人精品 | 玖玖视频精品| 亚洲精品乱码久久久久久日本蜜臀| 亚洲精品视频在线| 先锋资源久久| 欧美激情一区二区三级高清视频 | 中文欧美在线视频| 欧美在线视频一区二区| 欧美1区免费| 国产性猛交xxxx免费看久久| 亚洲黄网站在线观看| 亚洲一区二区免费在线| 欧美 亚欧 日韩视频在线| 一道本一区二区| 美女久久一区| 国产精品久久久久久久久果冻传媒| 久久精品国产免费观看| 欧美激情视频给我| 韩日成人av| 午夜视频在线观看一区二区| 亚洲国产成人精品久久| 欧美影院一区| 国产精品亚洲视频| 亚洲麻豆国产自偷在线| 久久一区精品| 亚洲深夜福利| 欧美日韩国产一中文字不卡| 永久免费精品影视网站| 欧美一区国产一区| 在线视频亚洲| 欧美日韩裸体免费视频| 亚洲美女在线国产| 欧美国产欧美亚州国产日韩mv天天看完整| 亚洲一区二区av电影| 欧美日韩无遮挡| 亚洲精品在线免费| 亚洲国产精品久久久久秋霞不卡| 久久久久久一区| 影音先锋日韩有码| 久久亚洲欧洲| 久久久www成人免费无遮挡大片| 国产人久久人人人人爽| 久久爱另类一区二区小说| 亚洲一区二区三区四区中文| 欧美小视频在线| 亚洲精品欧美| 欧美不卡三区| 欧美国产日本高清在线| 亚洲美女啪啪| 亚洲国产天堂久久综合网| 久久精品日韩欧美| 国产综合亚洲精品一区二| 久久精品国产免费观看| 欧美一级久久| 欧美日韩国产综合视频在线| 欧美主播一区二区三区| 欧美日一区二区三区在线观看国产免 | 在线观看日韩www视频免费| 久久一区亚洲| 欧美不卡高清| 亚洲性线免费观看视频成熟| 亚洲专区欧美专区| 国产在线精品自拍| 欧美激情导航| 国产精品白丝jk黑袜喷水| 欧美一区日本一区韩国一区| 久久精品国产一区二区三区| 亚洲精品国产品国语在线app| 亚洲人成亚洲人成在线观看| 国产精品久久久久久久久久ktv| 久久精品一本| 欧美电影在线免费观看网站| 午夜电影亚洲| 免费观看在线综合色| 欧美日韩三区四区| 久久高清一区| 欧美激情a∨在线视频播放| 亚洲综合色激情五月| 久久久噜噜噜久久中文字幕色伊伊 | 欧美成人蜜桃| 欧美系列电影免费观看| 久久久久久有精品国产| 欧美精品观看| 久久久精品五月天| 欧美日韩精品一本二本三本| 久久青草福利网站| 欧美日产国产成人免费图片| 久久精品国产免费看久久精品| 欧美美女bb生活片| 久久综合色播五月| 国产精品三区www17con| 亚洲欧洲精品一区二区三区| 国产亚洲亚洲| 亚洲一区免费观看| 亚洲激情另类| 久久精品系列| 性亚洲最疯狂xxxx高清| 欧美国产日韩免费| 久久这里有精品15一区二区三区| 国产精品久久久久91| 亚洲国产欧美日韩| 国产日本欧美一区二区三区| 亚洲区一区二区三区| 亚洲第一成人在线| 欧美伊久线香蕉线新在线| 亚洲综合第一| 欧美三区在线视频| 亚洲区一区二| 亚洲国产成人久久综合一区| 欧美一级一区| 亚洲三级色网| 亚洲婷婷在线| 欧美成人一区二区三区片免费| 久久婷婷蜜乳一本欲蜜臀| 国产精品午夜春色av| 99视频超级精品| 99v久久综合狠狠综合久久| 免费看av成人| 亚洲国产高清自拍| 亚洲麻豆一区| 欧美日韩视频| 亚洲视频欧美视频| 亚洲天堂av图片| 国产精品入口尤物| 欧美在线播放| 欧美成人精品在线播放| 亚洲人成毛片在线播放| 欧美精品福利| 亚洲一区二区动漫| 久久天天狠狠| 亚洲国产精品国自产拍av秋霞| 欧美jizz19性欧美| 亚洲精品一区二区三区在线观看| aa成人免费视频| 欧美天天影院| 国产精品在线看| 亚洲一级在线| 国产亚洲精品久久久久久| 久久国产精品久久久| 另类av导航| 日韩亚洲欧美一区二区三区| 欧美日韩性生活视频| 亚洲一区二区三区免费视频| 久久久夜精品| 亚洲免费观看高清完整版在线观看熊 | 模特精品在线| 日韩一级免费观看| 亚洲欧美一区二区三区久久| 国产亚洲精品aa| 久久久久欧美精品| 亚洲区免费影片| 欧美一区二区播放| 亚洲黄色性网站| 国产精品色网| 欧美大成色www永久网站婷| 亚洲视频网站在线观看| 久久综合免费视频影院| 一区二区av在线| 韩日在线一区| 国产精品日日摸夜夜添夜夜av| 美日韩免费视频| 亚洲一卡二卡三卡四卡五卡| 久久亚洲精品一区二区| 亚洲国产小视频| 国产欧美日韩伦理| 欧美大片一区二区| 午夜亚洲性色视频| 亚洲精品网站在线播放gif| 久久久精品国产免大香伊 | 久久精品一区二区三区不卡牛牛| 一区二区三区视频在线播放| 国产女精品视频网站免费| 欧美诱惑福利视频| 亚洲精品视频在线观看网站| 久久久人成影片一区二区三区| 亚洲性图久久| 亚洲丰满在线| 国内偷自视频区视频综合| 国产精品大全| 欧美日韩美女一区二区| 欧美大片va欧美在线播放| 久久精品人人做人人爽电影蜜月| 一本色道久久88综合日韩精品|