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

2011年10月28日

原文被墻,覺得該文其意不錯,但其所指其實不是很明確,用語生澀啊...
=================================================================
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ā)工具有更多的興趣。一旦你認(rèn)出了軟件開發(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)用到不同情況下的情形,他們是那些可以快速地改變抽象層次,可以同時觀察很多大的事物和小的細(xì)節(jié)的人。——引自 Hartmanis 的圖靈獎獲獎感言
我認(rèn)為這里的描述更多的是在軟件開發(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)該絕對嚴(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>
            亚洲大片在线观看| 在线综合亚洲| 亚洲福利一区| 久久精品亚洲乱码伦伦中文 | 99热精品在线观看| 亚洲综合社区| 激情久久五月天| 欧美精品激情| 亚洲最黄网站| 亚洲影院在线观看| 久久男人av资源网站| 亚洲国产婷婷| 国产精品欧美日韩一区| 最新中文字幕一区二区三区| 乱中年女人伦av一区二区| 91久久久久久| 亚洲精品久久久蜜桃| 国产丝袜一区二区三区| 欧美成人精品| 午夜精品一区二区三区在线播放| 久久欧美肥婆一二区| 欧美顶级少妇做爰| 亚洲欧美色一区| 亚洲人妖在线| 亚洲欧美日韩国产另类专区| 在线一区二区三区四区| 性欧美激情精品| 99精品久久免费看蜜臀剧情介绍| 国语自产精品视频在线看8查询8| 欧美日韩一区二区在线播放| 久久综合九色九九| 亚洲一区激情| 快she精品国产999| 国产精品九九| 欧美午夜在线一二页| 欧美激情四色 | 欧美一区二区三区免费大片| 亚洲精品乱码久久久久久黑人 | 国产亚洲精品久久久久久| 欧美午夜精品久久久久久孕妇| 国产亚洲欧美日韩精品| 这里只有精品视频| 欧美岛国激情| 久久99伊人| 久久久国产一区二区| 欧美视频日韩视频| 国产精品高潮呻吟| 日韩视频免费大全中文字幕| 亚洲乱码日产精品bd| 久久久噜噜噜久久久| 亚洲性视频网站| 国产精品99久久久久久人| 在线亚洲一区| 欧美日本韩国| 国产欧美日韩免费| 国产一区二区三区无遮挡| 一区二区三区高清不卡| 女生裸体视频一区二区三区| 欧美国产亚洲精品久久久8v| 亚洲大胆美女视频| 亚洲国产精品热久久| 亚洲精品国精品久久99热一| 国产精品一区在线观看| 国产精品免费观看在线| 国产欧美精品一区二区色综合 | 99re8这里有精品热视频免费| 亚洲精品在线二区| 夜夜嗨一区二区| 欧美另类一区| 亚洲一区二区网站| 亚洲影院高清在线| 欧美日韩精品免费看| 伊人久久大香线蕉av超碰演员| 狠狠久久五月精品中文字幕| 午夜精品久久久| 欧美日本高清视频| 亚洲欧洲一二三| 欧美www视频在线观看| 久久手机免费观看| 欧美一区二区三区四区在线观看地址| 男人的天堂成人在线| 国产亚洲欧美另类一区二区三区| 亚洲免费黄色| 一区二区三区日韩欧美| 欧美大片第1页| 99综合在线| 国产精品视频免费在线观看| 一区二区三区国产在线观看| 国产人久久人人人人爽| 国产亚洲综合在线| 狼狼综合久久久久综合网| 久久久久在线观看| 欧美成人精品一区二区| 亚洲精品乱码久久久久| 宅男精品导航| 狠久久av成人天堂| 亚洲国产日韩美| 欧美日韩另类国产亚洲欧美一级| 亚洲欧美日本国产专区一区| 久久9热精品视频| 日韩一区二区精品葵司在线| 亚洲欧美另类国产| 国产精品美女久久久久aⅴ国产馆| 欧美一级在线视频| 鲁大师影院一区二区三区| 好看的av在线不卡观看| 亚洲人永久免费| 亚洲第一偷拍| 亚洲中无吗在线| 亚洲第一视频网站| 久久精品国产精品亚洲精品| 亚洲免费av观看| 国产亚洲精品福利| 日韩视频在线一区二区| 国产一区二区三区四区五区美女| 亚洲人成久久| 尤物yw午夜国产精品视频明星 | 亚洲免费播放| 久久大香伊蕉在人线观看热2| 国产精品人人做人人爽| 欧美激情va永久在线播放| 国产伦精品一区二区三区| 亚洲国产天堂久久国产91| 国产视频精品xxxx| 一区二区三区 在线观看视| 国产精品海角社区在线观看| 欧美国产精品日韩| 国产有码在线一区二区视频| 久久精品五月婷婷| 欧美日韩一区精品| 亚洲激情自拍| 亚洲福利在线观看| 久久久久久久久久久成人| 久久成人免费电影| 久久国产日本精品| 午夜欧美精品| 国产精品毛片在线| 亚洲午夜av| 亚洲欧美综合网| 国产精品美女久久久久aⅴ国产馆| 亚洲另类自拍| 在线视频一区二区| 欧美天堂在线观看| 亚洲私人影吧| 久久av最新网址| 狠狠88综合久久久久综合网| 久久久精品性| 欧美激情一二区| 日韩午夜在线播放| 欧美视频在线观看免费| 日韩一级黄色av| 亚洲欧美另类综合偷拍| 国产美女扒开尿口久久久| 欧美一级淫片aaaaaaa视频| 久久福利毛片| 亚洲高清在线观看一区| 欧美另类视频在线| 一区二区国产精品| 欧美一区影院| 在线观看视频亚洲| 欧美国产精品久久| 久久亚洲春色中文字幕| 韩国一区二区三区在线观看 | 久久夜色精品国产欧美乱极品| 一区二区三区日韩| 国产精品久久91| 欧美一二三视频| 欧美电影免费观看网站| 亚洲伊人网站| 在线观看不卡av| 欧美日韩另类视频| 亚洲电影免费在线观看| 亚洲高清在线视频| 亚洲婷婷在线| 久久综合国产精品| 亚洲精品乱码久久久久久蜜桃麻豆 | 欧美在线视频日韩| 亚洲激情欧美| 久久av最新网址| 99国产精品国产精品久久| 国产欧美二区| 欧美国产日韩一区二区在线观看| 亚洲一区二区三区三| 欧美高清一区| 久久九九精品99国产精品| 国产精品入口日韩视频大尺度| 久久黄金**| 一本一本久久a久久精品综合妖精 一本一本久久a久久精品综合麻豆 | 欧美成年视频| 亚洲欧美日韩综合aⅴ视频| 亚洲免费婷婷| 亚洲国产毛片完整版| 国产欧美不卡| 欧美日韩妖精视频| 久久综合激情| 久久av老司机精品网站导航| 国产精品99久久久久久www| 亚洲第一精品久久忘忧草社区| 久久久久久久久久久成人| 亚洲欧美激情诱惑|