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

原文被墻,覺得該文其意不錯,但其所指其實不是很明確,用語生澀啊...
=================================================================
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)建分層抽象,并且一絲不茍地遵循他們的邊界。

但是當開始調(diào)試時發(fā)生了什么呢?教條地(Dogmatically)遵循抽象邊界就像戴了一個眼罩;當一個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>
            国产精品国产三级国产a| 欧美成人精精品一区二区频| 国产精品美女| 欧美日韩成人精品| 欧美日韩精品免费观看视频完整| 蜜臀va亚洲va欧美va天堂| 久久看片网站| 欧美jizzhd精品欧美喷水| 欧美第一黄色网| 欧美日韩另类国产亚洲欧美一级| 国产精品jizz在线观看美国| 国产欧美视频在线观看| 黑人巨大精品欧美黑白配亚洲| 黄色在线一区| 99精品免费网| 欧美一区二区黄色| 久久久青草婷婷精品综合日韩| 美女日韩在线中文字幕| 亚洲激情在线观看| 亚洲国产精品久久人人爱蜜臀| 亚洲精品综合在线| 亚洲欧美视频在线| 暖暖成人免费视频| 国产欧美精品一区| 亚洲精品午夜| 久久久99精品免费观看不卡| 亚洲电影成人| 亚洲欧美日韩国产综合精品二区| 免费日韩av片| 欧美日韩一区二区在线| 亚洲欧美春色| 欧美不卡高清| 国产一区二区三区在线观看精品 | 亚洲欧美日韩国产精品| 免播放器亚洲一区| 国产精品影音先锋| 99re8这里有精品热视频免费 | 亚洲国产激情| 午夜亚洲视频| 亚洲乱码久久| 欧美成人国产一区二区| 国产九色精品成人porny| 亚洲欧洲精品成人久久奇米网| 欧美一区视频| 亚洲视频在线看| 欧美老女人xx| 亚洲欧洲一区二区三区久久| 久久综合伊人77777麻豆| 亚洲欧美色婷婷| 国产精品一区二区女厕厕| 亚洲视频大全| 一区二区欧美日韩| 欧美日韩一区二区三区免费| 99国产精品久久久久久久成人热| 久久综合九九| 西瓜成人精品人成网站| 国产精品久久久久久久午夜| 亚洲午夜视频在线| 一区二区三区国产盗摄| 欧美精品免费在线| 日韩亚洲欧美一区二区三区| 欧美大片在线观看| 免费日韩av电影| 亚洲精品久久久久久久久久久 | 亚洲字幕一区二区| 国产精品乱人伦中文| 亚洲综合日韩中文字幕v在线| 日韩视频在线观看一区二区| 欧美久久久久中文字幕| 亚洲在线一区二区| 亚洲一区中文字幕在线观看| 国产视频久久久久久久| 久久综合福利| 久久午夜影视| 亚洲电影欧美电影有声小说| 亚洲高清视频的网址| 欧美日本韩国在线| 亚洲影视九九影院在线观看| 亚洲尤物影院| 久久视频在线免费观看| 久久久天天操| 亚洲日本黄色| 中文亚洲免费| 黄色日韩网站| 亚洲黄色免费| 国产精品丝袜白浆摸在线| 久久久国产精品一区二区三区| 久久精品国产99国产精品澳门| 亚洲国产另类久久久精品极度| 亚洲国产经典视频| 欧美日韩一区二区三区免费| 欧美一区激情| 欧美激情视频在线免费观看 欧美视频免费一 | 亚洲少妇诱惑| 篠田优中文在线播放第一区| 在线日本高清免费不卡| 亚洲精品欧洲| 精品白丝av| 一二三区精品福利视频| 一区二区在线观看视频| 亚洲伦理在线观看| 国产主播一区二区三区四区| 亚洲欧洲一区二区天堂久久| 国产一区二区三区四区老人| 亚洲日韩欧美视频| 一区免费视频| 午夜精品亚洲一区二区三区嫩草| 亚洲九九精品| 久久婷婷麻豆| 久久精品人人做人人爽电影蜜月| 欧美精品久久一区二区| 女人色偷偷aa久久天堂| 国产精品毛片大码女人| 亚洲精品欧美在线| 亚洲精品国产精品久久清纯直播 | 篠田优中文在线播放第一区| 99精品欧美一区二区三区| 欧美影院成年免费版| 一区二区三区久久精品| 蜜桃伊人久久| 美女精品在线| 国产一区二区精品丝袜| 亚洲一区二区在线播放| 亚洲作爱视频| 欧美国产日韩在线| 免费人成网站在线观看欧美高清 | 国产精品婷婷| 亚洲最新在线视频| 99精品视频免费观看视频| 久久综合久久综合久久综合| 久久久www成人免费精品| 国产精品任我爽爆在线播放| 夜夜爽www精品| 国产女人水真多18毛片18精品视频| 亚洲日本va午夜在线电影| 久久精品国产第一区二区三区| 午夜精品国产精品大乳美女| 欧美日韩一级视频| 亚洲美女av在线播放| 一二三四社区欧美黄| 欧美国产日韩一二三区| 亚洲精品欧洲精品| 亚洲综合色丁香婷婷六月图片| 国产精品久久久久影院亚瑟| 亚洲一区免费观看| 欧美一区二区三区视频在线| 国产欧美日韩激情| 欧美一区二区高清在线观看| 久久婷婷国产综合精品青草| 国产综合色一区二区三区| 久久久高清一区二区三区| 久久视频在线免费观看| 影院欧美亚洲| 欧美激情一级片一区二区| 亚洲伦理一区| 久久精品国产亚洲精品| 韩国v欧美v日本v亚洲v| 久久精品91久久香蕉加勒比| 欧美成人影音| 这里只有视频精品| 国产目拍亚洲精品99久久精品 | 亚洲国产美女精品久久久久∴| 老鸭窝亚洲一区二区三区| 欧美激情亚洲激情| 亚洲天堂成人| 国产在线拍偷自揄拍精品| 老鸭窝亚洲一区二区三区| 日韩亚洲一区在线播放| 欧美一区国产在线| 亚洲国内高清视频| 国产精品高清在线观看| 久久精品国产在热久久 | 欧美一区二区日韩| 狠狠色伊人亚洲综合网站色| 欧美激情精品久久久久久| 亚洲私拍自拍| 欧美 日韩 国产在线| 亚洲一级影院| 影音先锋久久| 国产精品露脸自拍| 久久久久久综合网天天| 亚洲电影免费| 欧美主播一区二区三区美女 久久精品人 | 亚洲一区黄色| 永久免费精品影视网站| 欧美午夜在线观看| 久久久久网址| 亚洲一区精品在线| 欧美激情一区二区三区蜜桃视频| 亚洲欧美日韩精品久久久| 亚洲三级影院| 精品99一区二区| 国产精品久久久久久久久免费 | 亚洲久久视频| 国产亚洲va综合人人澡精品| 欧美日韩xxxxx| 久久综合99re88久久爱| 亚洲一区视频在线观看视频| 亚洲精品久久久久| 欧美成人视屏|