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

原文被墻,覺得該文其意不錯,但其所指其實不是很明確,用語生澀啊...
=================================================================
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>
            欧美日本国产一区| 久久久午夜精品| 欧美日韩精品在线观看| av成人老司机| 日韩一级二级三级| 欧美丝袜一区二区三区| 香蕉成人久久| 国产亚洲福利| 久久久久国产精品一区| 久久久另类综合| 亚洲国产日韩精品| 亚洲精品免费一二三区| 免费欧美在线| 国产精品99久久久久久久久| 一区二区三区四区五区视频| 国产美女精品视频免费观看| 久久夜色撩人精品| 欧美激情精品久久久久久久变态| 亚洲丝袜av一区| 欧美制服第一页| 一本久久知道综合久久| 先锋影音一区二区三区| 亚洲福利一区| 亚洲午夜久久久久久久久电影院 | 在线视频欧美精品| 国产日韩欧美综合精品| 欧美激情精品久久久久| 欧美日韩在线播放三区| 久久精品一区二区三区不卡牛牛| 麻豆成人av| 午夜伦理片一区| 欧美1区2区视频| 欧美一区二区三区男人的天堂| 久久青草久久| 亚洲欧美中文另类| 欧美电影在线观看| 欧美一区二区三区播放老司机| 麻豆精品国产91久久久久久| 性久久久久久久久久久久| 久久全球大尺度高清视频| 亚洲一区欧美| 欧美高清视频在线播放| 久久国产精品72免费观看| 欧美日本亚洲视频| 亚洲第一级黄色片| 韩国一区电影| 亚洲一级免费视频| 亚洲二区在线视频| 欧美在线综合视频| 欧美在线免费观看视频| 欧美色一级片| 亚洲精品美女| 亚洲精品美女91| 久久精品国产96久久久香蕉| 午夜日韩视频| 国产精品劲爆视频| 亚洲日韩视频| 最近中文字幕mv在线一区二区三区四区| 西西裸体人体做爰大胆久久久| 欧美国产一区二区在线观看| 欧美高清在线观看| 在线播放日韩| 久久黄色网页| 久久伊人精品天天| 国产一区二区三区黄| 亚洲系列中文字幕| 午夜精品福利电影| 国产精品美女久久久久aⅴ国产馆| 一区二区三区四区国产| 欧美精品aa| 亚洲黄页视频免费观看| 最新日韩欧美| 欧美激情综合色综合啪啪| 亚洲欧洲一区二区三区久久| 一本色道久久99精品综合| 欧美日本精品一区二区三区| 亚洲免费av电影| 亚洲欧美日韩在线播放| 国产精品欧美日韩一区| 欧美一区二区视频在线| 久久网站免费| 亚洲国产精品成人久久综合一区| 老司机一区二区三区| 亚洲欧洲精品天堂一级| 99热精品在线| 欧美性猛交xxxx乱大交蜜桃| 亚洲免费在线观看| 久久综合久久美利坚合众国| 亚洲第一视频网站| 欧美精品综合| 亚洲欧美日韩在线观看a三区| 久久久久青草大香线综合精品| 在线观看一区欧美| 欧美日本在线视频| 亚洲午夜国产一区99re久久 | 国产亚洲精品一区二区| 久久精品一区二区国产| 亚洲国产欧美在线人成| 亚洲欧美春色| 在线播放中文字幕一区| 欧美日韩国产综合久久| 欧美一级电影久久| 欧美激情在线狂野欧美精品| 亚洲欧美日本国产有色| 精品成人在线视频| 欧美视频日韩| 久久女同互慰一区二区三区| 日韩视频一区| 久久亚洲影音av资源网| 亚洲图片你懂的| 在线不卡中文字幕| 欧美四级电影网站| 免费久久精品视频| 小黄鸭精品密入口导航| 最新国产乱人伦偷精品免费网站 | 国内在线观看一区二区三区| 欧美看片网站| 久久久综合视频| 亚洲夜晚福利在线观看| 亚洲精品久久嫩草网站秘色| 久久综合久久综合这里只有精品| 一本色道久久精品| 伊人成人在线视频| 国产日韩欧美a| 欧美日本韩国一区| 欧美成ee人免费视频| 久久精品免费观看| 亚洲一区免费在线观看| 亚洲美女尤物影院| 亚洲国产高清视频| 免费一级欧美片在线播放| 欧美一区二区三区视频免费| 一级成人国产| 亚洲精品少妇网址| 亚洲电影免费在线| 欲香欲色天天天综合和网| 国产亚洲欧美色| 国产日韩欧美亚洲| 国产精品视频专区| 国产精品久久久久一区二区三区共| 欧美成人免费在线视频| 最新高清无码专区| 欧美激情在线播放| 亚洲国产精品999| 欧美www在线| 欧美jjzz| 美女精品国产| 欧美激情一区二区三区| 欧美大片第1页| 亚洲高清视频在线观看| 亚洲高清资源| 亚洲欧洲一区二区在线播放| 亚洲国产精品一区二区尤物区| 欧美激情精品久久久久久| 亚洲电影第1页| 亚洲美女电影在线| 亚洲免费观看在线观看| 亚洲午夜精品福利| 午夜久久资源| 久久久精品欧美丰满| 久久伊人精品天天| 欧美国产大片| 欧美日韩极品在线观看一区| 欧美无砖砖区免费| 国产九九精品| 在线观看亚洲a| 亚洲精品一区二区三区樱花| 日韩一本二本av| 这里只有精品在线播放| 欧美影院午夜播放| 免费一级欧美片在线观看| 最新亚洲视频| 亚洲制服av| 久久一区精品| 欧美性大战久久久久| 国产中文一区二区| 亚洲精品三级| 久久九九电影| 亚洲欧洲精品一区二区精品久久久| 日韩视频专区| 久久久7777| 欧美日韩在线视频首页| 韩日精品视频| 一区二区三区 在线观看视| 欧美一区二区三区精品| 欧美激情麻豆| 亚洲男人av电影| 欧美顶级大胆免费视频| 国产农村妇女毛片精品久久莱园子 | 一区二区三区高清在线| 久久久国产精品亚洲一区| 欧美日韩成人| 影音先锋另类| 香蕉免费一区二区三区在线观看| 免费不卡中文字幕视频| 亚洲欧美一区二区激情| 欧美精品首页| 亚洲电影欧美电影有声小说| 亚洲欧美国产精品桃花| 亚洲国产一区在线观看|