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

2011年10月28日

原文被墻,覺得該文其意不錯,但其所指其實(shí)不是很明確,用語生澀啊...
=================================================================
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è)計(jì)階段),第二個階段是工程(構(gòu)建階段)第三個階段是科學(xué)(調(diào)試和測試階段).

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

但是當(dāng)開始調(diào)試時發(fā)生了什么呢?教條地(Dogmatically)遵循抽象邊界就像戴了一個眼罩;當(dāng)一個bug第一次出現(xiàn)的時候,你根本不知道它是隱藏在哪個抽象里,還是在層與層的交互之間。另一個思考抽象盒子內(nèi)部的通常的推論是 沖動地假設(shè)這個bug是別人的錯誤。(“一定是編譯器的錯!”) 我想起 Knuth 關(guān)于計(jì)算機(jī)科學(xué)的引用:
     這樣的人非常擅長處理不同的法則應(yīng)用到不同情況下的情形,他們是那些可以快速地改變抽象層次,可以同時觀察很多大的事物和小的細(xì)節(jié)的人。——引自 Hartmanis 的圖靈獎獲獎感言
我認(rèn)為這里的描述更多的是在軟件開發(fā)的科學(xué)面或者也可以說是設(shè)計(jì)方面的——但不是工程方面的。
因?yàn)檎{(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) (譯注:實(shí)在不知道怎么翻譯)的堅(jiān)持 是應(yīng)該絕對嚴(yán)格呢,或是絕對寬松(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 @ 2011-10-28 15:53 cingoli 閱讀(1880) | 評論 (7)編輯 收藏
僅列出標(biāo)題  
 
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            一区二区三区精品| 久热精品视频在线观看一区| 国产精品日产欧美久久久久| 正在播放欧美视频| 久久av红桃一区二区小说| 亚洲无亚洲人成网站77777| 久久综合给合久久狠狠色| 欧美在线电影| 一区三区视频| 欧美啪啪一区| 亚洲欧美国产日韩天堂区| 久久久久久国产精品一区| 国产亚洲网站| 麻豆av一区二区三区久久| 亚洲高清一二三区| 亚洲视频视频在线| 日韩亚洲国产欧美| 国产午夜一区二区三区| 久久精品女人天堂| 99精品国产在热久久婷婷| 欧美成人免费播放| 国产精品一国产精品k频道56| 亚洲在线视频免费观看| 猫咪成人在线观看| 亚洲电影有码| 亚洲调教视频在线观看| 欧美激情精品久久久六区热门| 亚洲美女在线观看| 亚洲精品一区二区三| 日韩视频三区| 国产精品分类| 欧美日韩hd| 久久婷婷综合激情| 欧美综合第一页| 午夜精品福利在线| 久久久久久色| 欧美亚洲在线| 久久久久久网址| 欧美中文在线视频| 日韩视频中文字幕| 一区二区三区视频在线播放| 最新日韩中文字幕| 免费视频亚洲| 久久尤物视频| 制服诱惑一区二区| 一区二区三欧美| 狠狠色丁香婷婷综合影院| 亚洲茄子视频| 亚洲美女中文字幕| 久久亚洲精品欧美| 亚洲午夜精品久久久久久app| 亚洲字幕在线观看| 欧美国产三级| 激情欧美亚洲| 六十路精品视频| 一区二区日韩| 欧美视频中文在线看| 一区二区三区www| 日韩一级精品视频在线观看| 亚洲综合第一| 91久久久国产精品| 久久综合五月天婷婷伊人| 亚洲欧洲一区二区在线播放| 国产精品www色诱视频| 国产精品视频一| 性娇小13――14欧美| 欧美成人综合一区| 久久久亚洲国产天美传媒修理工| 欧美 日韩 国产 一区| 欧美视频在线一区| 久久精品99国产精品| 性欧美超级视频| 国产一区二区三区久久久| 蜜臀av一级做a爰片久久| 欧美一区二区三区电影在线观看| 合欧美一区二区三区| 亚洲一区二区在线播放| 欧美在线首页| 亚洲欧洲日韩综合二区| 欧美成人国产一区二区| 亚洲欧美日韩国产一区二区| 久久久精品免费视频| 国产一区二区三区av电影| 久久综合一区二区三区| 老司机67194精品线观看| 国产在线视频不卡二| 久久久一区二区三区| 欧美一区二区三区在线| 欧美性淫爽ww久久久久无| 久久视频精品在线| 欧美国产免费| 日韩视频中午一区| 欧美一区二区三区另类| 亚洲精选在线| 亚洲国产高清自拍| 久久不射网站| 美女视频一区免费观看| 性久久久久久久久久久久| 欧美紧缚bdsm在线视频| 欧美中文在线观看| 久久精品卡一| 久久精品91久久久久久再现| 国产精品久久久久一区| 国产视频一区在线观看一区免费| 亚洲国产精品高清久久久| 国产伦理一区| 一区二区三区视频观看| 久久精品人人做人人爽电影蜜月| 欧美视频在线观看一区二区| 在线中文字幕一区| 欧美中日韩免费视频| 在线欧美亚洲| 国产精品久久久久久久久免费| 老司机精品视频一区二区三区| 国内成人精品视频| 亚洲欧美日韩国产一区| 久久精品99国产精品日本| 欧美日韩在线视频观看| 久热re这里精品视频在线6| 亚洲国产91色在线| 国产精品久久网| 久久久夜夜夜| 亚洲欧美日韩国产综合在线| 欧美在线视频一区| 一区免费观看视频| 一区二区精品在线| 久久av一区| 亚洲精品日日夜夜| 欧美日韩中文字幕综合视频| 欧美中在线观看| 亚洲天堂av图片| 中日韩高清电影网| 99国产精品久久久久老师| 欧美第一黄色网| 久久久99爱| 亚洲视频免费在线| 欧美日本亚洲韩国国产| 女人香蕉久久**毛片精品| 欧美韩国日本一区| 免费成人网www| 免费不卡亚洲欧美| 蜜桃av噜噜一区| 午夜精品电影| 老司机免费视频一区二区三区| 一区二区三区久久网| 亚洲美女91| 快射av在线播放一区| 欧美有码在线视频| 亚洲国产精品一区二区三区 | 欧美一区二区三区视频在线 | 久久综合色8888| 欧美激情自拍| 欧美一级网站| 久久九九免费| 久久久综合网站| 亚洲国内欧美| 91久久精品美女高潮| 能在线观看的日韩av| 欧美日韩亚洲综合| 国产精品看片你懂得| 欧美性大战久久久久| 国产精品99久久久久久久久| 老司机午夜免费精品视频| 亚洲一区二区三区乱码aⅴ| 麻豆国产精品777777在线| 亚洲中午字幕| 国产伦一区二区三区色一情| 午夜视频久久久| 99精品视频免费观看| 亚洲午夜精品一区二区三区他趣| 欧美一区二区视频97| 欧美激情综合五月色丁香| 欧美午夜不卡| 亚洲香蕉视频| 欧美大片一区二区| 欧美国产先锋| 亚洲经典在线看| 欧美在线观看www| 欧美亚洲一区在线| 午夜精品久久久久久久蜜桃app| 亚洲免费网址| 女女同性精品视频| 国产无遮挡一区二区三区毛片日本| 亚洲欧美一区二区激情| 欧美成人精品高清在线播放| 久久夜色精品国产噜噜av| 久久美女艺术照精彩视频福利播放| 鲁大师成人一区二区三区| 久久久久久久久综合| 国产欧美日韩综合一区在线播放 | 亚洲国产专区| 一区二区三区精品视频在线观看| 欧美成人综合网站| 久热精品视频在线| 欧美成人精品三级在线观看| 亚洲资源av| 亚洲国产婷婷综合在线精品| 亚洲午夜精品网| 亚洲免费成人av电影| 在线视频亚洲一区|