锘??xml version="1.0" encoding="utf-8" standalone="yes"?>狠狠色伊人久久精品综合网,国内精品久久久久久中文字幕,精品人妻伦一二三区久久 http://www.shnenglu.com/qixinkui/zh-cnWed, 07 May 2025 19:46:08 GMTWed, 07 May 2025 19:46:08 GMT60銆愯瘧銆戜竴綃?Dave Herman 璁茶蔣浠跺紑鍙戝懆鏈熼樁孌電殑甯栧瓙錛屾秹鍙?鑹烘湳錛屽伐紼嬶紝縐戝錛屾娊璞?妗嗘灦 宸ュ叿 榪欎簺鍐呭http://www.shnenglu.com/qixinkui/archive/2011/10/28/159272.htmlcingolicingoliFri, 28 Oct 2011 07:53:00 GMThttp://www.shnenglu.com/qixinkui/archive/2011/10/28/159272.htmlhttp://www.shnenglu.com/qixinkui/comments/159272.htmlhttp://www.shnenglu.com/qixinkui/archive/2011/10/28/159272.html#Feedback7http://www.shnenglu.com/qixinkui/comments/commentRss/159272.htmlhttp://www.shnenglu.com/qixinkui/services/trackbacks/159272.html
鍘熸枃琚錛岃寰楄鏂囧叾鎰忎笉閿欙紝浣嗗叾鎵鎸囧叾瀹炰笉鏄緢鏄庣‘錛岀敤璇敓娑╁晩...
=================================================================
http://calculist.blogspot.com/2007/09/science-and-engineering.html
Science and engineering
浠?The Little Calculist 浣滆咃細Dave Herman

Joel Spolsky 鏈変竴涓叧浜?杞歡寮鍙戝懆鏈熺殑闃舵 鐨勫笘瀛愶紝璇ヨ創鍑轟箮鎰忔枡鍦扮粨鏉熶簡鎴戣嚜宸辯殑瑙傚療銆傚湪Joel鐪嬫潵錛岀涓涓樁孌墊槸鑹烘湳錛堣璁¢樁孌碉級錛岀浜屼釜闃舵鏄伐紼嬶紙鏋勫緩闃舵錛夌涓変釜闃舵鏄瀛︼紙璋冭瘯鍜屾祴璇曢樁孌碉級.

Joel鐨勫叴瓚f槸杞歡綆$悊鍜岀鐞嗗伐鍏鳳紝浣嗘垜瀵逛簬寮鍙戝伐鍏鋒湁鏇村鐨勫叴瓚c備竴鏃︿綘璁ゅ嚭浜嗚蔣浠跺紑鍙戠殑宸ョ▼鏂歸潰鍜岀瀛︽柟闈㈢殑鍒嗘按宀紝浣犲氨鍙互鏇村ソ鍦扮悊瑙e紑鍙戞柟娉曠殑寰堝绱у紶瀵圭珛錛屽叾涓殑涓縐嶅绔嬪鑷翠簡寰堝杈╄銆備箣鎵浠ヤ駭鐢熻繖縐嶄笉瀹夛紝鏄洜涓哄熀鏈殑涓嶅彉鐨勪笉鍙旱娓庣殑錛堟洿鍒紲炲湥鐨勫湥媧佺殑铏旇瘹鐨勶級宸ョ▼娉曞垯鏈夋椂鍊欏拰縐戝瀹炶返鏄笉涓鑷寸殑銆?br />
涔熷氨鏄錛氭娊璞″拰妯″潡鎬ф槸杞歡宸ョ▼鐨勫績鍜岃偤錛屾硶鍒?,2,3鏄?#8220;灞閮ㄥ寲鍏蟲敞鐐癸紝涔熷氨鏄疍RY錛屽垎紱誨叧娉ㄧ偣錛屼嬌鍏蟲敞鐐規浜?#8221;銆傛洿綆鍗曠殑璇達細浣跨敤鎶借薄騫朵笖涓嶈榪濆弽銆傞氳繃浣垮緱涓涓叧娉ㄧ偣瀹屽叏涓嶆敞鎰忥紙涔熷氨鏄錛氬弬鏁板寲錛夊彟涓涓叧娉ㄧ偣錛屼綘鍙互鏈澶ц嚜鐢卞湴鏀瑰彉涓涓叧娉ㄧ偣鑰屼笉褰卞搷鍙︿竴涓叧娉ㄧ偣銆傝繖鏄洜涓?allows for)灞閮ㄥ寲鐨勫師鍥狅紝渚濇寮曞彂浜嗙嫭绔嬬殑寮鍙戝拰緇存姢銆傝緇冩湁绱犵殑寮鍙戣呭垱寤哄垎灞傛娊璞★紝騫朵笖涓涓濅笉鑻熷湴閬靛驚浠栦滑鐨勮竟鐣屻?br />
浣嗘槸褰撳紑濮嬭皟璇曟椂鍙戠敓浜嗕粈涔堝憿錛熸暀鏉″湴錛圖ogmatically錛夐伒寰娊璞¤竟鐣屽氨鍍忔埓浜嗕竴涓溂緗╋紱褰撲竴涓猙ug絎竴嬈″嚭鐜扮殑鏃跺欙紝浣犳牴鏈笉鐭ラ亾瀹冩槸闅愯棌鍦ㄥ摢涓娊璞¢噷錛岃繕鏄湪灞備笌灞傜殑浜や簰涔嬮棿銆傚彟涓涓濊冩娊璞$洅瀛愬唴閮ㄧ殑閫氬父鐨勬帹璁烘槸 鍐插姩鍦板亣璁捐繖涓猙ug鏄埆浜虹殑閿欒銆傦紙“涓瀹氭槸緙栬瘧鍣ㄧ殑閿?”錛?鎴戞兂璧?Knuth 鍏充簬璁$畻鏈虹瀛︾殑寮曠敤錛?/div>
     榪欐牱鐨勪漢闈炲父鎿呴暱澶勭悊涓嶅悓鐨勬硶鍒欏簲鐢ㄥ埌涓嶅悓鎯呭喌涓嬬殑鎯呭艦錛屼粬浠槸閭d簺鍙互蹇熷湴鏀瑰彉鎶借薄灞傛錛屽彲浠ュ悓鏃惰瀵熷緢澶氬ぇ鐨勪簨鐗╁拰灝忕殑緇嗚妭鐨勪漢銆?#8212;—寮曡嚜 Hartmanis 鐨勫浘鐏靛鑾峰鎰熻█
鎴戣涓鴻繖閲岀殑鎻忚堪鏇村鐨勬槸鍦ㄨ蔣浠跺紑鍙戠殑縐戝闈㈡垨鑰呬篃鍙互璇存槸璁捐鏂歸潰鐨?#8212;—浣嗕笉鏄伐紼嬫柟闈㈢殑銆?br />
鍥犱負璋冭瘯鍜屾祴璇曟槸鍜岃瀵熷拰鐞嗚В涓涓幇鏈夌殑緋葷粺鐩稿叧鐨勶紝鑰屼笉鏄瀯寤烘垨淇敼涓涓郴緇燂紝鎴戜滑鑷繁鏋勫緩鐨勮棭綃憋紙璇戞敞錛氭寚灞傛鎶借薄錛変嬌寰楁垜浠殑宸ョ▼鍘熷垯鍙樻垚浜嗛殰紕嶃傝皟璇曞伐鍏鳳紝闆嗘垚寮鍙戠幆澧冿紝嫻嬭瘯妗嗘灦錛岀瓑絳夐兘琚竴縐嶉渶瑕佽繚鍙嶆娊璞¤竟鐣岀殑闇姹傝岃祴浜堜簡鐗硅壊銆?/div>
緇撴灉錛屽共鍑鍜岃偖鑴忥紙灝卞儚 Mitch 鍙粬浠殑錛夊紑濮嬫挄鍜販鎴橈紝浠栦滑浜夋枟鐨勯棶棰樻槸錛氭垜浠殑杞歡寮鍙戞鏋?瀵逛粬浠 FIaI(NtMSHaG)LoE (ML) 錛堣瘧娉細瀹炲湪涓嶇煡閬撴庝箞緲昏瘧錛夌殑鍧氭寔 鏄簲璇ョ粷瀵逛弗鏍煎憿錛屾垨鏄粷瀵瑰鏉?Smalltalk)錛?鎴戜笉鐭ラ亾閫氳繃 鏋勫緩娑電洊榪欎簺涓嶅悓寮鍙戞ā鍨嬬殑杞歡妗嗘灦錛屾垜浠槸鍚﹁兘澶熷仛鐨勬洿濂姐?/div>
=================================================================
鍘熸枃錛?br />
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.


cingoli 2011-10-28 15:53 鍙戣〃璇勮
]]> 亚洲人成伊人成综合网久久久| 久久精品无码一区二区日韩AV| 久久久久亚洲AV无码观看| 国产精品99久久久精品无码| 久久国产色AV免费观看| 久久精品国产精品亚洲人人| 亚洲精品美女久久久久99| 91精品国产色综久久| 午夜精品久久久久久99热| 精品欧美一区二区三区久久久| 免费精品久久天干天干| 日本精品久久久中文字幕| 亚洲熟妇无码另类久久久| 久久激情亚洲精品无码?V| 久久夜色精品国产网站| 久久综合色老色| 久久99精品国产99久久6| 亚洲午夜久久久久久久久电影网| 99久久国产综合精品网成人影院 | 久久青青草原国产精品免费| 欧美精品福利视频一区二区三区久久久精品| 日本人妻丰满熟妇久久久久久| 伊人久久大香线蕉成人| 久久久精品日本一区二区三区| 97久久国产亚洲精品超碰热| 久久久久久久久波多野高潮| 久久综合日本熟妇| 香港aa三级久久三级| 狠狠色婷婷久久一区二区三区 | 久久久国产精品网站| 久久精品国产免费观看| 色诱久久av| 亚洲欧美精品一区久久中文字幕| 丁香五月综合久久激情| 久久久久久亚洲Av无码精品专口 | 久久国产免费直播| 久久乐国产综合亚洲精品| 久久精品国产亚洲av麻豆图片| 国产欧美久久久精品影院| 久久精品无码一区二区WWW| 波多野结衣AV无码久久一区|