锘??xml version="1.0" encoding="utf-8" standalone="yes"?>
]]>
銆銆絎竴涓楠ゆ槸甯傚満璋冪爺錛屾妧鏈拰甯傚満瑕佺粨鍚堟墠鑳戒綋鐜版渶澶т環(huán)鍊箋?/span>
銆銆絎簩涓楠ゆ槸闇姹傚垎鏋愶紝榪欎釜闃舵闇瑕佸嚭涓夋牱涓滆タ錛岀敤鎴瘋鍥撅紝鏁版嵁璇嶅吀鍜岀敤鎴鋒搷浣滄墜 鍐屻?/span>
銆銆鐢ㄦ埛瑙嗗浘鏄杞歡鐢ㄦ埛錛堝寘鎷粓绔敤鎴峰拰綆$悊鐢ㄦ埛錛夋墍鑳界湅鍒扮殑欏甸潰鏍峰紡錛岃繖閲岄潰鍖呭惈浜?/span> 寰堝鎿嶄綔鏂歸潰鐨勬祦紼嬪拰鏉′歡銆?/span>
銆銆鏁版嵁璇嶅吀鏄寚鏄庢暟鎹昏緫鍏崇郴騫跺姞浠ユ暣鐞嗙殑涓滀笢錛屽畬鎴愪簡鏁版嵁璇嶅吀錛屾暟鎹簱鐨勮璁″氨瀹屾垚 浜嗕竴鍗婂銆?/span>
銆銆鐢ㄦ埛鎿嶄綔鎵嬪唽鏄寚鏄庝簡鎿嶄綔嫻佺▼鐨勮鏄庝功銆?/span>
銆銆璇鋒敞鎰忥紝鐢ㄦ埛鎿嶄綔嫻佺▼鍜岀敤鎴瘋鍥炬槸鐢遍渶姹傚喅瀹氱殑錛屽洜姝ゅ簲璇ュ湪杞歡璁捐涔嬪墠瀹屾垚錛屽畬鎴?/span> 榪欎簺錛屽氨涓虹▼搴忕爺鍙戞彁渚涗簡綰︽潫鍜屽噯緇籌紝寰堥仐鎲懼お澶氬叕鍙擱兘涓嶆槸榪欐牱鍋氱殑錛屽洜鏋滈鍊掞紝欏?/span> 搴忎笉鍒嗭紝寮鍙戝伐浣滃拰瀹為檯闇姹傚線寰鍥犳浜х敓闅旈槀鑴辮妭鐨勭幇璞°?/span>
銆銆闇姹傚垎鏋愶紝闄や簡浠ヤ笂宸ヤ綔錛岀瑪鑰呬互涓轟綔涓洪」鐩璁¤呭簲褰撳畬鏁寸殑鍋氬嚭欏圭洰鐨勬ц兘闇姹傝鏄?/span> 涔︼紝鍥犱負寰寰鎬ц兘闇姹傚彧鏈夋噦鎶鏈殑浜烘墠鍙兘鐞嗚В錛岃繖灝遍渶瑕佹妧鏈笓瀹跺拰闇姹傛柟錛堝鎴鋒垨 鍏徃甯傚満閮ㄩ棬錛夎兘澶熸湁鐪熸鐨勬矡閫氬拰浜嗚В銆?/span>
銆銆絎笁涓楠ゆ槸姒傝璁捐錛屽皢緋葷粺鍔熻兘妯″潡鍒濇鍒掑垎錛屽茍緇欏嚭鍚堢悊鐨勭爺鍙戞祦紼嬪拰璧勬簮瑕佹眰銆?/span> 浣滀負蹇熷師鍨嬭璁℃柟娉曪紝瀹屾垚姒傝璁捐灝卞彲浠ヨ繘鍏ョ紪鐮侀樁孌典簡錛岄氬父閲囩敤榪欑鏂規(guī)硶鏄洜涓?/span> 娑夊強鐨勭爺鍙戜換鍔″睘浜庢柊棰嗗煙錛屾妧鏈富綆′漢鍛樹竴涓婃潵鏃犳硶緇欏嚭鏄庣‘鐨勮緇嗚璁¤鏄庝功錛屼絾鏄?/span> 騫朵笉鏄璇︾粏璁捐璇存槑涔︿笉閲嶈錛屼簨瀹炰笂蹇熷師鍨嬫硶鍦ㄥ畬鎴愬師鍨嬩唬鐮佸悗錛屾牴鎹瘎嫻嬬粨鏋滃拰 緇忛獙鏁欒鐨勬葷粨錛岃繕瑕侀噸鏂拌繘琛岃緇嗚璁$殑姝ラ銆?/span>
銆銆絎洓涓楠ゆ槸璇︾粏璁捐錛岃繖鏄冮獙鎶鏈笓瀹惰璁℃濈淮鐨勯噸瑕佸叧鍗★紝璇︾粏璁捐璇存槑涔﹀簲褰撴妸 鍏蜂綋鐨勬ā鍧椾互鏈錛囧共鍑錛囩殑鏂瑰紡 ( 榛戠緇撴瀯錛夋彁渚涚粰緙栫爜鑰咃紝浣垮緱緋葷粺鏁翠綋妯″潡鍖栬揪鍒版渶 澶э紱涓浠藉ソ鐨勮緇嗚璁¤鏄庝功錛屽彲浠ヤ嬌緙栫爜鐨勫鏉傛у噺浣庡埌鏈浣庯紝瀹為檯涓婏紝涓ユ牸鐨勮璇︾粏 璁捐璇存槑涔﹀簲褰撴妸姣忎釜鍑芥暟鐨勬瘡涓弬鏁扮殑瀹氫箟閮界簿綺劇粏緇嗙殑鎻愪緵鍑烘潵錛屼粠闇姹傚垎鏋愬埌姒傝 璁捐鍒板畬鎴愯緇嗚璁¤鏄庝功錛屼竴涓蔣浠墮」鐩氨搴斿綋璇村畬鎴愪簡涓鍗婁簡銆傛崲璦涔嬶紝涓涓ぇ鍨嬭蔣 浠剁郴緇熷湪瀹屾垚浜嗕竴鍗婄殑鏃跺欙紝鍏跺疄榪樻病鏈夊紑濮嬩竴琛屼唬鐮佸伐浣溿?/span>
銆銆閭d簺鎶婁綔杞歡鐨勭▼搴忓憳綆鍗曠悊瑙d負鍐欎唬鐮佺殑錛屽氨浠庢牴瀛愪笂鐘簡閿欒浜嗐?/span>
銆銆絎簲涓楠ゆ槸緙栫爜錛屽湪瑙勮寖鍖栫殑鐮斿彂嫻佺▼涓紝緙栫爜宸ヤ綔鍦ㄦ暣涓」鐩祦紼嬮噷鏈澶氫笉浼氳秴榪?/span> 1/ 2 錛岄氬父鍦?/span> 1/3 鐨勬椂闂達紝鎵璋撶(鍒涓嶈鐮嶆煷鍔燂紝璁捐榪囩▼瀹屾垚鐨勫ソ錛岀紪鐮佹晥鐜囧氨浼氭瀬澶ф彁 楂橈紝緙栫爜鏃朵笉鍚屾ā鍧椾箣闂寸殑榪涘害鍗忚皟鍜屽崗浣滄槸鏈闇瑕佸皬蹇冪殑錛屼篃璁鎬竴涓皬妯″潡鐨勯棶棰樺氨鍙?/span> 鑳藉獎鍝嶄簡鏁翠綋榪涘害錛岃寰堝紼嬪簭鍛樺洜姝よ榪仠涓嬪伐浣滅瓑寰咃紝榪欑闂鍦ㄥ緢澶氱爺鍙戣繃紼嬩腑閮?/span> 鍑虹幇榪囥傜紪鐮佹椂鐨勭浉浜掓矡閫氬拰搴旀ョ殑瑙e喅鎵嬫閮芥槸鐩稿綋閲嶈鐨勶紝瀵逛簬紼嬪簭鍛樿岃█錛?/span> bug 姘?/span> 榪滃瓨鍦紝浣犲繀欏繪案榪滈潰瀵硅繖涓棶棰橈紝澶у悕榧庨紟鐨勫井杞紝鍙浘鏈夎繛緇笁涓湀涓嶅彂琛ヤ竵鐨勬椂鍊?/span> 鍚楋紵浠庢潵娌℃湁錛?/span>
銆銆絎叚涓楠ゆ槸嫻嬭瘯
銆銆嫻嬭瘯鏈夊緢澶氱錛?/span>
銆銆鎸夌収嫻嬭瘯鎵ц鏂癸紝鍙互鍒嗕負鍐呴儴嫻嬭瘯鍜屽閮ㄦ祴璇?/span>
銆銆鎸夌収嫻嬭瘯鑼冨洿錛屽彲浠ュ垎涓烘ā鍧楁祴璇曞拰鏁翠綋鑱旇皟
銆銆鎸夌収嫻嬭瘯鏉′歡錛屽彲浠ュ垎涓烘甯告搷浣滄儏鍐墊祴璇曞拰寮傚父鎯呭喌嫻嬭瘯
銆銆鎸夌収嫻嬭瘯鐨勮緭鍏ヨ寖鍥達紝鍙互鍒嗕負鍏ㄨ鐩栨祴璇曞拰鎶芥牱嫻嬭瘯
銆銆浠ヤ笂閮藉緢濂界悊瑙o紝涓嶅啀瑙i噴銆?/span>
銆銆鎬諱箣錛屾祴璇曞悓鏍鋒槸欏圭洰鐮斿彂涓竴涓浉褰撻噸瑕佺殑姝ラ錛屽浜庝竴涓ぇ鍨嬭蔣浠訛紝 3 涓湀鍒?/span> 1 騫寸殑澶?/span> 閮ㄦ祴璇曢兘鏄甯哥殑錛屽洜涓烘案榪滈兘浼氬張涓嶅彲棰勬枡鐨勯棶棰樺瓨鍦ㄣ?br />
銆銆瀹屾垚嫻嬭瘯鍚庯紝瀹屾垚楠屾敹騫跺畬鎴愭渶鍚庣殑涓浜涘府鍔╂枃妗o紝鏁翠綋欏圭洰鎵嶇畻鍛婁竴孌佃惤錛屽綋鐒舵棩鍚庡皯 涓嶄簡鍗囩駭錛屼慨琛ョ瓑絳夊伐浣滐紝鍙涓嶆槸鎯抽氳繃涓閿ゅ瓙涔板崠楠楅挶錛屽氨瑕佷笉鍋滅殑璺熻釜杞歡鐨勮繍钀?/span> 鐘跺喌騫舵寔緇慨琛ュ崌綰э紝鐭ラ亾榪欎釜杞歡琚交搴曟窐姹頒負姝€?/span>
銆銆鍐欒繖浜涙楠ょ畻涓嶄笂鍗栧紕浠涔堬紝鍥犱負瀹炶瘽璁叉垜鎵嬭竟鏄竴鏈婅蔣浠跺伐紼嬨嬶紝鍦ㄥぇ瀛﹂噷榪欐槸璁$畻 鏈轟笓涓氱殑蹇呬慨璇劇▼錛屼絾鏄垜鐭ラ亾寰堝紼嬪簭鍛樹技涔庝粠鏉ラ兘鍙槸鐑》浜庝粈涔堛?/span> 30 澶╃簿閫?/span> VC 銆嬩箣 綾葷殑錛屼粬浠湁浜涘拰鎴戜竴鏍鋒父鍑婚槦鍑鴻韓錛屾病鏈夋瑙勫榪囪繖涓笓涓氾紝榪樻湁涓浜涘垯鏃╁氨鍦ㄦ販澶熷 鍒嗗悗灝辨妸榪欎簺鐪熸鏈夌敤鐨勪笢瑗胯繕緇欎簡鑰佸笀銆?/span>
銆銆緗戜笂鐜板湪涔熷緢嫻簛錛屼竴浜?/span> coding fans 涔卞毞鍤鳳紝娣鋒穯瑙嗗惉錛屽疄闄呬笂鐪熸鐨勬妧鏈笓瀹跺緢灝戝湪 緗戜笂涔卞彂甯栧瓙鐨勶紝濡傜瑪鑰呰繖鏍蜂笉鐭ュぉ楂樺湴鍘氱殑錛屽叾瀹炲疄鍦ㄦ槸綆椾笉涓婁粈涔堥珮鎵嬶紝鍙笉榪囩湅涓?/span> 鎯繖縐嶅鎶鏈紝瀵圭▼搴忓憳鐨勮瑙e拰鑳¤錛屽彧濂芥尯韜屽嚭錛屽仛鎷ㄤ貢鍙嶆涔嬭█錛屼篃甯屾湜閭d簺榪?/span> 娌夎糠浜庝竴浜涢敊璇漢澹殑 coding fans 浠兘璁ょ湡鎯蟲兂錛岃蛋鍒版閫斾笂錛屾瘯绔熼偅浜涜仾鏄庣殑澶磋剳榪?/span> 榪滆繙娌℃湁鍙戞尌搴旀湁鐨勪環(huán)鍊箋?/span>
聽
銆銆絎竴銆侀渶姹傚垎鏋愯兘鍔?/span>
銆銆瀵逛簬紼嬪簭鍛樿岃█錛岀悊瑙i渶姹傚氨鍙互瀹屾垚鍚堟牸鐨勪唬鐮侊紝浣嗘槸瀵逛簬鐮斿彂欏圭洰鐨勭粍緇囧拰綆$悊鑰咃紝 浠栦滑涓嶄絾瑕佺悊瑙e鎴烽渶姹傦紝鏇村鏃跺欒繕瑕佽嚜琛屽埗瀹氫竴浜涢渶姹傦紝涓轟粈涔堣繖涔堣鍛紵
銆銆涓鑸岃█錛岃繘琛岀爺鍙戜換鍔★紝涔熻鏄鎴鋒彁鍑洪渶姹傦紝涔熻鏄競鍦哄拰钀ラ攢閮ㄩ棬鎻愬嚭鐨勯渶姹傦紝榪?/span> 鏃跺欏浜庣爺鍙戦儴闂紝浠栦滑鐪嬪埌鐨勪笉鏄竴涓畬鏁寸殑闇姹傦紝閫氬父鑰岃█錛岃闇姹備粎浠呮槸涓浜涘姛鑳?/span> 涓婄殑瑕佹眰錛屾垨鑰呮洿姝h浜涳紝鍙兘鑾峰緱涓涓畬鏁寸殑鐢ㄦ埛瑙嗗浘錛涗絾鏄繖閮戒笉澶燂紝鍥犱負瀹㈡埛鐢變簬 闈炴妧鏈洜绱犲涓浜涳紝浠栦滑鍙兘寰堥毦鎻愬嚭瀹屾暣鍜屾竻鏅幫紝鎴栬呰涓撲笟鎬х殑鎬ц兘闇姹傦紝浣嗘槸瀵逛簬 欏圭洰緇勭粐鑰呭拰瑙勫垝鑰咃紝浠栧繀欏昏兘澶熸竻閱掕璇嗗埌榪欎簺闇姹傜殑瀛樺湪騫跺湪瀹屾垚闇姹傚垎鏋愭姤鍛婄殑鏃?/span> 鍊欓傚綋鐨勬彁鍑猴紝鍚屾椂瑕佸畬鏁村拰娓呮櫚鐨勪綋鐜板湪璁捐璇存槑涔﹂噷闈紝浠ヤ究浜庣▼搴忓憳緙栫爜鏃朵笉浼氬け 鍘昏繖浜涘噯鍒欍?/span>
銆銆絎簩銆侀」鐩璁℃柟娉曞拰嫻佺▼澶勭悊鑳藉姏
銆銆紼嬪簭璁捐鑰呭繀欏昏兘澶熸帉鎻′笉灝戜簬涓ゅ埌涓夌鐨勯」鐩璁℃柟娉曪紙姣斿鑷《鑷充笅鐨勮璁℃柟娉曪紝姣?/span>濡傚揩閫熷師鍨嬫硶絳夌瓑錛夛紝騫惰兘澶熸牴鎹」鐩渶姹傚拰璧勬簮鎼厤鏉ラ夋嫨鍚堥傜殑璁捐鏂規(guī)硶榪涜欏圭洰鐨?/span>鏁翠綋璁捐銆?/span>
銆銆璁捐鏂規(guī)硶涓婇夋嫨涓嶅綋錛屽氨浼氳借鐮斿彂鍛ㄦ湡錛屾氮璐圭爺鍙戣祫婧愶紝鐢氳嚦褰卞搷鐮斿彂鏁堟灉銆?/span>
銆銆涓涓▼搴忚璁¤呰繕闇瑕佹妸寰堝鍔熷か鐢ㄥ湪嫻佺▼鍥劇殑璁捐鍜屽鐞嗕笂錛屼粬闇瑕佸仛鏁版嵁嫻佸浘浠ョ‘绔?/span>鏁版嵁璇嶅吀錛涗粬闇瑕佸姞宸ラ昏緫嫻佸浘浠ュ艦鎴愭暣浣撶殑緋葷粺澶勭悊嫻佺▼銆?/span>
銆銆涓涓祦紼嬫湁闂鐨勭郴緇燂紝灝辯畻浠g爜澶氭紓浜紝姣忎釜妯″潡澶氱簿鑷達紝涔熶笉浼氭垚涓轟竴涓ソ鐨勭郴緇熴?/span>褰撶劧錛屽仛濂芥祦紼嬪垎鏋愬茍閫夋嫨濂介」鐩璁℃柟娉曪紝閮介渶瑕佸湪闇姹傚垎鏋愯兘鍔涗笂鍏鋒湁瓚沖鐨勬妸鎻°?/span>
銆銆絎笁銆佸鐢ㄨ璁″拰妯″潡鍖栧垎瑙h兘鍔?/span>
銆銆榪欎釜浼間箮鍙堟槸鑰佽皟閲嶈皥錛屽墠闈㈠熀鏈礌璐ㄤ笂涓嶆槸宸茬粡璇存槑浜嗚繖涓棶棰樺悧錛?/span>
銆銆浣滀負涓涓粠浜嬫ā鍧椾換鍔$殑紼嬪簭鍛橈紝浠栭渶瑕佸浠栨墍闈㈠鐨勭壒瀹氬姛鑳芥ā鍧楃殑澶嶇敤鎬ц繘琛岃冭檻錛?/span>鑰屼綔涓轟竴涓郴緇熷垎鏋愪漢鍛橈紝浠栬闈㈠鐨勯棶棰樺鏉傜殑澶氾紝闇瑕佸鏁翠綋緋葷粺鎸夌収涓縐嶆ā鍧楀寲鐨?/span>鍒嗘瀽鑳藉姏鍒嗚В涓哄緢澶氬彲澶嶇敤鐨勫姛鑳芥ā鍧楀拰鍑芥暟錛屽茍閽堝姣忎竴妯″潡褰㈡垚涓涓嫭绔嬬殑璁捐闇姹傘備婦涓緥瀛愶紝濂芥瘮鏄苯杞︾敓浜э紝鏈鏃╂瘡杈嗘苯杞﹂兘鏄嫭绔嬪畨瑁呯殑錛屾瘡涓儴浠墮兘鏄噺韜畾鍋?/span>鐨勶紝浣嗘槸鍚庢潵涓嶄竴鏍蜂簡錛屾満鍣ㄥ寲澶х敓浜т簡錛屼竴涓苯杞﹀巶寮濮嬮氳繃嫻佹按綰挎潵鐢熶駭姹借濺錛岀嫭绔?/span>閮ㄤ歡寮濮嬪叿鏈変竴瀹氱殑澶嶇敤鎬э紝鍦ㄥ悗鏉ユ爣鍑嗗寲鎴愪負澶ц秼鍔匡紝涓嶅悓鍨嬪彿錛屽搧鐗岀敋鑷充笉鍚屽巶鍟嗙殑姹借濺閮ㄤ歡涔熷彲浠ヨ繘琛屾柟渚跨殑鎹㈣鍜屽崌綰э紝榪欐椂鍊欙紝姹借濺鐢熶駭鐨勬晥鐜囪揪鍒版渶澶у寲銆傝蔣浠跺伐紼?/span>涔熸槸鍚屾牱鐨勯亾鐞嗭紝涓涓垚鐔熺殑杞歡琛屼笟錛屽湪涓浜涚浉鍏抽」鐩拰緋葷粺涓紝涓嶅悓鐨勯儴浠舵槸鍙互闅?/span>鎰忔崲瑁呯殑錛屾瘮濡傚井杞殑璁稿妗岄潰杞歡錛屽湪寰堝鎿嶄綔妯″潡錛堝鎵撳紑鏂囦歡錛屼繚瀛樻枃浠剁瓑絳夛級閮?/span>鏄鐢ㄧ殑鍚屼竴濂楀姛鑳芥ā鍧楋紝鑰岃繖浜涙帴鍙e張閫氳繃涓浜涚被搴撴彁渚涚粰浜嗘闈㈠簲鐢ㄧ▼搴忓紑鍙戣呮柟渚?/span>鎸傛帴錛岃繖灝辨槸澶嶇敤鍖栫殑妯″潡璁捐鏄庢樉鐨勪竴涓綈璇併?/span>
銆銆灝嗕竴涓ぇ鍨嬬殑錛岄敊緇煎鏉傜殑搴旂敤緋葷粺鍒嗚В鎴愪竴浜涚浉瀵圭嫭绔嬬殑錛屽叿鏈夐珮搴﹀鐢ㄦх殑錛屽茍鑳戒粎浠呬緷闈犲嚑涓弬鏁板畬鎴愭暟鎹仈緋葷殑妯″潡緇勫悎錛屾槸浣滀負楂樼駭紼嬪簭鍛樺拰緋葷粺鍒嗘瀽鍛樹竴欏規(guī)渶閲嶈鐨?/span>宸ヤ綔錛屽悎閫傜殑欏圭洰璁捐鏂規(guī)硶錛屾竻鏅扮殑嫻佺▼鍥撅紝鏄疄鐜拌繖涓鐩爣鐨勯噸瑕佷繚璇併?/span>
銆銆絎洓銆佹暣浣撻」鐩瘎浼拌兘鍔?/span>
銆銆浣滀負緋葷粺璁捐浜哄憳錛屽繀欏昏兘澶熶粠鍏ㄥ眬鍑哄彂錛屽欏圭洰鍙堟暣浣撶殑娓呴啋璁よ瘑錛屾瘮濡傚叕鍙哥殑璧勬簮閰?/span>緗槸鍚﹀悎鐞嗗拰鍒頒綅錛屾瘮濡傚伐紼嬭繘搴﹀畨鎺掓槸鍚﹁兘鏈澶у寲浣撶幇鏁堢巼鍙堜笉鑷充簬鏃犳硶鎸夋湡瀹屾垚銆傝瘎浼伴」鐩暣浣撳拰鍚勪釜妯″潡鐨勫伐浣滈噺錛岃瘎浼伴」鐩墍闇鐨勮祫婧愶紝璇勪及欏圭洰鍙兘閬囧埌鐨勫洶闅撅紝閮介渶瑕佸ぇ閲忕殑緇忛獙縐瘡錛屾崲璦涔嬶紝榪欐槸涓縐嶄笉鏂葷粨鐨勭瘡璁℃墠鑳借揪鍒扮殑澧冪晫銆傚湪瑗挎柟涓浜涜蔣浠?/span>緋葷粺璁捐鐨勫甫澶翠漢閮芥槸寰堝勾闀跨殑錛屾瘮濡?/span>4錛?/span>50宀侊紝鐢氳嚦鏇磋侊紝浠栦滑鍦ㄧ紪鐮佹柟闈㈠凡緇忚繙榪滀笉濡傚勾杞諱漢閭f牱媧葷粶錛屼絾鏄氨欏圭洰璇勪及鑰岃█錛屼粬浠嚑鍗佸勾鐨勭粡楠岀Н绱氨鏄渶閲嶈鍜屽疂璐電殑璐?/span>瀵屻備腑鍥界己榪欎箞涓浠g▼搴忓憳錛屼富瑕佽繕涓嶆槸緙洪偅縐嶅勾綰殑紼嬪簭鍛橈紝鑰屾槸閭g騫寸邯鐨勭▼搴忓憳鍩?/span>鏈笂閮芥槸鐮旂┒鍗曚綅浣滃嚭鏉ョ殑錛岄兘涓嶆槸浠庝笓涓氱殑浜у搧鍖栬蔣浠剁爺鍙戜綔鍑烘潵鐨勶紝浠栦滑娌℃湁鑳界Н绱?/span>閭g浜у搧鍖栫爺鍙戠殑緇忛獙錛岃繖涔熸槸娌℃湁鍔炴硶鐨勪簨鎯呫?/span>
銆銆絎簲銆佸洟闃熺粍緇囩鐞嗚兘鍔?/span>
銆銆瀹屾垚涓涓」鐩伐紼嬶紝闇瑕佸洟闃熺殑榻愬績鍗忓姏錛屼綔涓洪」鐩璁¤呮垨鐮斿彂鐨勪富綆′漢錛屽氨搴斿綋鏈夎兘鍔涙渶澶у寲鍙戞尌鍥㈤槦鐨勬暣浣撳姏閲忥紝鎶鏈鐞嗙敱浜庡叾涓撲笟鎬ц川錛屼笉澶у悓浜庝竴鑸殑浜轟簨綆$悊錛屽洜涓鴻繖閲岄潰璁捐浜嗕竴浜涙妧鏈х殑鎸囨爣鍜屽洜绱犮?/span>
銆銆棣栧厛鏄伐浣滅殑閲忓寲錛屾病鏈夐噺鍖栧氨寰堥毦鍋氬埌鍚堥傜殑緇╂晥鑰冩牳錛岃岀▼搴忛噺鍖栧張涓嶆槸綆鍗曠殑浠g爜琛屾暟鍙互璁$畻鐨勶紝鍥犳瑕佹眰鎶鏈鐞嗕漢鍛橀渶瑕佽兘鐪熸璇勪及涓涓ā鍧楃殑澶嶆潅鎬у拰宸ヤ綔閲忋?/span>
銆銆鍏舵鏄鍥㈤槦鍗忎綔妯″紡鐨勮皟鏁達紝涓鑸岃█錛岀▼搴忓紑鍙戠殑鍗忎綔閫氬父鍒嗕負灝忕粍榪涜錛屽皬緇勬湁涓?/span>紼嬪簭鍛樻柟寮忕殑錛屼篃鏈夋皯涓繪柟寮忕殑錛屾牴鎹▼搴忓憳涔嬮棿鐨勮兘鍔涙按騫沖樊璺濓紝浠ュ強鏍規(guī)嵁欏圭洰鐮斿彂鐨?/span>闇姹傦紝閫夋嫨鍚堥傜殑緇勯槦鏂瑰紡錛屽茍鑳藉皢璐f潈鍜屾垚鍛樼殑宸ヤ綔浠誨姟绱у瘑緇撳悎錛岃繖鏍鋒墠鑳芥渶澶у彂鎸?/span>緇勯槦鐨勬晥鐜囥?/span>
銆銆涓涓唬鐮佹按騫抽珮鐨勪漢錛屾湭蹇呰兘鎴愪負涓涓悎鏍肩殑欏圭洰鐮斿彂涓葷錛岃繖鏂歸潰鐨勮兘鍔涙瑺緙哄線寰鏄鏄撹蹇借鐨勩?/span>
鍟嗗拰璇炬湰鐨勯棶棰橈紝榪樻槸鍦ㄤ簬涓涓▼搴忓憳鍦ㄧН绱粡楠岋紝閫愭鎻愬崌鐨勬椂鍊欐病鏈夋剰璇嗗埌搴斿綋鎬濊冨摢鏂歸潰鐨勪笢瑗匡紝娌℃湁鏈夋剰璇嗙殑灝遍」鐩殑緇勭粐鍜屽鐢ㄨ璁¤繘琛屾彛鎽╋紝娌℃湁緇忓父鎬х殑鏂囨。涔犳儻鍜屾葷粨涔?/span>鎯紝涓嶆敼鍙樿繖浜涳紝鎴戜滑鐨勫悎鏍肩殑欏圭洰璁捐鑰呰繕鏄潪甯告瑺緙恒?/span>
銆銆鍙﹀錛屼負闃叉鏈夋棤鑱婄殑浜哄拰鎴戣緝鐪燂紝琛ュ厖涓鐐癸紝鏈枃閽堝鐩爣鏄綔鍟嗕笟鍖栫殑杞歡欏圭洰鍜屽伐紼嬶紝閭d簺縐戠爺鏈烘瀯鐨勭紪紼嬮珮鎵嬶紝姣斿綆楁硶楂樻墜錛屾瘮濡傚浘璞″鐞嗛珮鎵嬶紝浠栦滑鐨勫伐浣滄槸鐮旂┒璇?/span>棰樿岄潪鐩存帴瀹屾垚鍟嗕笟杞歡錛堝綋鐒舵渶緇堥棿鎺ユ垚涓哄晢涓氫駭鍝侊紝姣斿寰蔣鐮旂┒闄㈠湪浣滅殑鐮旂┒璇?/span>棰橈級錛屽洜姝や粬浠己璋冪殑绱犺川鍙兘鏄彟澶栫殑涓滆タ錛岃繖浜涗漢錛堜笓瀹訛級錛屽茍涓嶈兘璇存槸紼嬪簭鍛橈紝涓?/span>鑳界敤紼嬪簭鍛樼殑鏍囧噯鍘昏 閲忋?/span>
鏉ヨ嚜 : 涓浗婧愮爜涓嬭澆绔?/span> 錛?/span> http://www.downcode.com 錛?/span> 紼嬪簭鍛樻槸涓縐嶆妧鏈伐浣滐紝鍦?/span> IT 鐨勫彂灞曚腑鏈夌浉褰撻噸瑕佺殑鍦頒綅錛屼粠搴曞眰紜歡閫氳鍗忚鐨勫緩绔嬶紝 鍒版暟鎹紶杈撳眰鐨勫鐞嗭紝鍒版搷浣滅郴緇熺殑寤鴻錛屽埌鏁版嵁搴撳鉤鍙扮殑寤鴻錛屼竴鐩村埌搴旂敤灞備笂鍚勭鏁?/span> 鎹惀閿騫沖彴鐨勬惌寤猴紝紼嬪簭鍛樺湪閲岄潰閮芥壆婕旂潃涓捐凍杞婚噸鐨勮鑹插茍涓?/span> IT 浜嬩笟鐨勫彂灞曞仛鍑轟簡宸ㄥぇ 鐨勮礎鐚?/span>
銆銆涓浗鏈夊緢澶氱簿浜庣紪鐮佺殑浜猴紝浣嗘槸涓浗杞歡琛屼笟錛屽挨鍏舵槸緗戠粶搴旂敤寮鍙戞柟闈㈣鍖哄緢澶э紝寰堥毦 褰㈡垚鏈夎妯$殑杞歡寮鍙戝姏閲忓拰浜у搧鑳藉姏錛屼笉浣嗘瘮緹庡浗宸窛鐢氳繙錛屽拰鍗板害鐩告瘮涔熸槸棰囨湁涓?/span> 濡傘傝繖浜涢棶棰樹笉鏄湪浜庝腑鍥界▼搴忓憳鐨勬櫤鍟嗗拰宸ヤ綔鍔姏鐘跺喌錛屼篃涓嶆槸鍦ㄤ簬鍥藉鍜屾皯闂村寮鍙?/span> 鐨勬姇鍏ョ▼搴︼紝鑰屾槸寰堝ぇ紼嬪害涓婏紝鏈変竴浜涘鎶鏈紝瀵圭▼搴忓紑鍙戯紝瀵歸」鐩璁℃柟闈㈢殑鎬濇兂璇?/span> 鍖猴紝榪欎簺璇尯錛屽鑷翠簡杞歡琛屼笟鐨勪駭鍝佸寲鑳藉姏涓嶈凍錛岀己涔忚妯″寲鍜屽ぇ鍨嬪鐢ㄧ郴緇熺爺鍙戣兘 鍔涳紝鍙互璇達紝鏀瑰彉璁よ瘑璇尯錛屾槸瑙e喅杞歡琛屼笟灝忎綔鍧婃ā寮忓拰涓綋鑻遍泟妯″紡鎵甯︽潵鐨勫眬闄愭?/span> 鐨勯噸瑕佸伐浣溿?/span>
銆銆涓浗鏈夊緢澶氬皬鏈嬪弸錛屼粬浠?/span> 18,9 宀佹垨 21,2 宀侊紝閫氳繃鑷涔熷啓浜嗕笉灝戜唬鐮侊紝浠栦滑鏈夌殑浠g爜鍐欑殑 寰堟紓浜紝涓浜涙妧鏈粏鑺傜浉褰撳嚭浼楋紝涔熷緢鏈夐捇鐮旂簿紲烇紝浣嗘槸浠栦滑琚竴浜涢敊璇殑璁よ瘑鍜岃鐐瑰乏 鍙籌紝緙轟箯瀵圭郴緇燂紝瀵圭▼搴忕殑鏁翠綋鐞嗚В鑳藉姏錛岃繖浜涗漢錛屼竴涓綉涓婄殑鏈嬪弸璇村緱寰堝ソ錛屼粬浠疄闄?/span> 涓婂彧鏄竴浜?/span> Coding fans 錛屽帇鏍規(guī)病鏈夎祫鏍肩О涓虹▼搴忓憳錛屼絾鏄嵁鎴戞墍鐭ワ紝涓嶅皯灝忕綉緇滃叕鍙哥殑 CTO 灝辨槸榪欐牱鐨?/span> coding fans, 鎷跨潃鍚撲漢鐨勫伐璧勶紝鍋氱潃鍚撲漢鐨勯」鐩紝欏圭洰鐨勭粨灞閫氬父涔熷緢鍚?/span> 浜恒?/span>
銆銆紼嬪簭鍛樺熀鏈礌璐細
銆銆浣滀竴涓湡姝e悎鏍肩殑紼嬪簭鍛橈紝鎴栬呰灝辨槸鍙互鐪熸鍚堟牸瀹屾垚涓浜涗唬鐮佸伐浣滅殑紼嬪簭鍛橈紝搴旇鍏鋒湁鐨勭礌璐ㄣ?/span>
銆銆 1 錛氬洟闃熺簿紲炲拰鍗忎綔鑳藉姏
銆銆鎶婂畠浣滀負鍩烘湰绱犺川錛屽茍涓嶆槸涓嶉噸瑕侊紝鎭版伆鐩稿弽錛岃繖鏄▼搴忓憳搴旇鍏峰鐨勬渶鍩烘湰鐨勶紝涔熸槸鏈閲嶈鐨勫畨韜珛鍛戒箣鏈傛妸楂樻按騫崇▼搴忓憳璇存垚鐙渚犵殑閮芥槸鍦ㄥ憮璇紝浠諱綍涓漢鐨勫姏閲忛兘鏄湁 闄愮殑錛屽嵆渚垮 linus 榪欐牱鐨勫ぉ鎵嶏紝涔熼渶瑕侀氳繃緇勬垚寮哄ぇ鐨勫洟闃熸潵鍒涢犲榪癸紝閭d簺閬嶅竷鍏ㄧ悆 鐨勪負 linux 鍐欐牳蹇冪殑楂樻墜浠紝娌℃湁鍗忎綔綺劇鏄笉鍙兂璞$殑銆傜嫭琛屼緺鍙互浣滀竴浜涜禋閽辯殑灝忚蔣 浠跺彂鐐瑰皬璐紝浣嗘槸涓鏃﹁繘鍏ヤ竴浜涘ぇ緋葷粺鐨勭爺鍙戝洟闃燂紝榪涘叆鍟嗕笟鍖栧拰浜у搧鍖栫殑寮鍙戜換鍔★紝緙?/span> 涔忚繖縐嶇礌璐ㄧ殑浜哄氨瀹屽叏涓嶅悎鏍間簡銆?/span>
銆銆 2 錛氭枃妗d範鎯?/span>
銆銆璇撮珮姘村鉤紼嬪簭鍛樹粠鏉ヤ笉鍐欐枃妗g殑鑲畾鏄鉤鑷湭騫茬殑姣涘瀛愶紝鑹ソ鐨勬枃妗f槸姝h鐮斿彂嫻佺▼涓潪甯擱噸瑕佺殑鐜妭錛屼綔涓轟唬鐮佺▼搴忓憳錛?/span> 30 錛呯殑宸ヤ綔鏃墮棿鍐欐妧鏈枃妗f槸寰堟甯哥殑錛岃屼綔涓洪珮綰?/span> 紼嬪簭鍛樺拰緋葷粺鍒嗘瀽鍛橈紝榪欎釜姣斾緥榪樿楂樺緢澶氥?/span>
銆銆緙轟箯鏂囨。錛屼竴涓蔣浠剁郴緇熷氨緙轟箯鐢熷懡鍔涳紝鍦ㄦ湭鏉ョ殑鏌ラ敊錛屽崌綰т互鍙婃ā鍧楃殑澶嶇敤鏃跺氨閮戒細閬?/span> 鍒版瀬澶х殑楹葷儲銆?/span>
銆銆 3 錛氳鑼冨寲錛屾爣鍑嗗寲鐨勪唬鐮佺紪鍐欎範鎯?/span>
銆銆浣滀負涓浜涘鍥界煡鍚嶈蔣浠跺叕鍙哥殑瑙勭煩錛屼唬鐮佺殑鍙橀噺鍛藉悕錛屼唬鐮佸唴娉ㄩ噴鏍煎紡錛岀敋鑷沖祵濂椾腑琛岀緝榪涚殑闀垮害鍜屽嚱鏁伴棿鐨勭┖琛屾暟瀛楅兘鏈夋槑紜瀹氾紝鑹ソ鐨勭紪鍐欎範鎯紝涓嶄絾鏈夊姪浜庝唬鐮佺殑縐繪鍜?/span> 綰犻敊錛屼篃鏈夊姪浜庝笉鍚屾妧鏈漢鍛樹箣闂寸殑鍗忎綔銆?/span>
銆銆鏈変簺 coding fans 鍙殻楂樻按騫崇▼搴忓憳鍐欑殑浠g爜鏃佷漢浠庢潵鐪嬩笉鎳傦紝榪欑鍙殻鍙兘璇佹槑浠栦滑鑷繁鍘嬫牴涓嶉厤鑷О紼嬪簭鍛樸備唬鐮佸叿鏈夎壇濂界殑鍙鎬э紝鏄▼搴忓憳鍩烘湰鐨勭礌璐ㄩ渶姹傘?/span>
銆銆鍐嶇湅鐪嬫暣涓?/span> linux 鐨勬惌寤猴紝娌℃湁瑙勮寖鍖栧拰鏍囧噯鍖栫殑浠g爜涔犳儻錛屽叏鐞冪殑鐮斿彂鍗忎綔鏄粷瀵逛笉鍙兂璞$殑銆?/span>
銆銆 4 錛氶渶姹傜悊瑙h兘鍔?/span>
銆銆紼嬪簭鍛橀渶瑕佺悊瑙d竴涓ā鍧楃殑闇姹傦紝寰堝灝忔湅鍙嬪啓紼嬪簭寰寰鍙叧娉ㄤ竴涓姛鑳介渶姹傦紝浠栦滑鎶婃ц兘鎸囨爣鍏ㄩ儴褰掔粨鍒扮‖浠訛紝鎿嶄綔緋葷粺鍜屽紑鍙戠幆澧冧笂錛岃屽拷瑙嗕簡鏈韓浠g爜鐨勬ц兘鑰冭檻錛屾湁浜烘浘 緇忔斁璦璇村啓涓涓箍鍛婁氦鎹㈢▼搴忓緢綆鍗曪紝榪欑浜轟粠鏉ヤ笉鐭ラ亾鍦ㄧ櫨涓囩敋鑷沖崈涓囨暟閲忕駭鐨勮闂儏 鍐典笅鐨勬ц兘鎸囨爣鏄浣曞疄鐜扮殑錛屽浜庤繖鏍風殑紼嬪簭鍛橈紝浣犵粰浠栨繁钃濋偅濂楃郴緇燂紝浠栦篃鍋氫笉鍑哄お鏋侀摼鐨勫茍璁胯兘鍔涖傛ц兘闇姹傛寚鏍囦腑錛岀ǔ瀹氭э紝騫惰鏀拺鑳藉姏浠ュ強瀹夊叏鎬ч兘寰堥噸瑕侊紝浣滀負紼嬪簭鍛橀渶瑕佽瘎浼拌妯″潡鍦ㄧ郴緇熻繍钀ヤ腑鎵澶勭殑鐜錛屽皢瑕佸彈鍒扮殑璐熻嵎鍘嬪姏浠ュ強鍚勭娼滃湪鐨勫嵄闄╁拰鎭舵剰鏀誨嚮鐨勫彲鑳芥с傚氨榪欎竴鐐癸紝涓涓垚鐔熺殑紼嬪簭鍛樿嚦灝戦渶瑕?/span> 2 鍒?/span> 3 騫寸殑欏圭洰鐮斿彂鍜岃窡韙粡楠屾墠鏈夊彲鑳芥湁蹇冨緱銆?/span>
銆銆 5 錛氬鐢ㄦэ紝妯″潡鍖栨濈淮鑳藉姏
銆銆澶嶇敤鎬ц璁★紝妯″潡鍖栨濈淮灝辨槸瑕佺▼搴忓憳鍦ㄥ畬鎴愪換浣曚竴涓姛鑳芥ā鍧楁垨鍑芥暟鐨勬椂鍊欙紝瑕佸鎯充竴浜涳紝涓嶈灞闄愬湪瀹屾垚褰撳墠浠誨姟鐨勭畝鍗曟濊礬涓婏紝鎯蟲兂鐪嬭妯″潡鏄惁鍙互鑴辯榪欎釜緋葷粺瀛樺湪錛?/span>鏄惁鍙互閫氳繃綆鍗曠殑淇敼鍙傛暟鐨勬柟寮忓湪鍏朵粬緋葷粺鍜屽簲鐢ㄧ幆澧冧笅鐩存帴寮曠敤錛岃繖鏍峰氨鑳芥瀬澶ч伩鍏嶉噸澶嶆х殑寮鍙戝伐浣滐紝濡傛灉涓涓蔣浠剁爺鍙戝崟浣嶅拰宸ヤ綔緇勮兘澶熷湪姣忎竴嬈$爺鍙戣繃紼嬩腑閮借冭檻鍒?/span>榪欎簺闂錛岄偅涔堢▼搴忓憳灝變笉浼氬湪閲嶅鎬х殑宸ヤ綔涓借澶鏃墮棿錛屽氨浼氭湁鏇村鏃墮棿鍜岀簿鍔涙姇鍏ュ埌鍒涙柊鐨勪唬鐮佸伐浣滀腑鍘匯?/span>
銆銆涓浜涘ソ鐨勭▼搴忔ā鍧椾唬鐮侊紝鍗充究鏄?/span>70騫翠唬鍐欐垚鐨勶紝鎷垮埌鐜板湪鏀懼埌涓浜涚郴緇熼噷闈綔涓哄姛鑳芥ā鍧?/span>閮借兘閫傚悎鐨勫緢濂斤紝鑰岀幇鍦ㄦ垜鐪嬪埌鐨勬槸錛屽緢澶氬皬鍏徃杞歡涓鍗囩駭鎴栨敼榪涘氨鍔ㄨ緞鍏ㄩ儴浠g爜閲?/span>鍐欙紝澶ч儴鍒嗛噸澶嶆у伐浣滄棤璋撶殑嫻垂浜嗘椂闂村拰綺懼姏銆?/span>
銆銆紼嬪簭鍛樺簲鍏峰鐨勭礌璐ㄤ腑
銆銆6錛氭祴璇曚範鎯?/span>
銆銆浣滀負涓浜涘晢涓氬寲姝h鍖栫殑寮鍙戣岃█錛屼笓鑱岀殑嫻嬭瘯宸ョ▼甯堟槸涓嶅彲灝戠殑錛屼絾鏄茍涓嶆槸璇存湁浜嗕笓鑱岀殑嫻嬭瘯宸ョ▼甯堢▼搴忓憳灝卞彲浠ヤ笉榪涜鑷祴錛涜蔣浠剁爺鍙戜綔涓轟竴欏瑰伐紼嬭岃█錛屼竴涓緢閲嶈鐨勭壒鐐瑰氨鏄棶棰樺彂鐜扮殑瓚婃棭錛岃В鍐崇殑浠d環(huán)灝辮秺浣庯紝紼嬪簭鍛樺湪姣忔浠g爜錛屾瘡涓瓙妯″潡瀹屾垚鍚庤繘琛?/span>璁ょ湡鐨勬祴璇曪紝灝卞彲浠ュ敖閲忓皢涓浜涙綔鍦ㄧ殑闂鏈鏃╃殑鍙戠幇鍜岃В鍐籌紝榪欐牱瀵規(guī)暣浣撶郴緇熷緩璁劇殑鏁?/span>鐜囧拰鍙潬鎬у氨鏈変簡鏈澶х殑淇濊瘉銆?/span>
銆銆嫻嬭瘯宸ヤ綔瀹為檯涓婇渶瑕佽冭檻涓ゆ柟闈紝涓鏂歸潰鏄甯歌皟鐢ㄧ殑嫻嬭瘯錛屼篃灝辨槸鐪嬬▼搴忔槸鍚﹁兘鍦ㄦ甯?/span>璋冪敤涓嬪畬鎴愬熀鏈姛鑳斤紝榪欐槸鏈鍩烘湰鐨勬祴璇曡亴璐o紝鍙儨鍦ㄥ緢澶氬叕鍙歌繖鎴愪簡鍞竴鐨勬祴璇曚換鍔★紝瀹為檯涓婅繕宸殑榪滈偅錛涚浜屾柟闈㈠氨鏄紓甯歌皟鐢ㄧ殑嫻嬭瘯錛屾瘮濡傞珮鍘嬪姏璐熻嵎涓嬬殑紼沖畾鎬ф祴璇曪紝鐢?/span>鎴鋒綔鍦ㄧ殑寮傚父杈撳叆鎯呭喌涓嬬殑嫻嬭瘯錛屾暣浣撶郴緇熷眬閮ㄦ晠闅滄儏鍐典笅璇ユā鍧楀彈褰卞搷鐘跺喌鐨勬祴璇曪紝棰?/span>鍙戠殑寮傚父璇鋒眰闃誨璧勬簮鏃剁殑妯″潡紼沖畾嫻嬭瘯絳夌瓑銆傚綋鐒跺茍涓嶆槸紼嬪簭鍛樿瀵硅嚜宸辯殑姣忔浠g爜閮?/span>闇瑕佽繘琛岃繖縐嶅畬鏁存祴璇曪紝浣嗘槸紼嬪簭鍛樺繀欏繪竻閱掕璇嗚嚜宸辯殑浠g爜浠誨姟鍦ㄦ暣浣撻」鐩腑鐨勫湴浣嶅拰鍚勭鎬ц兘闇姹傦紝鏈夐拡瀵規(guī)х殑榪涜鐩稿叧嫻嬭瘯騫跺敖鏃╁彂鐜板拰瑙e喅闂錛屽綋鐒惰繖闇瑕佷笂闈㈡彁鍒扮殑闇姹傜悊瑙h兘鍔涖?/span>
銆銆7錛氬涔犲拰鎬葷粨鐨勮兘鍔?/span>
銆銆紼嬪簭鍛樻槸浜烘墠寰堝鏄撹娣樻卑錛屽緢瀹規(guī)槗钀戒紞鐨勮亴涓氾紝鍥犱負涓縐嶆妧鏈彲鑳戒粎浠呭湪涓変袱騫村唴鍏鋒湁棰嗗厛鎬э紝紼嬪簭鍛樺鏋滄兂瀹夎韓绔嬪懡錛屽氨蹇呴』涓嶆柇璺熻繘鏂扮殑鎶鏈紝瀛︿範鏂扮殑鎶鑳姐?/span>
銆銆鍠勪簬瀛︿範錛屽浜庝換浣曡亴涓氳岃█錛岄兘鏄墠榪涙墍蹇呴渶鐨勫姩鍔涳紝瀵逛簬紼嬪簭鍛橈紝榪欑瑕佹眰灝辨洿鍔犻珮浜嗐?/span>
銆銆浣嗘槸瀛︿範涔熻鎵懼鐩爣錛屼竴浜涘皬coding fans浠紝浠栦滑涔熸觸媧ヤ箰閬撲簬浠栦滑鐨勫涔犺兘鍔涳紝涓浼氬浼氫簡asp錛屼竴浼氬効瀛︿細浜?/span>php錛屼竴浼氬効瀛︿細浜?/span>jsp錛屼粬浠妸榪欎釜浣滀負鐐鐨勮祫鏈紝鐩茬洰鐨勮拷閫愪竴浜涜偆嫻呯殑錛岃〃闈㈢殑涓滆タ鍜屽悕璇嶏紝鍋氱綉緇滅▼搴忎笉鎳傞氳浼犺緭鍗忚錛屽仛搴旂敤紼嬪簭涓嶆噦涓柇鍚戦噺澶勭悊錛岃繖鏍風殑鎶鏈漢鍛橈紝涓嶇鎺屾彙浜嗗灝戞墍璋撶殑鏂拌璦錛屾案榪滀笉浼氭湁璐ㄧ殑鎻?/span>楂樸?/span>
銆銆鍠勪簬鎬葷粨錛屼篃鏄涔犺兘鍔涚殑涓縐嶄綋鐜幫紝姣忔瀹屾垚涓涓爺鍙戜換鍔★紝瀹屾垚涓孌典唬鐮侊紝閮藉簲褰撴湁鐩殑鐨勮窡韙紼嬪簭鐨勫簲鐢ㄧ姸鍐靛拰鐢ㄦ埛鍙嶉錛岄殢鏃舵葷粨錛屾壘鍒拌嚜宸辯殑涓嶈凍錛岃繖鏍烽愭鎻愰珮錛?/span>涓涓▼搴忓憳鎵嶅彲鑳芥垚闀胯搗鏉ャ?/span>
銆銆涓涓笉鍏峰鎴愰暱鎬х殑紼嬪簭鍛橈紝鍗充究鐪煎墠鐪嬫槸涓珮鎵嬶紝寤鴻涔熶笉瑕侀夌敤錛屽洜涓轟粬钀戒紞鐨勬椂鍊?/span>椹笂灝卞埌浜嗐?/span>
Sergey Dmitriev, JetBrains
鏈枃blog鏉ユ簮錛?a >http://www.uuzone.com/blog/oiunt/891/
鐜板湪鏄蔣浠跺紑鍙戜腑寮濮嬩笅涓嬈℃妧鏈潻鍛界殑鏃跺欎簡錛岃岃繖嬈¢潻鍛界殑杞粨姝e彉寰楄秺鏉ヨ秺娓呮櫚銆備笅涓浠g紪紼嬭寖鍨嬩篃鍦ㄦ帴榪戞垜浠紝浣嗕粛鐒舵病鏈夊畬鍏ㄦ垚褰紞錛嶄笉鍚岀殑閮ㄥ垎鏈変笉鍚岀殑鍚嶇О錛欼ntentional programming, MDA, generative programming, 絳夌瓑錛涙垜寤鴻鎶婃妸鎵鏈夎繖浜涙柊鏂規(guī)硶褰掑茍涓轟竴涓悕瀛楋細 鈥榣anguage-oriented programming鈥欙紙闈㈠悜璇█鐨勭紪紼嬶級, 鑰屾湰鏂囧皢闃愯堪榪欑鏂扮殑緙栫▼鑼冨瀷鐨勪富瑕佸師鍒?/p>
浠婂ぉ涓繪祦鐨勭紪紼嬫柟娉曟湁涓浜涘唴鍦ㄧ殑鍋囧畾鍍忚剸瀛愪笂鐨勭懷绱竴鏍鋒姊忕潃鎴戜滑錛屽敖綆″ぇ閮ㄥ垎紼嬪簭鍛樿繕娌℃湁鎰忚瘑鍒板畠錛涘嵆浣跨畻涓婂湪緙栫▼棰嗗煙鍙栧緱鐨勬墍鏈夎繘姝ワ紝鎴戜滑涔熶粛鐒跺浜庣煶鍣ㄦ椂浠o紱鎴戜滑鏈夋垜浠俊璧栫殑鐭蟲枾錛堥潰鍚戝璞$紪紼嬶級錛岃兘澶熸弧瓚蟲垜浠殑闇瑕侊紝浣嗘槸褰撶敤瀹冩潵瀵逛粯鏈鍥伴毦鐨勯棶棰樻椂錛屽畠浼氳鎴愮灞戯紱涓轟簡瓚呰秺鐭沖櫒鍓嶈繘錛屾垜浠繀欏婚┋鏈嶇儓鐏紝鍙湁榪欐牱錛屾垜浠墠鑳介摳閫犲嚭鏂扮殑宸ュ叿錛屾縺鍙戜竴涓垱浣滅殑鏂版椂浠o紝鍜屾柊鎶鏈殑鐖嗗彂
鎴戝皢璁ㄨ緙栫▼鐨勫眬闄愶紝瀹冨己榪▼搴忓憳鍍忚綆楁満涓鏍鋒濊冿紝鑰屼笉鏄護璁$畻鏈哄儚紼嬪簭鍛樹竴鏍鋒濊冿紱榪欐槸涓ラ噸鐨勶紝鏍規(guī)繁钂傚浐鐨勫眬闄愶紝闇瑕佽姳璐瑰法澶х殑鍔姏鍘誨厠鏈嶅畠錛涘綋鎴戣榪欏皢鏄紪紼嬩腑涓嬩竴涓ぇ鐨勮寖鍨嬭漿鎹㈡椂鎴戝茍娌℃湁鑷懡涓嶅嚒錛涙垜浠渶瑕佸交搴曢噸鏂板畾涔夋垜浠紪鍐欑▼搴忕殑鏂規(guī)硶
鏈枃涓紝鎴戣〃榪頒簡鎴戠殑瑙傜偣鍜屾垜褰撳墠鍦↙anguage Oriented Programming (LOP)涓婄殑宸ヤ綔錛涢鍏堟垜灝嗗睍紺虹洰鍓嶄富嫻佺紪紼嬫柟娉曠殑閿欒錛岀劧鍚庢垜浼氫嬌鐢ㄧず渚嬫潵瑙i噴LOP鐨勬蹇碉紝瀹冧滑鍩轟簬鎴戝凡鏈夌殑涓涓狶OP鐨勫疄鐜幫細the Meta Programming System (MPS). 鏈枃鏈夋剰鍙槸緇欎綘涓涓LOP鐨勬儕楦夸竴鐬ワ紝鐩殑鏄縺鍙戜綘瀵硅繖涓濇兂鐨勫叴瓚o紝騫跺笇鏈涜兘澶熷緱鍒板弽棣堝拰璁ㄨ
鐞嗘兂鐨勶紝鍋氫竴涓▼搴忓憳鎰忓懗鐫鎴戝彲浠ュ璁$畻鏈哄仛浠諱綍浜嬫儏錛屾垜鏈夊畬鍏ㄧ殑鑷敱錛屽畬鍏ㄧ殑鎺у埗錛涗絾瀹為檯涓婏紝浠婂ぉ鐨勭▼搴忓憳鍙湁闈炲父鍙楅檺鐨勮嚜鐢憋紱褰撶劧錛屾垜紜疄鍙互鍦ㄨ綆楁満涓婂仛浠諱綍浜嬫儏錛屼絾鍏朵腑涓浜涗簨鎯呰姳璐逛簡鎴戣澶氬勾鐨勫姫鍔涳紝鑰屽畠浠疄闄呬笂鍙渶瑕佸皯鐨勫鐨勬椂闂達紱涓瀹氭湁浠涔堜簨鎯呬笉瀵瑰姴
紼嬪簭鍛樿闄愬埗鏄洜涓轟粬浠繁娣變緷璧栦簬閭d簺浠栦滑涓嶈兘杞繪槗鏀瑰彉鐨勭紪紼嬪熀紜璁炬柦錛氱紪紼嬭璦鍜屽紑鍙戠幆澧冿紱濡傛灉鎴戦渶瑕佷竴浜涜璦鐨勬墿灞曪紝鎴戝彧鑳界瓑寰呰璦鐨勮璁¤呭幓鏇存柊瀹冿紱濡傛灉鎴戦渶瑕佹垜鐨処DE鏈変竴浜涢澶栫殑寮哄ぇ鍔熻兘錛屾垜鍙兘絳夊緟渚涘簲鍟嗘潵娣誨姞鏂扮壒鎬э紱灝辨槸榪欎簺渚濊禆闄愬埗浜嗘垜瀹屽叏鐨勮嚜鐢憋紱褰撶劧錛屾垜鍙互鍐欐垜鑷繁鐨勭紪璇戝櫒鍜孖DE錛屽疄闄呬笂錛岃繖涔熸槸鎴戝惎鍔ㄤ簡IntelliJ IDEA鐨勫師鍥狅紝鍥犱負鎴戝帉鍊︿簡渚濊禆鐜版湁鐨勫急寮辯殑Java IDE錛涗絾鏄紝榪欎細鑺辮垂澶ч噺鐨勬椂闂村拰鍔姏錛屽茍涓旀樉鑰屾槗瑙侊紝瀵瑰ぇ閮ㄥ垎紼嬪簭鍛樻潵璇存槸涓嶅彲琛岀殑錛涚悊璁轟笂鐨勮嚜鐢卞拰瀹為檯鐨勮嚜鐢變箣闂村瓨鍦ㄥ法澶х殑宸紓錛涗笅鏂囦腑褰撴垜璋堝埌鑷敱鏃訛紝鎴戞寚鐨勬槸瀹為檯鐨勮嚜鐢?/p>
鑾峰緱鑷敱鐨勯斿緞鏄噺灝戞垜浠殑渚濊禆灞傛錛涗緥濡傦紝Java鐨勪竴涓富瑕佺洰鏍囨槸鍑忓皯瀵規(guī)搷浣滅郴緇熺殑渚濊禆錛岀粰寮鍙戣呭湪涓嶅悓鎿嶄綔緋葷粺涓婇儴緗茬殑鑷敱錛涘洜姝わ紝涓轟簡鍦ㄨ璦鍜岀幆澧冧箣涓婅幏寰楄嚜鐢憋紝鎴戜滑闇瑕佸噺灝戝瀹冧滑鐨勪緷璧?/p>
涓轟粈涔堣繖鏄竴涓棶棰樺憿錛熶換浣昰eneral-purpose鐨勮璦錛屽儚Java鍜孋++錛岀粰浜嗘垜浠敤璁$畻鏈哄仛浠諱綍浜嬫儏鐨勮兘鍔涳紱榪欐槸浜嬪疄錛岃嚦灝戠悊璁轟笂鏄繖鏍鳳紝浣嗘槸錛実eneral-purpose鐨勮璦瓚嬪悜浜庡鍚屽悗闈㈡垜灝嗚鍒扮殑鑸敓浜ф晥鐜囦綆涓嬶紱浣滀負涓縐嶆浛浠o紝鎴戜滑鍙互浣跨敤domain-specific languages錛圖SLs錛宎ka 鈥榣ittle languages鈥欙級錛屽畠浠綺懼績璁捐鎴愬湪鐗瑰畾闂鍩熷叿鏈夐珮搴︾敓浜х巼錛屾瘮濡傜敤SQL緙栧啓鏁版嵁搴撴煡璇紱DSLs鐨勫己澶т箣澶勶紝棰嗗煙鐩稿叧錛屼篃姝f槸瀹冧滑鐨勫急澶勶紝鍥犱負浠諱綍鐪熷疄涓栫晫涓殑紼嬪簭閮戒細鍖呮嫭璁稿涓嶅悓鐨勯鍩?/p>
general-purpose 鍜?domainspecific 涔嬮棿錛屽茍涓嶆槸瀵圭珛鐨勶紱鎴戦渶瑕佹墍鏈夌殑鑷敱錛屾垜甯屾湜鑳藉鍋氫換浣曚簨鎯咃紝鍚屾椂鏈夊緢楂樼殑鐢熶駭鏁堢巼錛涚洰鍓嶄負姝㈣繕娌℃湁浠涔堝ソ鏂規(guī)硶鑳藉鍋氬埌榪欑偣錛涚悊鎯蟲儏鍐典笅錛屾垜鑳藉涓虹▼搴忕殑鍚勪釜鐗瑰畾閮ㄥ垎浣跨敤涓嶅悓鐨勮璦錛岃屽畠浠兘澶熻瀺媧界殑涓璧峰伐浣滐紝騫朵笖寮鍙戠幆澧冧細瀹屽叏鏀寔榪欎簺璇█錛屽寘鎷噸鏋勶紝浠g爜琛ュ叏錛屽鑸紝浠ュ強涓繪祦璇█鍏鋒湁鐨勬墍鏈夊叾瀹冪敓浜у姏宸ュ叿
涓轟簡鑾峰緱榪欑鐙珛鎬э紝鎴戦渶瑕佹湁鍒涘緩銆侀噸鐢ㄣ佷慨鏀硅璦鍜岀幆澧冪殑鑷敱錛涗負浜嗕嬌榪欑鑷敱鏄彲琛岀殑錛屽畠闇瑕佸緢瀹規(guī)槗鐨勮鑾峰緱錛涘鏋滄垜浠В鍐充簡鏄撲簬榪涜璇█鍜岀幆澧冪殑寮鍙戠殑闂錛屽紼嬪簭鍛樻潵璇村皢鏄竴涓法澶х殑榪涙錛涜繖灝辨槸Language Oriented Programming鐨勫垏鍏ョ偣
瑕佺悊瑙anguage Oriented Programming鏄粈涔堬紝璁╂垜浠鍏堢湅涓涓嬩粖澶╃殑涓繪祦緙栫▼鏂規(guī)硶錛屽畠鍩烘湰涓婃槸榪欐牱錛?/p>
鎬濊冿細 浣犻渶瑕佺紪紼嬭В鍐充竴涓棶棰橈紝鍥犳浣犲湪浣犵殑澶磋剳閲屽艦鎴愪簡濡備綍瑙e喅榪欎釜闂鐨勬蹇墊ā鍨?/p>
閫夋嫨錛?/b> 浣犻夋嫨浜嗘煇縐峠eneral-purpose鐨勮璦鏉ョ紪鍐欒В鍐蟲柟妗?/p>
緙栫▼錛?浣犻氳繃灝嗕綘鐨勬蹇墊ā鍨嬭壈闅劇殑鏄犲皠鍒扮紪紼嬭璦鏉ョ紪鍐欒В鍐蟲柟妗?/p>
緙栫▼榪欎竴姝ユ槸鐡墮鎵鍦紝鍥犱負澶ч儴鍒嗘儏鍐墊槧灝勪笉鏄鏄撶殑鍜岃嚜鐒剁殑錛涜繖縐嶆柟娉曞湪紼嬪簭鍛樿〃杈懼鏉傜殑璁捐鏂歸潰宸茬粡琚瘉鏄庢槸浣庢晥鐨勶紱鐩稿鐨勶紝涓嬮潰鏄疞OP鐨勫伐浣滄柟寮忥細
鎬濊冿細 浣犻渶瑕佺紪紼嬭В鍐充竴涓棶棰橈紝鍥犳浣犲湪浣犵殑澶磋剳閲屽艦鎴愪簡濡備綍瑙e喅榪欎釜闂鐨勬蹇墊ā鍨?/p>
閫夋嫨錛?浣犻夋嫨浜嗘煇浜涚壒瀹氱殑DSLs鏉ョ紪鍐欒В鍐蟲柟妗?/p>
鍒涘緩錛?濡傛灉娌℃湁鍚堥傜殑DSL閫傚悎浣犵殑闂錛屼綘渚垮垱寤轟竴縐岲SL鏉ラ傚簲浣犵殑闂
緙栫▼錛?浣犻氳繃灝嗕綘鐨勬蹇墊ā鍨嬬浉瀵圭洿鎺ョ殑鏄犲皠鍒癉SLs鏉ョ紪鍐欒В鍐蟲柟妗?/p>
鐜板湪錛岀紪紼嬭繖涓姝s much less of a 鐡墮浜嗭紝鍥犱負DSLs澶уぇ綆鍖栦簡濡備綍灝嗛棶棰樼炕璇戞垚鏌愮璁$畻鏈鴻兘澶熺悊瑙g殑涓滆タ錛涚湅璧鋒潵鍥伴毦宸茬粡綆鍗曠殑杞Щ鍒頒簡鈥滃垱寤衡濊繖涓姝ワ紝鐒惰岋紝閫氳繃鑱斿悎浣跨敤宸ュ叿鏀寔鍜屽皢LOP搴旂敤鍒拌嚜韜紝灝嗕嬌榪欎竴姝ユ洿鍔犵畝鍗?/p>
LOP 鑳屽悗鐨勫姩鏈哄熀鏈槸榪欐牱鐨勶細鎴戞兂鐢ㄦ垜姝h瘯鍥捐В鍐崇殑闂鐩稿叧鐨勬蹇靛拰鎰忓浘鐨勮瘝姹囨潵宸ヤ綔錛岃屼笉鏄榪皢鎴戠殑鎬濇兂緲昏瘧鎴愭煇縐峠eneral-purpose鐨勮璦鎵鑳界悊瑙g殑姒傚康錛堟瘮濡傦細綾伙紝鏂規(guī)硶錛屽驚鐜紝鏉′歡錛岀瓑絳?..錛夛紱涓轟簡杈懼埌榪欎釜鐩爣錛屾垜闇瑕佷嬌鐢╠omain-specific languages錛涙庢牱寰楀埌瀹冧滑鍛紵鍒涘緩瀹冧滑錛?
鎴戝凡緇忓紑濮嬪紑鍙戜竴涓氱敤鐨勫鉤鍙幫紙the Meta Programming System錛夋潵璁捐domainspecific languages錛屽甫鏈夊伐鍏鋒敮鎸佸拰寮鍙戠幆澧冿紱瀹冨皢鍏佽紼嬪簭鍛樺儚鐜板湪緙栧啓紼嬪簭涓鏍峰鏄撶殑鏉ュ畾涔夎璦錛涜繖涓鉤鍙板皢瀹屽叏鏀寔LOP錛岀粰紼嬪簭鍛樹負紼嬪簭鐨勬瘡涓閮ㄥ垎閫夋嫨浣跨敤鏈鍚堥傜殑璇█鐨勮嚜鐢憋紝鑰屼笉鏄皢浠栦滑緇戝湪鏌愮鍥哄畾鐨刧eneral-purpose鐨勭紪紼嬭璦涓?/p>
MPS 鍙槸Language Oriented Programming鐨勪竴涓ず渚嬶紝灝界鎴戝湪榪欓噷浣跨敤MPS鏉ュ仛紺轟緥錛岃屽疄闄呬笂LOP鍙互鐢ㄨ澶氫笉鍚岀殑鏂規(guī)硶鏉ュ疄鐜幫紝浣犺嚜宸卞氨鍙兘鐭ラ亾涓浜涙浛浠f柟娉曪紱LOP 鐨勬蹇典笉絳夊悓浜庡畠鐨勫疄鐜幫紝灝卞儚OOP鐨勬蹇典笉絳夊悓浜嶫ava鎴朇++鎴朣malltalk涓鏍?/p>
浣犵煡閬撹繖鍒欏彜鑰佺殑璋氳錛?If it ain't broke, don't fix it". 涓繪祦緙栫▼鏂規(guī)硶寰堟槑鏄句笉瀹屾暣錛屾垜瑙佽繃瀹冨甫鏉ョ殑寰堝闂錛岃屽ぇ閮ㄥ垎婊嬬敓浜庤繖鏍蜂竴涓簨瀹烇細general-purpose鐨勮璦娌℃湁涓縐嶆柟娉曟潵瀹屽叏鏀寔浠繪剰鐨勯鍩燂紝鍚屾牱涔熸病鏈変竴縐嶇粺涓鐨刣omain-specific language;涓嬮潰鏄皢琚獿OP瑙e喅鐨勪富嫻佺紪紼嬩腑涓変釜鏈緋熺硶鐨勯棶棰橈細
Time Delay to Implement Ideas
瀵規(guī)垜鏉ヨ錛屾渶涓ラ噸鐨勯棶棰樻槸錛屽湪鎴戠‘鍒囩殑鐭ラ亾濡備綍瑙e喅涓涓棶棰橈紝鍜屾垜閫氳繃涓涓▼搴忔垚鍔熺殑鍚戣綆楁満浼犺揪瑙e喅鏂規(guī)涔嬮棿錛屾湁涓涓緢闀跨殑鏃墮棿宸紱鎴戝彲浠ョ敤鍑犱釜灝忔椂鐨勬椂闂村悜鍙﹀鐨勭▼搴忓憳瑙i噴闂鍜岃В鍐蟲柟妗堬紝鑰屽皢瑙e喅鏂規(guī)緙栫爜鍒拌綆楁満涓皢鑺辮垂闀跨殑澶氱殑鏃墮棿錛涜繖鏄洜涓哄鍙﹀鐨勭▼搴忓憳錛屾垜鍙互浣跨敤琛ㄨ揪鑳藉姏闈炲父涓板瘜鐨勮嚜鐒惰璦錛岃屽璁$畻鏈猴紝鎴戝彧鑳戒嬌鐢ㄦ煇縐嶈〃杈捐兘鍔涘樊寰堝鐨刧eneral-purpose鐨勭紪紼嬭璦錛涗粖澶╃殑緙栫▼璇█鍙兘琛ㄨ揪鍑犲崄縐嶆蹇碉紝鑰岃嚜鐒惰璦鑳藉綆媧佺殑琛ㄨ揪鍗冧竾縐嶆蹇碉紱鍥犳錛屽悜鍙﹀鐨勭▼搴忓憳瑙i噴闂錛屾垜鍙互琛ㄨ揪寰堥珮灞傜殑鎬濇兂錛岃屽璁$畻鏈猴紝鎴戝繀欏昏〃杈炬瘡涓姝ョ殑姣忎竴涓粏鑺?/p>
鍦ㄤ富嫻佺紪紼嬩腑錛屽ぇ閮ㄥ垎鑺卞湪鈥滅紪紼嬧濅笂鐨勬椂闂達紝瀹為檯涓婃槸鍦ㄥ鎵劇敤緙栫▼灞傛鐨勬娊璞$殑鏈鏉ヨ〃杈捐嚜鐒惰璦鐨勬蹇電殑鏂規(guī)硶錛岃岃繖鏄緢鍥伴毦鐨勶紝娌″灝戝垱閫犳х殑錛屾垨澶氭垨灝戞槸涓縐嶆椂闂寸殑嫻垂
涓句釜渚嬪瓙錛屼粖澶╁ぇ閲忕殑寮鍙戞椂闂磋姳璐瑰湪闈㈠悜瀵硅薄鐨勮璁★紙OOD錛変笂錛屽湪紼嬪簭鍛樿〃杈劇被銆佺戶鎵褲佸叧鑱旂瓑鏂歸潰榪欑‘瀹炴槸涓縐嶈繕綆楁湁鍒涢犳х殑榪囩▼錛涜繖欏瑰疄璺電殑鐩殑鏄敤闈㈠悜瀵硅薄鐨勬湳璇紝濡傜被鍜屾柟娉曪紝鏉ヨ〃杈劇▼搴忥紱OOD鐨勮繃紼嬫槸蹇呰鐨勶紝鍥犱負璇稿綾誨拰鏂規(guī)硶絳夋槸闈㈠悜瀵硅薄璇█鑳藉鐞嗚В鐨勪粎鏈夌殑鎶借薄錛屽畠鐪嬭搗鏉ユ槸蹇呰鍜屾湁鍒涢犳х殑錛屼絾鏄嬌鐢↙anguage Oriented Programming錛孫OD鏍規(guī)湰灝變笉闇瑕?/p>
Understanding and Maintaining Existing Code
涓嬩竴涓棶棰樻槸鐞嗚В鍜岀淮鎶ょ幇瀛樹唬鐮侊紱涓嶇瀹冩槸鍙︿竴涓▼搴忓憳鍐欑殑榪樻槸鎴戝啓鐨勶紝闂閮戒竴鏍鳳紱鍥犱負general-purpose鐨勮璦闇瑕佹垜鎶婇珮灞傜殑棰嗗煙姒傚康緲昏瘧涓轟綆灞傜殑緙栫▼璇█鐗規(guī)э紝鍦ㄦ渶緇堢殑紼嬪簭涓紝寰堝楂樺害姒傛嫭鐨勮瑙掋佽摑鍥鵑兘涓㈠け浜嗭紱褰撴垜鍦ㄤ互鍚庨噸鏂扮炕闃呯▼搴忔椂錛屾垜涓嶅緱涓嶉氳繃閫嗗悜宸ョ▼鏉ヤ簡瑙f垜鏈鍒濈殑鎰忓浘鏄粈涔堬紝鎴戝ご鑴戜腑鐨勬ā鍨嬫槸浠涔堬紱鑷沖皯錛屾垜蹇呴』鍦ㄨ剳嫻蜂腑閲嶆柊寤洪犳渶鍒濆湪緲昏瘧鍒癵eneral-purpose鐨勭紪紼嬭璦鐨勮繃紼嬩腑涓㈠け鐨勪俊鎭?/p>
瑙e喅榪欎釜闂鐨勪紶緇熸柟娉曟槸鍐欐敞閲婃垨鍏跺畠褰㈠紡鐨勬枃妗f潵璁板綍璁捐淇℃伅鍜屾ā鍨嬩俊鎭紝宸茬粡鏈夊嚑涓柟闈㈢殑鍥犵礌璇佹槑浜嗚繖鏄竴縐嶈剢寮辯殑瑙e喅鏂規(guī)錛岃嚦灝戝寘鎷紪鍐欒繖浜涜緟鍔╂枃妗g殑鎴愭湰銆佷互鍙婃枃妗e拰浠g爜閫愭笎涓嶅悓姝ョ殑瓚嬪娍錛涘茍涓旓紝榪樻湁涓涓病琚箍娉涜璇嗗埌鐨勪簨瀹烇紝灝辨槸鏂囨。騫朵笉鑳界洿鎺ヨ繛鎺ュ埌瀹冩墍璁板綍鐨勬蹇碉紱娉ㄩ噴鍜屾簮浠g爜琚粦瀹氬埌鍚屼竴涓湴鏂癸紝浣嗘槸姒傚康鍙兘鍦ㄦ簮浠g爜鐨勫涓湴鏂硅琛ㄨ揪錛涘叾瀹冪被鍨嬬殑鏂囨。褰誨簳浠庢簮浠g爜涓垎紱誨嚭鏉ワ紝鍙兘闂存帴鐨勫紩鐢ㄦ簮浠g爜錛涚悊鎯蟲儏鍐典笅錛屼唬鐮佸簲璇ユ槸鑷垜鎻忚堪鐨勶紝鎴戝簲璇ュ彧闃呰浠g爜鏈韓鏉ョ悊瑙d唬鐮侊紝鑰屼笉鏄粈涔堟敞閲婂拰澶栭儴鐨勬枃妗?/p>
Domain Learning Curve
絎笁涓富瑕佺殑闂鏄璇█榪涜棰嗗煙鐩稿叧鐨勬墿灞曪紱渚嬪錛屽湪OOP涓墿灞曡璦鐨勪富瑕佹柟娉曟槸浣跨敤綾誨簱錛涢棶棰樻槸綾誨簱涓嶆槸鐢ㄩ鍩熸蹇電浉鍏崇殑鏈鏉ヨ〃杈劇殑錛岃屾槸鐢ㄤ綆灞傜殑 general-purpose鐨勬娊璞¤濡傜被鍜屾柟娉曠瓑鏉ヨ〃杈撅紱鍥犳錛屽簱寰堝皯鑳藉鐩存帴琛ㄨ堪棰嗗煙姒傚康錛屽畠浠繀欏誨紩鍏ラ澶栫殑鏋濊妭錛堝涓涓被鐨勮繍琛屾椂琛屼負錛夋潵瀹屾垚鍒伴鍩熸蹇電殑鏄犲皠錛涗袱涓緢濂界殑甯歌渚嬪瓙鏄疓UI搴撳拰Database搴?/p>
瀛︿範榪欎簺綾誨簱涓嶆槸涓欏圭畝鍗曠殑浠誨姟錛屽嵆浣夸綘鏄釜棰嗗煙涓撳錛涘洜涓轟粠棰嗗煙鍒拌璦鐨勬槧灝勪笉鏄洿鎺ョ殑錛屼綘蹇呴』瀛︿範榪欑鏄犲皠錛涜繖鎰忓懗鐫涓涓櫋宄殑瀛︿範鏇茬嚎錛涢氬父鎴戜滑璇曞浘鐢ㄥぇ閲忕殑鎸囧崡鍜屾枃妗f潵瑙e喅榪欎釜闂錛屼絾鏄涔犺繖浜涘皢鑺辮垂澶ч噺鏃墮棿錛涘綋涓涓被搴撳彉寰楀鏉傜殑鏃跺欙紝瀹冧篃鍙樺緱鏇撮毦浠ュ涔狅紝紼嬪簭鍛樺皢鍥犳澶卞幓瀛︿範瀹冪殑鍔ㄦ満
鐢氳嚦褰撴帉鎻′簡榪欑澶嶆潅鐨勬槧灝勪箣鍚庯紝渚濈劧榪樹細寰堝鏄撶殑璇敤綾誨簱錛屽洜涓哄紑鍙戠幆澧冿紙鍍忕紪璇戝櫒鍜岀紪杈戝櫒錛変笉鑳藉府鍔╀綘姝g‘鐨勪嬌鐢ㄧ被搴擄紝瀵硅繖浜涘伐鍏鋒潵璇達紝璋冪敤涓涓狦UI 瀵硅薄鐨勬柟娉曞拰璋冪敤涓涓狣B瀵硅薄鐨勬柟娉曟槸涓鏍風殑錛氬畠浠兘鍙槸瀵硅薄涓婄殑鏂規(guī)硶璋冪敤錛屾病鏈変換浣曟洿澶氱殑鎰忔濓紱璁頒綇鍝簺綾誨拰鏂規(guī)硶搴旇琚皟鐢紝浠ヤ粈涔堥『搴忚璋冪敤錛岀瓑絳夛紝閮芥槸浣跨敤鑰呯殑璐d換
鐢氳嚦鍗充嬌浣犳棦鏄鍩熶笓瀹跺張鏄被搴撶殑浣跨敤涓撳錛屼篃浠嶇劧鏈変嬌鐢ㄧ被搴撶紪鍐欑殑紼嬪簭鍗佸垎鍐楅暱鐨勯棶棰橈紱鐩稿綆鍗曠殑棰嗗煙姒傚康闇瑕佸鏉傜殑鎺柦鏉ユ紜殑璋冪敤錛涗緥濡傦紝浠諱綍鐢ㄨ繃Swing鐨勫紑鍙戣呴兘娓呮榪欎竴鐐癸紱緙栧啓綆鍗曠殑紼嬪簭灝卞凡緇忚姳璐瑰お闀跨殑鏃墮棿浜嗭紝澶嶆潅鐨勭▼搴忕敋鑷蟲洿緋?/p>
What Is a Program in LOP?
浠婂ぉ錛岀櫨鍒嗕箣涔?jié)鍗佷節(jié)鐨劷E嬪簭鍛樿涓虹紪紼嬪氨鏄紪鍐欎竴涓茶綆楁満鑳藉鎵ц鐨勬寚浠ら泦錛涙垜浠鏁欒偛璇磋綆楁満寤虹珛鍦ㄥ浘鐏墊満妯″瀷涔嬩笂錛屽洜姝ゅ畠浠敤鎸囦護闆嗙殑鏈鏉モ滄濊冣濓紱浣嗘槸榪欑緙栫▼鐨勮鐐規(guī)槸鏈夌己闄風殑錛屽畠娣鋒穯浜嗙紪紼嬬殑鐩殑鍜屾墜孌碉紱鎴戝皢涓轟綘婕旂ずLOP涓轟粈涔堜紭浜庝紶緇熺紪紼嬫柟娉曪紝浣嗛鍏堟垜蹇呴』婢勬竻浠ヤ笅浜嬪疄錛氫竴涓狶OP鐨勭▼搴忥紝涓嶆槸涓涓叉寚浠ら泦錛涢偅涔堝畠鏄粈涔堝憿錛?/p>
褰撴垜鏈変竴涓棶棰樿瑙e喅錛屾垜鍦ㄥご鑴戜腑鎬濊冭В鍐蟲柟妗堬紝榪欎釜瑙e喅鏂規(guī)鐢ㄥ崟璇嶃佹爣璁般佹蹇點佹濇兂錛屾垨鑰呬換浣曚綘鍠滄鐨勭О鍛兼潵琛ㄨ堪錛屽畠鏄垜澶磋剳涓浣曡В鍐抽棶棰樼殑妯″瀷錛涙垜鍑犱箮浠庢湭鎶婂畠浠兂璞℃垚涓鍫嗘寚浠ら泦錛岃屾槸鎴戞鍦ㄥ伐浣滅殑棰嗗煙涓壒瀹氱殑鍏鋒湁鍐呭湪鑱旂郴鐨勬蹇電殑闆嗗悎錛涗緥濡傦紝褰撴垜鎬濊僄UI棰嗗煙鏃訛紝鎴戞兂璞♀滆繖涓寜閽埌閭h竟鍘伙紝榪欎釜杈撳叆鍩熷埌榪欒竟鏉ワ紝榪欎釜緇勫悎妗嗛噷闈㈤渶瑕佹湁涓浜涙暟鎹殑鍒楄〃鈥濓紱鎴戠敋鑷沖彧鏄湪澶磋剳涓妸瀹冪敾鍑烘潵錛屾牴鏈笉鐢ㄤ換浣曡█璇?/p>
鎴戜箣鎵浠ヨ涓鴻繖縐嶆剰蹇墊ā鍨嬫槸涓縐嶈В鍐蟲柟妗堟槸鍥犱負鎴戣兘澶熺敤瓚沖鐨勭粏鑺傚悜鍙︿竴涓▼搴忓憳瑙i噴榪欎釜妯″瀷錛屼嬌浠栬兘澶熷潗涓嬫潵緙栧啓涓涓В鍐寵繖涓棶棰樼殑紼嬪簭錛堟瘮濡傜敤 Java錛夛紱鎴戜笉闇瑕侀潪寰楃敤緙栫▼璇█鐨勬湳璇潵瑙i噴榪欎釜鏂規(guī)錛屽畠鍙互鏄換鎰忓艦寮忥紱姣斿錛屼負浜嗚В閲婂浣曞竷灞涓涓狦UI鐨勭獥浣擄紝鎴戝彧闇瑕佺敾鍑鴻繖涓獥浣擄紱濡傛灉緇樼敾鏈夎凍澶熺殑緇嗚妭錛岀粯鐢繪湰韜氨浠h〃浜嗚В鍐蟲柟妗堬紱榪欑棰嗗煙鐩稿叧鐨勮〃榪板簲璇ュ氨鏄▼搴忋傛崲鍙ヨ瘽璇達紝搴旇鏈変竴縐嶆柟娉曞厑璁告垜浠嬌鐢ㄨ繖縐嶈〃榪頒綔涓虹湡姝g殑紼嬪簭錛岃屼笉浠呬粎鏄笌鍏跺畠紼嬪簭鍛樹氦嫻佺殑鎵嬫錛涗簬鏄繖渚垮鍑轟簡鎴戝紼嬪簭闈炴寮忕殑瀹氫箟錛氫竴涓▼搴忔槸浠諱綍瀵逛竴涓棶棰樻棤姝т箟鐨勮В鍐蟲柟妗堬紝鎴栬咃紝鏇寸簿紜竴鐐癸細涓涓▼搴忔槸瀵規(guī)煇涓鍩熺殑鏌愪釜闂鐨勮В鍐蟲柟妗堢殑浠諱綍浣跨敤棰嗗煙鐩稿叧姒傚康琛ㄨ揪鐨勶紝綺劇‘瀹氫箟鐨勬ā鍨?/p>
榪欏氨鏄垜璁や負紼嬪簭鍛樺簲璇ユ嫢鏈夊垱寤轟粬浠嚜宸辯殑璇█鐨勮嚜鐢辯殑涓昏鍘熷洜錛氳繖鏍蜂粬浠氨鑳藉鐢ㄦ洿鍔犺嚜鐒剁殑褰㈠紡鏉ヨ〃杈捐В鍐蟲柟妗堬紱General-purpose鐨勮璦鏄棤姝т箟鐨勶紝浣嗘槸澶啑浣欏拰鏄撲簬鍑洪敊錛涜嚜鐒惰璦錛堝鑻辮錛夎〃杈捐兘鍔涘崄鍒嗕赴瀵岋紝浣嗙洰鍓嶅畠闅句互浣跨敤鍥犱負瀹冨お涓嶇簿紜お涓嶅艦寮忓寲浜嗭紱鎴戜滑闇瑕佽兘澶熷鏄撶殑鍒涘緩褰㈠紡鍖栫殑錛岀簿紜畾涔夌殑錛岄鍩熺浉鍏崇殑璇█錛涘洜姝anguage Oriented Programming灝嗕笉鍙槸緙栧啓紼嬪簭錛岃繕鍖呮嫭鍒涘緩鐢ㄦ潵緙栧啓紼嬪簭鐨勮璦錛涙垜浠殑紼嬪簭灝嗚緙栧啓鐨勬洿鎺ヨ繎闂鍩熻屼笉鏄綆楁満鎸囦護闆嗛鍩燂紝鍥犳瀹冧滑灝嗛潪甯稿鏄撶殑琚紪鍐?/p>
Programs and Text
浜轟滑涔犳儻鎬х殑璁や負紼嬪簭鏄綔涓烘枃鏈潵瀛樺偍鐨勶紝涔熷氨鏄錛屼竴涓瓧鑺傛祦錛涗負浠涔堜笉搴旇鏄憿錛熸瘯绔熸湁鏃犳暟鐨勫伐鍏鋒潵緙栬緫銆佹樉紺恒佹搷浣滄枃鏈紱浠婂ぉ鐨勭紪紼嬭璦鐨勬牳蹇冮儴鍒嗘槸鏂囨硶鍣紝瑙f瀽鍣紝緙栬瘧鍣ㄥ拰闈㈠悜琛岀殑璋冭瘯鍣紱浣嗘槸紼嬪簭鐨勬枃鏈彧鏄▼搴忕殑涓縐嶈〃鐜板艦寮忥紱紼嬪簭涓嶆槸鏂囨湰錛涘己琛屾妸紼嬪簭濉炲埌鏂囨湰閲屽紩璧蜂簡澶ч噺浣犲彲鑳借繕涓嶇煡閬撶殑闂錛涙垜浠渶瑕佷竴縐嶄笉鍚岀殑鏂規(guī)硶鏉ュ瓨鍌ㄥ茍鍜屾垜浠▼搴忎竴璧峰伐浣?/p>
褰撶紪璇戝櫒緙栬瘧婧愪唬鐮佹椂錛屽畠鎶婃枃鏈В鏋愭垚縐頒綔鎶借薄璇硶鏍戠殑鏍戠姸緇撴瀯錛涘綋紼嬪簭鍛橀槄璇繪簮浠g爜鏃訛紝浠栦滑鍦ㄨ剳嫻蜂腑鍋氫簡鏈川涓婄浉鍚岀殑浜嬫儏錛涙垜浠粛鐒朵笉寰椾笉鑰冭檻紼嬪簭鐨勬爲鐘剁粨鏋勶紱榪欏氨鏄負浠涔堟垜浠鏈夎姳鎷彿錛屾柟鎷彿錛屽渾鎷彿絳夛紱榪欎篃鏄負浠涔堟垜浠渶瑕佹牸寮忓寲鍜岀緝榪涗唬鐮佸拰閬靛畧緙栫爜瑙勮寖錛屽洜涓鴻繖鏍峰氨鑳藉鏇村鏄撶殑闃呰婧愪唬鐮?/p>
鎴戜滑涓轟粈涔堜嬌鐢ㄦ枃鏈瓨鍌ㄥ憿錛熷洜涓哄綋鍓嶏紝闃呰鍜岀紪杈戠▼搴忔渶鏂逛究鍜屾渶閫氱敤鐨勬柟娉曡繕鏄嬌鐢ㄦ枃鏈紪杈戝櫒錛涗絾鏄垜浠細涓烘浠樺嚭浠d環(huán)錛屽洜涓虹▼搴忕殑鏂囨湰琛ㄧず鏈夐噸澶х殑緙虹偣錛屽叾涓渶閲嶈鐨勬槸鍩轟簬鏂囨湰鐨勭紪紼嬭璦闈炲父闅句簬鎵╁睍錛涘鏋滅▼搴忎互鏂囨湰鐨勫艦寮忓瓨鍌紝浣犲氨浼氶渶瑕佷竴涓棤姝т箟鐨勬枃娉曞櫒鏉ヨВ鏋愮▼搴忥紱褰撲負璇█鍔犲叆鏂扮壒鎬ф椂錛岀淮鎶よ璦鏃犱簩涔夋х殑鎵╁睍鍙樺緱鏃ョ泭鍥伴毦錛涙垜浠皢闇瑕佸彂鏄庢洿澶氱被鍨嬬殑鎷彿銆佹搷浣滅銆佸叧閿瓧銆侀『搴忚鍒欍佸祵濂楋紝絳夌瓑錛涜璦鐨勮璁¤呬滑鑺辮垂浜嗘棤鏁版椂闂存潵鎬濊冭娉曪紝騫惰瘯鍥懼彂鐜版墿灞曡璦鐨勬柊鏂規(guī)硶
濡傛灉鎴戜滑鎵撶畻璁╁垱寤鴻璦鍙樺緱瀹規(guī)槗錛屾垜浠氨闇瑕佸皢紼嬪簭鐨勮〃紺哄拰瀛樺偍浠庣▼搴忔湰韜垎紱誨紑錛涙垜浠簲璇ョ洿鎺ュ皢紼嬪簭瀛樹負緇撴瀯鍥撅紝鍥犱負榪欏厑璁告垜浠璇█鍋氫換浣曟垜浠枩嬈㈢殑鎵╁睍錛涙湁鏃訛紝鎴戜滑鐢氳嚦鏍規(guī)湰涓嶉渶瑕佽冭檻鏂囨湰瀛樺偍錛涗粖澶╃殑涓涓緢濂界殑渚嬪瓙鏄疎xcel spreadsheet.鐧懼垎涔嬩節(jié)鍗佷節(jié)鐨勪漢鏍規(guī)湰涓嶉渶瑕佸鐞嗗瓨鍌ㄦ牸寮忥紝褰撹繖鎴愪負闂鏃舵諱細鏈夊悇縐嶅鍏ュ鍑哄姛鑳藉彲鐢紱浠婂ぉ鎴戜滑浣跨敤鏂囨湰鐨勭湡姝e師鍥犳槸鎴戜滑娌℃湁姣旀枃鏈紪杈戝櫒鏇村ソ鐨勭紪杈戝櫒錛屼絾鏄垜浠彲浠ユ敼鍙樿繖涓鐐?/p>
闂鏄枃鏈紪杈戝櫒寰堟剼锠紝騫朵笖涓嶇煡閬撳浣曚笌紼嬪簭鐨勫浘鐘剁粨鏋勪竴璧峰伐浣滐紱浣嗘槸浣跨敤姝g‘鐨勫伐鍏鳳紝緙栬緫鍣ㄥ皢鑳藉鐩存帴鍜屽浘鐘剁粨鏋勪竴璧峰伐浣滐紝騫朵笖鑳藉璁╂垜浠嚜鐢辯殑浣跨敤浠諱綍緙栬緫鍣ㄦ彁渚涚殑鎴戜滑鍠滄鐨勫彲瑙嗗寲琛ㄧ幇褰㈠紡錛涙垜浠彲浠ユ妸紼嬪簭鍋氭垚鏂囨湰銆佽〃銆佸浘銆佹爲銆佹垨鍏跺畠浠諱綍褰㈠紡錛涙垜浠敋鑷寵兘涓轟笉鍚岀洰鐨勪嬌鐢ㄤ笉鍚岀殑琛ㄧ幇褰㈠紡錛屾瘮鏂硅錛屽浘褰㈠寲琛ㄧず鐢ㄦ潵嫻忚錛屾枃鏈寲琛ㄧず鐢ㄦ潵緙栬緫錛涙垜浠兘澶熶負浠g爜鐨勪笉鍚岄儴鍒嗕嬌鐢ㄩ鍩熺浉鍏崇殑琛ㄧず錛屾瘮濡備負鏁板鍏紡浣跨敤鍥懼艦鍖栫殑鏁板絎﹀彿錛屼負鍥捐〃浣跨敤鍥懼艦鍖栫殑鍥捐〃錛屼負 spreadsheets浣跨敤琛屽拰鍒楋紝絳夌瓑錛涙垜浠兘澶熶負闂鍩熶嬌鐢ㄦ渶鍚堥傜殑琛ㄧ幇褰㈠紡錛屽彲浠ユ槸鏂囨湰錛屼絾涓嶉檺浜庢枃鏈紱鏈濂界殑琛ㄧ幇褰㈠紡渚濊禆浜庢垜浠浣曟濊冮棶棰樺煙錛涜〃鐜板艦寮忕殑鐏墊椿鎬т篃灝嗕嬌鎴戜滑鐨勭紪杈戝櫒姣斾互寰鏇村姞寮哄ぇ錛屽洜涓轟笉鍚岀殑琛ㄧ幇褰㈠紡鏈変笉鍚岀殑鏂瑰紡鍘葷紪杈戝畠浠?/p>
What Is a Language in LOP?
鏈鍚庯紝鎴戝簲璇ラ槓鏄庢垜璁や負鐨勨滆璦鈥濇槸浠涔堬紱鍦↙OP涓紝涓縐嶈璦鏄氳繃涓変釜涓昏鐨勮绱犳潵瀹氫箟鐨勶細緇撴瀯銆佺紪杈戝櫒銆佸拰璇箟錛涚粨鏋勫畾涔変簡鎶借薄璇硶銆佹敮鎸佺殑姒傚康銆佷互鍙婂浣曞畨鎺掑畠浠紱緙栬緫鍣ㄥ畾涔変簡鍏蜂綋鐨勮娉曪紝濡備綍鎻忕粯鍜岀紪杈戣璦錛涜涔夊畾涔変簡琛屼負錛屽畠濡備綍琚В閲婏紝鍜?鎴栧畠濡備綍琚漿鎹㈡垚鍙墽琛屼唬鐮侊紱褰撶劧錛岃璦榪樺彲浠ユ湁鍏跺畠鏂歸潰錛屾瘮濡傜害鏉熷拰綾誨瀷緋葷粺
鎴戝凡緇忚В閲婁簡涓轟粈涔堟垜浠渶瑕佸鏄撶殑鍒涘緩鏂扮殑璇█錛屼絾鏄紝鎴戜滑濡備綍鎵嶈兘璁╁畠瀹規(guī)槗鍛紵濡傛灉浣爐urn around榪欎釜闂錛屽茍涓旀妸Language Oriented Programming搴旂敤浜庡畠鑷韓錛屼綘浼氬緢蹇湅鍒扮瓟妗堬紱This calls for a little self-referential bootstrapping, which can seem tricky, but be patient. 涓鏃︿綘鐞嗚В浜嗚繖涓紝浣犲皢寰楀埌LOP鐪熸鐨勫姏閲忥紙涓涓狶OP鐨勫厓灞傛錛?/p>
鍥為【涓涓婰OP鐨勭悊蹇碉細浣垮垱寤篋SLs鏇村鏄擄紝鑰岃繖浜汥SLs灝嗕嬌緙栧啓紼嬪簭鏇村鏄擄紱浣嗗氨鍍忔垜宸茬粡璇存槑鐨勶紝LOP涓殑鈥樼▼搴忊欎笉灞闄愮殑鎰忓懗鐫浣犵敤榪囩殑鍏稿瀷鐨?鈥滀竴鍫嗘寚浠ら泦鈥濈殑紼嬪簭錛涘鏌愪釜棰嗗煙涓煇涓棶棰樹換浣曟棤浜屼箟鎬х殑瑙e喅鏂規(guī)閮芥槸鈥樼▼搴忊欙紱鍥犳濡傛灉浣犺鎯充竴涓嬧滃垱寤烘柊璇█鈥濊繖涓鍩燂紝閭d箞榪欎釜棰嗗煙涓殑鈥樼▼搴?鈥欙紝鏈韓灝辨槸涓縐嶆柊璇█鐨勫畾涔夛紝鍙互浣滀負涓涓В鍐蟲柟妗堟潵鎬濊冿紝灝卞儚浠諱綍鍏跺畠棰嗗煙鐨勮В鍐蟲柟妗堜竴鏍鳳紱
鍥犳錛屽簲鐢↙OP鐨勬濇兂錛屼嬌鈥滃垱寤烘柊璇█鈥濇洿瀹規(guī)槗鐨勬柟娉曪紝灝辨槸鍒涘緩涓縐嶇壒瀹氱殑涓撴敞浜庘滃垱寤烘柊璇█鈥濊繖涓鍩熺殑DSL錛涢氳繃搴旂敤榪欎簺language- building DSL錛屾垜浠彲浠ヤ嬌鍒墮犳柊璇█鏇村鏄擄紱璁╂垜浠湅鍑犵language-building璇█鐨勪緥瀛愶紝浣夸綘鏇村ソ鐨勭悊瑙e畠浠槸濡備綍宸ヤ綔鐨勶紱榪欓噷鍙槸涓涓榪幫紝浠ュ悗鐨勬枃绔犳垜浼氭洿璇︾粏鐨勬弿榪板畠浠?/p>
Structure Language
鏈灝忔渶灝戯紝鎴戜滑闇瑕佸畾涔夋柊璇█鐨勨樼粨鏋勨欙紱榪欐槸鎴戜滑浣曚互鑳藉緙栧啓鈥滅簿紜畾涔夆濈殑紼嬪簭鐨勫師鍥狅紱璇█鐨勭粨鏋勫茍涓嶆剰鍛崇潃瀹冪殑鏂囨湰褰㈠紡鐨勬枃娉曪紞錛嶅儚鎴戞彁鍒拌繃鐨勶紝榪欑璇█鐢氳嚦鏍規(guī)湰灝辨病鏈夋枃鏈〃紺鴻屽彧鏈夊浘褰㈠寲琛ㄧず
鍦ㄥ疄璺礚OP鐨勬椂鍊欙紝澶ч儴鍒嗘儏鍐典笅錛屼綘浼氬伐浣滃湪涓や釜灞傛鐨勭紪紼嬩腑錛氬厓灞傛鍜岀▼搴忓眰嬈★紱浣犲湪鍏冨眰嬈′腑瀹氫箟璇█錛屽湪紼嬪簭灞傛涓紪鍐欑▼搴忥紱褰撳畾涔変竴縐嶆柊璇█鐨勭粨鏋勬椂錛屼綘浼氫嬌鐢ㄤ竴縐峫anguage-structure DSL鏉ュ畾涔変綘鐨勬柊璇█錛岃岃繖鏃訛紝浣犲皢鍚屾椂宸ヤ綔鍦ㄨ繖縐峫anguage-structure DSL鐨勭▼搴忓眰嬈″拰鏂拌璦鐨勫厓灞傛涓?/p>
鍦∕PS 涓紝紼嬪簭灞傛鐨勬瘡涓妭鐐歸兘鏈変竴縐嶁滅被鍨嬧濓紝綆鍗曠殑榪炴帴鍒板厓灞傛鐨勫彟涓涓妭鐐癸紱紼嬪簭灞傛鐨勮繖涓妭鐐硅縐頒綔榪欑綾誨瀷鐨勪竴涓滃疄渚嬧濓紱鍏冨眰嬈′腑鐨勨滅被鍨嬧濊妭鐐瑰垯瀹氫箟浜嗚繖縐嶇被鍨嬬殑瀹炰緥鑳藉鎷ユ湁鐨勫叧緋誨拰灞炴э紱鎻忚堪榪欑鍏冨眰嬈¤璦緇撴瀯鐨勮璦錛屽氨琚畝鍗曠殑縐頒負鈥淪tructure Language鈥?/p>
鐢⊿tructure Language瀹氫箟涓縐嶈璦鐨勬娊璞¤娉曪紝浣犲簲璇ュ彧鏄灇涓捐繖縐嶈璦鎵鏈夌殑綾誨瀷錛涚被鍨嬬畝鍗曠殑琛ㄧず浜嗚繖縐嶈璦鏀寔鐨勭壒鎬ф垨鑰呮蹇碉紱姣忎釜姒傚康搴旇鐢ㄥ畠鐨勫悕瀛椼佸疄渚嬬殑鍐呴儴灞炴с佸疄渚嬩笌鍏跺畠鑺傜偣涔嬮棿鐨勫叧緋伙紙閫氬父鏄繛鎺ワ級鏉ュ畾涔?/p>
瀛樺湪涓ょ鍙兘鐨勫叧鑱旓紱絎竴縐嶆槸綾諱技鑱氬悎鐨勫叧鑱旓紝瀹冨艦鎴愪簡姒傚康妯″瀷鐨勭埗瀛愭爲緇撴瀯錛涚浜岀鏄潪鑱氬悎鐨勶紝鑷敱褰㈠紡鐨勫叧鑱旓紝瀹冨彲浠ヨ繛鎺ュ埌緋葷粺涓換浣曞叾瀹冪殑鑺傜偣錛涘叧鑱旀湁涓や釜绔偣錛氭簮鍜岀洰鏍囷紱鍏寵仈鏈夎鑹詫紝浣犲彲浠ュ畾涔夋瘡涓鑹茬殑鍚嶇О銆佹瘡涓鐐圭殑澶氶噸鎬э紝姣忎釜鐩爣鑺傜偣鐨勭被鍨嬶紱澶氶噸鎬у彲浠ユ槸1, 0..1, 0..n, 1..n絳夛紝璁╀綘鑳藉綰︽潫鍏寵仈鍙互鍒涘緩澶氬皯榪炴帴錛涘叧鑱旂殑鐩爣綾誨瀷鍙互琚敤鏉ョ害鏉熷摢浜涚被鍨嬬殑鑺傜偣鍙互琚繛鎺ュ湪涓璧?/p>
鍥犳錛屼嬌鐢ㄦ柊璇█緙栧啓紼嬪簭鍖呮嫭錛氬垱寤鴻璦涓蹇電殑瀹炰緥銆佷負瀹炰緥鐨勫睘鎬ц祴鍊箋佹牴鎹璦姒傚康瀹氫箟鐨勫叧緋誨皢紼嬪簭涓殑鑺傜偣榪炴帴鍦ㄤ竴璧鳳紱鎵鏈夎繖浜涘皢浼氳寮哄ぇ鐨勭紪杈戝櫒鏀寔錛屼綘鑳藉涓轟綘鐨勮璦瀹氫箟榪欑緙栬緫鍣?/p>
Editor Language
閭d箞錛岀紪鍐欏拰鎿嶄綔姒傚康妯″瀷鐨勭晫闈㈠簲璇ユ槸浠涔堝憿錛熸垜浠殑璇█闇瑕佸嚑縐嶇被鍨嬬殑緙栬緫鍣紝浣嗘槸鎴戜滑涓嶆兂瑕佷竴涓氱敤鐨勭紪杈戝櫒錛涚粡楠岃〃鏄庨氱敤鐨勭紪杈戝櫒涓嶈兘鍍忔垜浠笇鏈涚殑閭f牱鏈夌敤錛涙垜浠笇鏈涘揩閫熺殑緙栧啓妯″瀷錛屽洜姝ゆ垜浠渶瑕佷笓涓烘垜浠殑璇█姒傚康瀹氬仛鐨勭壒孌婄殑緙栬緫鍣紱涓瀹氱▼搴︿笂錛岀紪杈戝櫒鏄璦鐨勪竴閮ㄥ垎錛岃屾垜浠殑鐩爣鏄鏄撶殑鍒涘緩鏂拌璦錛岄偅涔堝垱寤烘柊鐨勭紪杈戝櫒涔熷簲璇ュ緢瀹規(guī)槗錛涙湰璐ㄤ笂錛屾垜浠渶瑕佷竴縐嶅垱寤虹紪杈戝櫒鐨勮璦錛屽湪MPS涓紝瀹冭縐頒負Editor Language
褰撲漢浠惉鎴戣鎴戜滑鐨勭▼搴忓皢瀛樺偍涓哄浘褰㈠茍涓旀垜浠渶瑕佺壒瀹氱殑緙栬緫鍣紝鎴戠‘淇″緢澶氫漢璁や負鎴戝皢瑕佽皥鍒板浘褰㈢紪杈戝櫒錛屼簨瀹炰笉鏄繖鏍峰瓙鐨勶紱灝界紼嬪簭鏄浘褰㈠艦寮忥紝緙栬緫鍣ㄥ嵈涓嶄竴瀹氶潪寰楀皢紼嬪簭鎻忕粯鎴愬浘褰紱浜嬪疄涓婏紝鍙湁灝戞暟鎯呭喌涓嬪浘褰㈢紪杈戝櫒鎵嶆槸鏈夌敤鐨勶紙涔熷氨鏄錛屽綋瀹冨悎閫傜殑鏃跺欙紝姣斿瀵規(guī)暟鎹簱琛級錛涚浉鍙嶏紝鎴戜滑鐨凟ditor Language鏈夋洿濂界殑鐏墊劅鏉ユ簮錛岃鍒虹殑鏄紝瀹冩潵鑷枃鏈紪杈戝櫒
濡傛灉浣犵敤鏂囨湰緙栬緫鍣ㄦ祻瑙堜竴涓吀鍨嬬殑紼嬪簭錛屼綘鍙互鎯寵薄緙栬緫鍣ㄨ鍒嗘垚浜嗙煩褰㈠崟鍏冿紱涓浜涘崟鍏冨寘鍚繀闇鐨勬爣璇嗗鍏抽敭瀛椼佽姳鎷彿銆佸渾鎷彿絳夛紝鍏跺畠鐨勫崟鍏冨寘鍚敤鎴峰畾涔夌殑鏍囪瘑錛屽綾誨拰鏂規(guī)硶鐨勫悕縐幫紱澶х殑鍗曞厓鐢卞皬鐨勫崟鍏冪粍鎴愶紝鍍忔柟娉曞潡鍖呭惈璇彞錛岃岃鍙ュ彲鑳藉寘鍚嚜宸辯殑宓屽鍧楋紱浜嬪疄涓婏紝浠諱綍涓繪祦緙栫▼璇█涓換浣曡壇濂芥瀯閫犵殑紼嬪簭閮藉彲浠ュ垎瑙d負鐭╁艦鍗曞厓鐨勯泦鍚堬紱閭d箞錛屽湪Editor Language涓紝浣犱笉闇瑕佹兂璞¤繖浜涘崟鍏冿紝鍥犱負緙栬緫鍣ㄥ氨鏄畝鍗曠殑鐢辯煩褰㈠崟鍏冪粍鎴愮殑
鍗曞厓鐨勪嬌鐢ㄦ湁涓浜涙湁瓚g殑浼樼偣錛涢鍏堬紝褰撶洿鎺ュ伐浣滃湪紼嬪簭鍥懼艦鑰屼笉鏄▼搴忔枃鏈笂鏃訛紝鍗曞厓鍙互瀹岀編鐨勬ā浠跨敋鑷寵秴榪囨爣鍑嗙殑鏂囨湰緙栬緫鍣紱絎簩錛屽崟鍏冧笉灞闄愪簬鏂囨湰錛屼綘鍙互寰鍗曞厓閲屽榪涢鑹查夋嫨鍣ㄣ佹暟瀛︾鍙楓佸浘琛ㄣ佺煝閲忓浘銆佹垨浠諱綍鍒殑浠涔堬紱鏈鍚庯紝榪欑鍗曞厓褰㈠紡鐨刲ayout鏄彲閫夌殑錛岀▼搴忓憳鍙互鎻愪緵涓嶅悓鐨勬満鍒訛紝鍗曞厓褰㈠紡鐨?layout鍙槸涓縐嶆湁鐢ㄧ殑緙虹渷璁劇疆
鍥犳錛孍ditor Language甯姪浣犲畾涔夎璦涓瘡涓蹇靛搴旂殑鍗曞厓鐨刲ayout錛涗綘鍙互瀹氫箟鍝簺閮ㄥ垎鏄笉鍙樼殑錛屽儚鎷彿鎴栧叾瀹冧慨楗扮鍙鳳紝鍝簺鏄彲鍙樼殑錛岄渶瑕佺敤鎴峰幓瀹氫箟鐨勶紱Editor Language涔熷府鍔╀綘鍦ㄤ綘鑷繁鐨勭紪杈戝櫒涓姞鍏ュ己澶х殑鐗規(guī)э紝鍍忚嚜鍔ㄥ畬鎴愩侀噸鏋勩佸鑸佽娉曞姞浜侀敊璇姞浜佷互鍙婁換浣曞叾瀹冧綘鎯沖埌鐨勪簨鎯咃紱鍥犳浣犺兘澶熷鍔犵幇鍦ㄧ殑緙栬緫鍣ㄥIntelliJ IDEA絳夋嫢鏈夌殑鍔熻兘鍒頒綘鑷繁鐨勮璦涓紱榪欐槸鍙兘鐨勶紝鍥犱負紼嬪簭鍜岃璦琚瀯閫犱負鍥懼艦錛岃屾垜浠湁涓撻棬鐨凟ditor Language甯姪鎴戜滑鍒涢犲己澶х殑緙栬緫鍣?/p>
Transformation Language
Structure Language鍜孍ditor Language宸茬粡鍏卞悓鎻愪緵浜嗕竴浜涘姛鑳斤紝浣犺兘澶熺敤瀹冧滑鍜屽叾浠栦漢浜ゆ祦鎬濇兂錛屾瘮濡傜敾UML鍥撅紝鎴栬呯紪鍐欏叾瀹冪被鍨嬬殑鏂囨。錛涚劧鑰岋紝澶ч儴鍒嗘椂闂存垜浠槸鎯寵鎴戜滑鐨勪唬鐮佸仛鐐逛粈涔堬紝鍥犳錛屾垜浠繀欏繪壘鍒頒竴縐嶆柟娉曡瀹冭兘澶熸墽琛岋紱鏈変袱縐嶄富瑕佺殑鏂瑰紡鏉ュ仛榪欎歡浜嬫儏錛氳В閲婂拰緙栬瘧
DSLs鏀寔鐨勮В閲婃柟寮忓府鍔╁畾涔夎綆楁満搴旇濡備綍瑙i噴紼嬪簭錛孌SLs鏀寔鐨勭紪璇戞柟寮忓府鍔╁畾涔夊浣曚負紼嬪簭浜х敓鍙墽琛屼唬鐮侊紱鎴戝皢鍦ㄤ互鍚庣殑鏂囩珷涓璁哄瑙i噴鏂瑰紡鐨勬敮鎸侊紝鐜板湪鎴戞兂璇存槑涓涓婱PS鏄浣曟敮鎸佺紪璇戞柟寮忕殑
緙栬瘧鎰忓懗鐫鎷垮埌婧愪唬鐮侊紝騫朵粠涓駭鐢熸煇縐嶅艦寮忕殑鍙墽琛屼唬鐮侊紱瀵逛簬緇撴灉浠g爜鏈夊縐嶅彲鑳界殑褰㈠紡錛涗負浜х敓鍙墽琛屼唬鐮侊紝浣犲彲浠ョ敓鎴愭湰鍦版満鍣ㄧ爜錛屼篃鍙互鐢熸垚铏氭嫙鏈哄瓧鑺傜爜錛涙垨鑰咃紝浣犲彲浠ョ敓鎴愬彟澶栦竴縐嶈璦鐨勬簮浠g爜錛堟瘮濡侸ava錛孋++錛夛紝鐒跺悗鐢ㄧ幇鏈夌殑緙栬瘧鍣ㄨ漿鎹負鍙墽琛屼唬鐮侊紱綾諱技鐨勶紝浣犵敋鑷沖彲浠ヤ駭鐢熸煇縐嶈В閲婂瀷璇█鐨勬簮浠g爜錛岀敤鐜版湁鐨勮В閲婂櫒瑙i噴鎵ц
涓轟簡閬垮厤澶勭悊榪欎箞騫挎硾鐨勭洰鏍囨牸寮忥紝鎴戜滑鐨勬柟娉曟槸鐢∕PS鏉ュ仛姣忎竴浠朵簨錛涢鍏堬紝浣犲湪MPS涓嬌鐢⊿tructure Language瀹氫箟涓縐嶇洰鏍囪璦錛岃繖縐嶇洰鏍囪璦鍜岀洰鏍囨牸寮忎箣闂村簲璇ユ湁鐩存帴鐨勪竴瀵逛竴鐨勬槧灝勶紱渚嬪錛屽鏋滀綘鐨勭洰鏍囨牸寮忔槸鏈哄櫒鐮侊紝浣犲簲璇ョ敤MPS瀹氫箟涓縐嶅搴旀満鍣ㄧ爜鐨勭洰鏍囪璦錛涘鏋滅洰鏍囨牸寮忔槸Java婧愪唬鐮侊紝浣犲簲璇ュ畾涔変竴縐嶇被Java鐨勭洰鏍囪璦錛涚洰鏍囪璦涓嶅繀鏀寔鐩爣鏍煎紡鎵鏈夌殑鍔熻兘鐗規(guī)э紝鍙負浣犻渶瑕佺殑璇█鐗規(guī)ц繘琛岀畝鍗曠殑涓瀵逛竴鐨勬槧灝勫嵆鍙?/p>
閭d箞鐜板湪錛岀紪璇戝垎涓轟袱涓樁孌碉細涓涓畝鍗曠殑浠庣洰鏍囪璦鍒版渶緇堢粨鏋滅殑緲昏瘧錛屼竴涓洿澶嶆潅鐨勪粠鏈鍒濈殑鍘熷璇█鍒頒腑闂寸洰鏍囪璦鐨勮漿鎹紱緲昏瘧闃舵鏄井涓嶈凍閬撶殑錛屽洜姝ゆ垜浠妸綺懼姏闆嗕腑浜庢洿鏈夋剰鎬濈殑杞崲闃舵錛涜嚦灝戯紝鐜板湪鐨勯棶棰樼畝鍖栦負浜嗗浣曞皢妯″瀷浠庝竴縐嶈璦杞崲鍒板彟涓縐嶈璦錛涗絾鏄紝鏈夊彲鑳芥簮璇█涓庣洰鏍囪璦鏄畬鍏ㄤ笉鍚岀殑錛屽鑷磋漿鎹㈤潪甯稿鏉傦紝姣斿鏄犲皠涓涓簮鑺傜偣鍒拌澶氭暎甯冨湪鐩爣妯″瀷涓殑鐩爣鑺傜偣錛涙垜浠兂璁╁畾涔夎漿鎹㈠敖鍙兘鐨勭畝鍗曞鏄擄紝鍥犳鎴戜滑闇瑕佷竴縐嶆ā鍨嬭漿鎹SL鏉ュ府鍔╂垜浠紱鍦∕PS涓紝榪欑 DSL琚О涓篢ransformation Language
浠g爜鐢熸垚鏈変笁縐嶄富瑕佺殑鏂規(guī)硶錛屾垜浠皢緇撳悎浣跨敤瀹冧滑鏉ュ畾涔夋ā鍨嬭漿鎹紱絎竴縐嶆槸閬嶅巻鏂瑰紡錛屼綘鏋氫婦婧愭ā鍨嬩腑鎵鏈夎妭鐐癸紝媯瑙嗘瘡涓涓紝騫跺熀浜庢瑙嗗埌鐨勪俊鎭敓鎴愮洰鏍囨ā鍨嬩腑鐨勪竴浜涚洰鏍囪妭鐐癸紱絎簩縐嶆柟寮忔槸浣跨敤妯℃澘鍜屽畯鏉ュ畾涔夊浣曠敓鎴愮洰鏍囪璦錛涚涓夌鏂瑰紡鏄嬌鐢ㄦā寮忓尮閰嶆潵鏌ユ壘鍦ㄦ簮妯″瀷涓殑鍝簺鑺傜偣涓婂簲鐢ㄨ漿鎹?/p>
鎴戜滑閫氳繃瀹氫箟DSLs鎶婅繖浜涙柟寮忕粨鍚堣搗鏉ヤ互鏀寔浠諱綍涓縐嶆柟娉曪紱榪欎簺DSLs灝嗕竴璧峰伐浣滄潵甯姪浣犲畾涔変粠涓縐嶈璦鍒板彟涓縐嶈璦鐨勮漿鎹紱渚嬪錛岄亶鍘嗘柟寮忔縺鍙戜簡 Model Query Language鐨勭伒鎰燂紝瀹冧嬌鏋氫婦鑺傜偣鍜屼粠姒傚康妯″瀷涓敹闆嗕俊鎭彉寰楃畝鍗曞鏄擄紱浣犲彲浠ユ妸瀹冩兂璞℃垚鏌愮閽堝姒傚康妯″瀷鐨凷QL錛涘仛涓轟竴縐嶉澶栫殑濂栬祻錛屾嫢鏈変竴縐嶅己澶х殑鏌ヨ璇█涓嶅彧鏄浠g爜鐢熸垚鏈夌敤錛堜緥濡傦紝鑳藉浣跨紪杈戝櫒鏇磋仾鏄庯級
Templates
妯℃澘鏂規(guī)硶宸ヤ綔鏂瑰紡綾諱技Velocity鎴栬匵SLT錛涙ā鏉跨湅璧鋒潵寰堝儚鐩爣璇█錛屼絾鏄厑璁鎬綘鍦ㄦā鏉跨殑浠諱綍閮ㄥ垎涓坊鍔犲畯錛涘畯鏈川涓婃槸褰撹繍琛岃漿鎹㈢殑鏃跺欒鎵ц鐨勪唬鐮佹錛涘畯鍏佽浣犳瑙嗘簮妯″瀷錛堜嬌鐢∕odel Query Language錛夛紝騫朵嬌鐢ㄥ緱鍒扮殑淇℃伅瀵規(guī)ā鏉胯繘琛屸滃~絀衡濓紝寰楀埌鏈緇堢殑鐩爣浠g爜
鍦ㄥ浘5涓紝浣犲彲浠ョ湅鍒頒負姒傚康鈥淧roperty鈥濈敓鎴怞ava浠g爜鐨勬ā鏉跨殑瀹氫箟錛屾ā鏉夸負灞炴ф坊鍔犱簡field declarations, getters, setters絳夛紱榪欎釜妯℃澘鏄皢浠g爜浠嶴tructure Language杞崲涓篔ava鐨勭敓鎴愬櫒鐨勪竴閮ㄥ垎
鏃㈢劧妯℃澘鐪嬭搗鏉ュ儚鐩爣璇█錛屼綘鍙互鎯寵薄妯℃澘鏄敤鏌愮鍩轟簬鐩爣璇█鐨勭壒孌婄殑璇█緙栧啓鐨勶紱榪欎篃鏄畠浜嬪疄涓婄殑宸ヤ綔鏂瑰紡錛涙垜浠疄闄呬笂浣跨敤涓涓敓鎴愬櫒鏉ヤ負浣犵敓鎴愭ā鏉胯璦錛岃屼笉鏄墜宸ヤ負姣忎竴縐嶅彲鑳界殑鐩爣璇█鍒涘緩妯℃澘璇█錛涘畠鍩烘湰涓婃槸澶嶅埗鐩爣璇█錛屽茍娣誨姞鎵鏈夋ā鏉跨壒瀹氱殑鐗規(guī)э紝璇稿瀹忕瓑錛涚敋鑷蟲ā鏉跨紪杈戝櫒涔熸槸浠庣洰鏍囪璦緙栬緫鍣ㄤ駭鐢熺殑錛屽洜姝や綘鍚屾牱涓嶉渶瑕佸鐞嗕唬鐮?/p>
褰撲綘浣跨敤涓縐嶆ā鏉胯璦鐨勬椂鍊欙紝浣犲彲浠ヨ涓哄畠鏄敤鐩爣璇█緙栧啓鐨勶紝鍙槸鏌愪簺閮ㄥ垎鐨勪唬鐮佹槸鍙傛暟鍖栫殑錛屾垨鑰呮槸鐢卞畯鏉ヨ綆楃殑錛涜繖縐嶆妧鏈瀬澶х殑甯姪綆鍖栦簡浠g爜鐢熸垚錛涙ā鏉胯繕鍙互鐢ㄥ湪鍏跺畠浠誨姟涓婏紝濡傞噸鏋勩佷唬鐮佷紭鍖栥佽繕鏈夋洿澶?..
Patterns
妯″瀷鐨勬ā寮忓尮閰嶆柟娉曠粰鎴戜滑涓縐嶄綔涓篗odel Query Language鐨勪唬鏇跨殑鏌ユ壘妯″瀷鐨勫己澶ф柟娉曪紱浣犲彲浠ユ妸妯″紡鎯寵薄鎴愭蹇墊ā鍨嬬殑姝e垯琛ㄨ揪寮忥紱涓庢ā鏉挎柟娉曠被浼鹼紝鎴戜滑鍩轟簬婧愯璦浜х敓妯″紡璇█錛涙ā寮忚璦鐪嬭搗鏉ュ儚婧愯璦錛屽彧鏄坊鍔犱簡涓浜涚壒鎬э紝鏉ュ府鍔╀綘瀹氫箟澶勭悊澶嶆潅婧愭ā鍨嬪尮閰嶇殑鐏墊椿鐨勬爣鍑嗭紱浣犲彲浠ユ妸榪欑鏂規(guī)硶鎯寵薄鎴愪竴縐嶅己澶х殑鈥滄煡鎵炬浛鎹⑩濈殑鎶鏈紱鍐嶄竴嬈★紝妯″紡璇█涓嶅彧鏄浠g爜鐢熸垚鏈夌敤錛屼緥濡傦紝瀹冧滑鍦ㄤ負婧愯璦緙栬緫鍣ㄧ紪鍐欒嚜鍔ㄥ寲鐨勪唬鐮佹鏌ュ伐鍏鋒柟闈㈤潪甯告湁鐢?/p>
璁頒綇Model Query Language, template languages, 鍜宲attern languages閮界敱寮哄ぇ鐨勭紪杈戝櫒鏀寔鍏惰嚜鍔ㄥ畬鎴愩侀噸鏋勩佸紩鐢ㄦ鏌ャ侀敊璇嫎嫻嬨佺瓑絳夛紱鍗充嬌澶嶆潅鐨勬煡璇€佸畯銆佹ā寮忥紝閮藉彲浠ュ緢瀹規(guī)槗鐨勭紪鍐欙紱浠g爜鐢熸垚浠庢潵娌℃湁榪欎箞寮哄ぇ榪?/p>
鍓嶉潰鏈夊叧浠g爜鐢熸垚鐨勭珷鑺傚甫鏉ヤ簡涓浜涘叧浜庤繖浜涜璦濡備綍涓璧峰伐浣滅殑鏈夋剰鎬濈殑闂錛涗簨瀹炰笂鏈夊嚑縐嶆柟娉曡兘璁╄璦涓璧峰伐浣滐紱鍦∕PS涓紝鎵鏈夌殑姒傚康妯″瀷閮戒簰鐩哥煡鏅擄紱鏃㈢劧璇█涔熸槸姒傚康妯″瀷錛岄偅涔堜究鎰忓懗鐫鎵鏈夌殑璇█閮藉郊姝ょ煡鏅擄紝鍙互娼滃湪鐨勮榪炴帴鍦ㄤ竴璧?/p>
璇█褰兼涔嬮棿鍙互鏈変笉鍚岀殑鍏崇郴錛涗綘鑳藉閫氳繃鎵╁睍鐜板瓨鐨勮璦鏉ュ垱寤烘柊璇█錛岀戶鎵挎墍鏈夌殑姒傚康錛屼慨鏀瑰叾涓殑涓浜涳紝騫跺姞鍏ヤ綘鑷繁鐨勬蹇碉紱涓縐嶈璦鍙互寮曠敤鍏跺畠璇█涓殑姒傚康錛涗綘鐢氳嚦鑳藉皢涓縐嶈璦鎻掑叆鍒板彟涓縐嶈璦涓幓錛涙垜灝嗗湪浠ュ悗鐨勬枃绔犱腑璁ㄨ榪涗竴姝ョ殑緇嗚妭
鎴戜滑鏀寔Language Oriented Programming鐨勭郴緇熼渶瑕佹瘮鍏冪紪紼嬭兘鍔涙洿澶氱殑鍔熻兘鎵嶈兘鏇存湁鐢紱瀹冨簲璇ユ彁渚涚▼搴忓憳渚濊禆浜庡綋鍓嶇殑緙栫▼璇█鎻愪緵鐨勬墍鏈変簨鐗╋細闆嗗悎錛岀敤鎴風晫闈紝緗戠粶錛屾暟鎹簱榪炴帴錛岀瓑絳夛紱紼嬪簭鍛樹笉姝㈡槸鍗曞崟鍩轟簬璇█鏈韓鏉ラ夋嫨璇█錛涗緥濡傦紝Java鐨勫ぇ閮ㄥ垎鍔熻兘涓嶆槸璇█鎻愪緵鐨勶紝鑰屾槸鏈夋垚鍗冧笂涓囩殑framework鍜孉PI渚?Java紼嬪簭鍛橀夋嫨錛涗粬浠拱鐨勪笉鏄疛ava璇█錛岃屾槸鏁翠釜Java騫沖彴錛汳PS涔熷皢鏈変竴涓畠鑷繁鐨勬敮鎸佸鉤鍙?/p>
鍦ㄦ垜榪涘叆緇嗚妭鍓嶏紝鎴戜滑鍏堢畝瑕佽皥涓涓媐rameworks錛涗粈涔堟槸framework錛熷湪涓繪祦鐨勭紪紼嬩腑錛屽畠閫氬父鎰忓懗鐫涓鍫嗙被鍜屾柟娉曟墦鍖呮垚鐨勪竴涓被搴擄紱璁╂垜浠洿榪戜竴鐐圭殑瑙傚療榪欎竴鐐癸紝鐪嬬湅鍦↙OP鐨勯暅鐗囦笅鎴戜滑浼氱湅鍒頒粈涔?/p>
鎴戜滑涓轟粈涔堟兂瑕佹妸綾誨拰鏂規(guī)硶鎵撳寘鎴愬簱鍛紵紼嬪簭鍛樹細鑳岃浠栦滑鐨勬暀鎺堟浘緇忓憡璇変粬浠殑錛氣滃鐢ㄢ濓紱浣嗚繖鍙槸鍦ㄥ師鏉ョ殑浣嶇疆涓婄暀涓嬩簡鍙︿竴涓棶棰橈細鎴戜滑涓轟粈涔堣澶嶇敤綾誨簱錛熺瓟妗堟槸綾誨簱鍦ㄨВ鍐崇壒瀹氱被鍨嬬殑闂鏂歸潰寰堟湁鐢紝濡傚埗浣滅敤鎴風晫闈紝璁塊棶鏁版嵁搴撶瓑絳夛紱浣犲彲浠ヨ綾誨簱瀵瑰簲鐫鏌愪釜棰嗗煙錛涗綘鐬э紝鎴戜滑鐪嬪埌浜嗚仈緋伙紝Class libraries are wannabe DSLs!榪欎釜鎮(zhèn)蹭激鐨勪簨瀹炵湡浠ゆ垜娌撫
浠婂ぉ鐨凞omain-specific languages浠ョ被搴撶殑褰㈠紡瀛樺湪錛岄櫎浜嗗畠浠笉鏄璦錛屾病鏈夎璦鐨勪紭鍔匡紝騫舵嫢鏈夌被鍜屾柟娉曟墍鏈夌殑灞闄愶紱鐗瑰埆鐨勶紝綾誨拰鏂規(guī)硶鐩存帴緇戝畾鍒頒簡鐗瑰畾鐨勮繍琛屾椂琛屼負錛岃岀壒瀹氱殑榪愯鏃惰涓烘槸涓嶈兘淇敼鍜屾墿灞曠殑錛屽洜涓鴻涓烘槸鎻愪緵鈥滅被鈥濆拰鈥滄柟娉曗濈殑姒傚康瀹氫箟鐨勶紱鍥犱負瀹冧滑涓嶆槸璇█錛岀被搴撳緢灝戣鐜錛堜緥濡傜紪璇戝櫒鍜岀紪杈戝櫒錛夎仾鏄庣殑鏀寔
鎴戜滑搴旇蹇犱簬wannabe DSLs錛岃繕鏄簲璇ユ嫢鏈夊綋闇瑕丏SLs鐨勬椂鍊欎嬌鐢ㄧ湡姝SLs鐨勮嚜鐢憋紵褰撶劧鏄嚜鐢憋紱姣忎釜綾誨簱閮芥槸涓烘垜浠殑騫沖彴鍒涘緩涓縐嶅畬鍏ㄧ殑DSL鐨勫欓夛紱渚嬪錛孞DK鐨勬墍鏈夌被搴撻兘搴旇鏄疢PS騫沖彴涓婄殑DSLs錛涘叾涓竴浜汥SL鍦ㄧ幇鍦ㄥ垰寮濮嬬殑鏃跺欎笉鏄偅涔堢揣鎬ラ渶瑕侊紝浣嗗叾瀹冧竴浜涗粠涓寮濮嬪氨瀵瑰鉤鍙扮殑鍔熻兘鍜屽彲澶嶇敤鎬ф湁寮虹儓鐨勫獎鍝嶏紱鎴戝皢浠嬬粛闅廙PS鎻愪緵鐨勪笁縐嶆渶閲嶈鐨勫鉤鍙拌璦錛歍he Base Language, the Collection Language, and the User Interface Language
Base Language
鎴戜滑棣栧厛闇瑕佺殑璇█鏄搴旀渶綆鍗曠紪紼嬮鍩熺殑錛屼竴縐峠eneral-purpose鐨勫懡浠ゅ紡緙栫▼錛涜繖縐嶇畝鍗曠殑璇█搴旇鏀寔榪戜箮閫氱敤鐨勮璦鐗規(guī)ц濡傜畻鏈佹潯浠躲佸驚鐜佸嚱鏁般佸彉閲忕瓑絳夛紱鍦∕PS涓垜浠湁榪欐牱涓縐嶈璦錛屽畠琚О涓築ase Language
瀵硅繖縐嶈璦鐨勯渶姹傚簲璇ユ槸寰堟槑鏄劇殑錛屼緥濡傦紝濡傛灉鎴戜滑鎯蟲妸涓や釜鏁板瓧鍔犲湪涓璧鳳紝鎴戜滑搴旇鑳藉綆鍗曠殑璇翠竴鍙モ渁 + b鈥濆氨鍙互錛涙垜浠笉闇瑕佸埌澶勫幓浣跨敤瀹冿紝浣嗗嚑涔庢墍鏈夌殑紼嬪簭閮戒細鏈変竴浜涚粍鎴愰儴鍒嗙敤鍒板畠錛屽湪閭i噷錛屽畠鏄畬鎴愬伐浣滄渶鍚堥傜殑宸ュ叿
Base Language涔嬫墍浠ュ姝ゅ懡鍚嶏紝鏄洜涓哄畠鏄緢澶氶渶瑕佸熀鏈紪紼嬫敮鎸佸鍙橀噺銆佽鍙ャ佸驚鐜瓑鐨勮璦寰堝ソ鐨勫熀紜錛涘畠鑳藉浠ヤ笁縐嶆柟寮忎嬌鐢細浣犲彲浠ユ墿灞曞畠浠ュ垱寤哄嚭浣犺嚜宸辯殑鍩轟簬瀹冪殑璇█錛屼綘鍙互鍦ㄤ綘鐨勭▼搴忎腑寮曠敤瀹冪殑姒傚康錛屼綘榪樺彲浠ヤ互Base Language鐢熸垚浣犵殑浠g爜錛涘皢浼氭湁鍑犵鍙敤鐨勭敓鎴愬櫒鏉ュ皢Base Language杞崲鎴愬叾瀹冭璦濡侸ava錛孋++絳夛紱褰撶劧錛屼笉鏄瘡縐嶈璦閮介渶瑕佷嬌鐢˙ase Language錛屼絾鏄湪寰堝鎯呭喌涓嬶紝瀹冩槸涓涓緢濂界殑璧風偣
Collection Language
涓嬩竴縐嶆垜浠渶瑕佺殑鏈閲嶈鐨勮璦鏄拰闆嗗悎涓璧峰伐浣滅殑璇█錛涘闆嗗悎鏀寔鐨勯渶姹傛槸鏅亶瀛樺湪鐨勶紱姣忕涓昏鐨勪富嫻佽璦閮芥彁渚涗簡瀵歸泦鍚堟煇縐嶇被鍨嬬殑鏀寔錛屼緥濡傦紝鍦↗ava 涓綘鏈塲ava.util錛屽湪C++涓綘鏈塖TL錛涙瘡涓漢閮介渶瑕侀泦鍚堬紱濡傛灉姣忕DSL閮芥彁渚涜嚜宸辯殑瀵歸泦鍚堢殑鏀寔錛岄偅涔堝皢浼氭湁a Babylon of涓嶅悓鐨勯泦鍚堣璦錛屽畠浠簰涓嶅吋瀹癸紱榪欏氨鏄負浠涔圡PS蹇呴』鎻愪緵涓縐嶆瘡涓漢閮戒嬌鐢ㄧ殑鍗曚竴鐨凜ollection Language鐨勫師鍥?/p>
鍦ㄥ緢澶氫富嫻佽璦涓紝闆嗗悎騫墮潪璇█鐗規(guī)ц屾槸綾誨簱錛屼竴涓緥瀛愭槸Java鐨刯ava.util鍖咃紱榪欑鏀寔鎶鏈笂鏉ヨ鏄瓨鍦ㄧ殑錛屼絾瀹冩槸涓嶆柟渚跨殑錛屾潅涔辯殑錛屽茍涓旀槗浜庡嚭閿欑殑
Yuck錛佷粖澶╁ぇ閮ㄥ垎鐨凧ava浠g爜琚竴琛屾帴涓琛屽浣欑殑銆侀噸澶嶇殑澶勭悊闆嗗悎鐨勪唬鐮佸紕鐨勬潅涔辨棤绔狅紱鍥?鏄劇ず浜嗕竴涓緥瀛愶紝Collection Language鏄浣昩eats the tar out of a 綾誨簱鐨勶紱渚嬪瓙鏄竴涓綆椾竴緇勭粰瀹氱殑鐐圭殑convex hull鐨勭畻娉曪紱鏇村鍏充簬Collection Language鐨勭粏鑺備細鍦ㄤ互鍚庣殑鏂囩珷涓彁鍙?/p>
User Interface Language
User Interface Language鏄垜浠殑騫沖彴涓笅涓縐嶆渶閲嶈鐨凞SL錛涙湁瓚g殑鏄紝鎴戝墠闈㈡彁鍒扮殑Editor Language鑳藉鍙︿漢淇℃湇鐨勭敤鏉ユ彁渚涚敤鎴風晫闈紝浣嗘槸涓縐嶄笓涓哄浘褰㈢敤鎴風晫闈㈣璁$殑璇█灝嗕細鏇寸伒媧伙紱榪欑璇█甯︽潵鐨勭泭澶勬槸宸ㄥぇ鐨勶紱Java Swing浠g爜灝辨槸涓涓兂鎴愪負DSL鐨勭被搴撶殑鏋佸ソ鐨勪緥瀛愶細鍔熻兘鏈変簡錛屼絾寰堝鏄撹璇敤錛屽茍涓擲wing鐨勪唬鐮佹槸褰誨簳鏉備貢鐨勶紱寰堝濡備粖鐨勫紑鍙戠幆澧冮兘鍖呭惈GUI builder鏉ョ畝鍖栫敤鎴風晫闈㈢殑鍒涘緩錛沀ser Interface Language灝嗘妸榪欓」浠誨姟甯﹀埌涓涓洿楂樼殑灞傛錛涙垜灝嗗湪浠ュ悗鐨勬枃绔犱腑璁ㄨ鏇村緇嗚妭
鎴戝凡緇忚兘澶熷惉鍒頒竴浜涘LOP鎬鐤戠殑鍙嶅簲錛氣滃惉璧鋒潵涓嶉敊錛屼絾鏄垜浠殑欏圭洰宸茬粡姝ュ叆姝h建錛岀幇鍦ㄥ垏鎹㈠埌LOP鏄笉鍙鐨勨濓紝鎴栬呪滃惉璧鋒潵涓嶉敊錛屼絾鐢ㄤ竴涓儚LOP榪欐牱鐨勬湭緇忔楠岀殑鏂規(guī)硶鏉ュ惎鍔ㄤ竴涓幇瀹炵敓媧諱腑鐨勯」鐩闄╁お澶т簡鈥濓紝鎴栬呪滃惉璧鋒潵涓嶉敊錛屼絾鏄畠浠涔堟椂鍊欐墠鑳戒負瀹冪殑榛勯噾鏃舵湡鍋氬ソ鍑嗗鍛紵鍒繕浜哋OP鐢ㄤ簡20騫存墠鎴愪負涓繪祦鈥?/p>
濂芥秷鎭槸鎴戜滑涓嶉渶瑕佷竴澶存墡榪涙湭鐭ラ噷錛屼綘鍙互鍏堢敤鑴氳毒澶磋瘯涓涓嬫按錛涗綘鍙互鍦ㄤ綘鐨勯」鐩腑鍙槸搴旂敤LOP鐨勪竴灝忓潡鏉ョ湅涓涓嬪畠鏈夋病鏈夋彁渚涗竴浜涘疄闄呯殑濂藉錛岀劧鍚庡鏋滀綘鍠滄浣犲彲浠ョ敤澶氫竴鐐癸紱鍦ㄤ笉榪滅殑鏈潵錛屼綘鍙互鍦∕PS閲岃瘯楠屼袱涓彲鑳界殑LOP搴旂敤錛?
Using MPS on Java Applications
宸茬粡鏈変竴涓狪ntelliJ IDEA鐨勫師鍨嬫彃浠跺厑璁鎬綘鍦ㄤ綘鐨勯」鐩腑鍖呭惈MPS鐨勬蹇墊ā鍨嬶紱褰撲綘緙栬緫妯″瀷鏃訛紝妯″瀷浼氳嚜鍔ㄥ湪鍚庡彴琚漿鎹㈡垚Java婧愪唬鐮侊紱鍥犳錛屼綘鍙互浣跨敤MPS鏉ョ紪鍐?Java搴旂敤鐨勯儴鍒嗘ā鍧楋紝鍠滄鐢ㄥ鐐瑰氨鐢ㄥ鐐癸紝鍠滄鐢ㄥ皯鐐瑰氨鐢ㄥ皯鐐癸紱榪欐剰鍛崇潃浣犲緱鍒頒簡MPS鍏ㄩ儴鐨勫姏閲忥紝姣斿鍒涘緩鍜屼嬌鐢ㄧ壒瀹欴SLs鐨勮兘鍔涳紝鍋氫換浣曚綘鎯寵鐨勮璦鎵╁睍錛屽悓鏃朵嬌鐢ㄥ畾鍒剁殑甯︽湁鑷姩瀹屾垚銆侀敊璇姞浜侀噸鏋勫姛鑳界殑緙栬緫鍣紝絳夌瓑錛涙彃浠跺皢鍜孖DEA绱у瘑闆嗘垚錛屽厑璁鎬綘鍦ㄤ綘鐨凪PS妯″瀷涓祵鍏ava浠g爜錛屽鑸埌宓屽叆鎴栫敓鎴愮殑Java浠g爜錛岀敋鑷寵繘琛屾蹇靛眰嬈$殑璋冭瘯錛屽氨鍍廔DEA涓凡緇忓彲鐢ㄧ殑JSP璋冭瘯鏀寔涓鏍鳳紱鏇村闆嗘垚鐗規(guī)ф鍦ㄨ鍒掍腑錛涜繖灝嗘槸浣跨敤IDEA鐨?Java寮鍙戣呭彲鐢ㄧ殑涓涓噸瑕佺殑鏂板伐鍏?/p>
Configuring and Scripting Your Applications
鏈変竴涓垜瑙佽繃寰堝嬈$殑妯″紡錛屼竴涓簲鐢ㄧ▼搴忓惎鍔ㄦ椂闇瑕佹煇縐嶅艦寮忕殑閰嶇疆錛屽彲鑳芥槸涓涓畝鍗曠殑閰嶇疆鏂囦歡錛屾垨鑰呮洿瀹屾暣鐨勯儴緗叉弿榪扮鏂囦歡錛涙渶鍚庯紝閰嶇疆鍙樼殑鏇村鏉傦紝搴旂敤紼嬪簭鏈鍚庨渶瑕佷竴縐嶈剼鏈璦錛涘浜庣畝鍗曠殑閰嶇疆鏂囦歡錛孹ML寰堟祦琛岋紱瀵逛簬鑴氭湰璇█錛屼綘鍙互鍒涘緩鑷繁鐨勶紝鎴栬呭熺敤涓縐峠eneral-purpose鐨勮剼鏈璦錛屽儚VBScript錛孭ython/Jyphon錛孴cl錛孞avascript錛屾垨鑰匧isp錛涜繖浜涙柟妗堜腑鐨勬瘡涓縐嶉兘鑷沖皯鏈変竴浜涗富嫻佺紪紼嬫柟娉曠殑鏍囧噯緙洪櫡錛氬緢闀跨殑瀹炵幇鏃墮棿錛岄櫋宄殑瀛︿範鏇茬嚎錛岄毦浠ユ墿灞曪紝鍖箯鐨勭幆澧冩敮鎸侊紝絳夌瓑
浣滀負鏇夸唬鐨勶紝浣犺兘澶熶嬌鐢∕PS鍒涘緩浣犺嚜宸辯殑閰嶇疆/鑴氭湰璇█錛涗綘鐨勫簲鐢ㄧ▼搴忕殑鐢ㄦ埛灝嗕細鎷ユ湁涓縐嶆槗浜庝嬌鐢ㄧ殑銆佹櫤鑳界殑緙栬緫鍣ㄦ潵緙栧啓浠栦滑鐨勮剼鏈紝鍖呮嫭璇硶鍔犱寒錛岄敊璇姞浜紝浠g爜瀹屾垚錛屽鑸瓑錛涘彧闇鑺辮垂寰堝皯鐨勬椂闂存潵鍒涘緩騫墮泦鎴愯繖縐嶈璦鍒頒綘鐨勫簲鐢ㄤ腑錛涗負浜嗕嬌鐢ㄨ繖縐嶅簲鐢紝浣犲彲浠ュ垎鍙慚PS鐨勮繍琛屾椂
LOP 鍜孧PS鑳屽悗鐨勬濇兂騫朵笉鏂伴矞錛屽疄闄呬笂宸茬粡鍑虹幇瓚呰繃20騫翠簡錛汱anguage Oriented Programming鏈韓榪欎釜璇嶄篃宸茬粡鎻愬嚭鑷沖皯10騫翠簡錛涙柊椴滅殑鏄繖浜涙濇兂涓鐩村湪杞歡寮鍙戠ぞ鍖洪粯榛樼殑娓楅忥紝鑰屽畠浠殑鏃朵唬鏈緇堝埌鏉ヤ簡錛涢氳繃榪欑瘒鏂囩珷錛屾垜甯屾湜鎻愪緵涓棰楃瀛愶紝浣胯繖浜涙濇兂鑳藉浜х敓鏂扮殑璁ㄨ銆佹剰瑙併佹壒璇勩佸疄楠屻佺爺絀躲佸拰鏈緇堢殑鐪熷疄鐢熸椿涓殑欏圭洰
騫朵笖錛屽洜姝わ紝鎴戦個璇蜂綘浠ヤ換浣曚綘鑳藉仛鍒扮殑鏂瑰紡鍙備笌鍒拌繖縐嶆柊鐨勮寖鍨嬩腑鏉ワ紱鍦ㄥ悗闈㈡坊鍔犺瘎璁猴紝鎴栬呭彂閫丒mail緇欐垜錛?a href="mailto:mps_article@jetbrains.com">mps_article@jetbrains.com錛涘湪http://www.jetbrains.com/mps鍙壘鍒版洿澶氾紝璇峰叧娉ㄦ洿鏂幫紱娉ㄦ剰嫻忚浠嶭OP鐨勮鐐瑰嚭鍙戠殑緗戠珯錛屾潅蹇楋紝鍗氬錛屼功綾嶇瓑錛屽茍鎬濊冧簨鎯呭埌搴曡兘澶熷涔堢畝鍗曪紱鑰冭檻涓涓嬩綘鑷繁鐨勯」鐩紝鐪嬬湅浣犳湁澶氶綣佺殑瀹為檯涓婂湪璁捐鍜屼嬌鐢ㄥ皬鐨勭壒瀹氱殑鐢ㄧ被鍜屾柟娉曚慨琛ョ殑璇█錛涗綘鏄庝箞璁や負鐨勫憿錛熸垜鎯崇煡閬?/p>
褰撴垜灝哃OP鐨勬蹇電敤鍦ㄥ紑鍙慚PS鑷韓鏃訛紝鎴戝凡緇忕湅鍒頒簡Language Oriented Programming鏄浣曞交搴曟敼榪涜蔣浠跺紑鍙戠殑絎竴鎵嬭祫鏂欙紱MPS鐩墠騫舵病鏈変負鐪熷疄涓栫晫鍑嗗濂斤紝浣嗗畠宸茬粡鎴愬姛鐨勮揪鍒頒簡鐩殑錛涗篃榪樹緷鐒舵病鏈夋枃妗o紝闄や簡榪欑瘒鏂囩珷錛涙垜灝嗗緢蹇殑鍙戝竷鏇村鐨勬枃绔狅紝娣卞叆鐨勬帰璁∕PS錛涜繕鏈夛紝鎴戣鍒掍笅鏈堣瘯楠岀潃浣縈PS鍙笅杞斤紝鍥犳浣犵殑鑰蟲湹瑕佷繚鎸佸紶寮錛涘凡緇忔湁鍏跺畠鐨勯」鐩嬌鐢ㄤ簡綾諱技鐨勬柟娉曪紝鐗瑰埆鏄潵鑷狪ntentional Software 鍜?Xactium
鍥犳錛屾帰闄╂剦蹇紝璁╂垜鐪嬬湅浣犺兘鍙戠幇浠涔?/p>
?
I would like to thank Rob Harwood for his help in editing this article. I would also like to thank the following people for their reviews, comments, and suggestions: Igor Alshannikov, Florian Hehlen, Jack Herrington, Guillaume
Laforge, Vaclav Pech, Thomas Singer, Dmitry Skavish,David Stennett, and Timur Zambalayev.
Sergey Dmitriev (http://www.sergeydmitriev.com) is the co-founder and CEO of JetBrains Inc.(http://www.jetbrains.com), makers of the IntelliJ IDEA Java IDE.
Articles:
[1] Donald E. Knuth. Literate programming. The Computer Journal, 27, 97-111, May 1984.
[2] M. Ward. Language Oriented Programming.Software - Concepts and Tools, 15, 147-161 1994,
http://www.dur.ac.uk/martin.ward/martin/papers/middle-out-t.pdf
Intentional Programming articles:
Charles Simonyi. The Death of Computer Languages, The Birth of Intentional Programming. 1995.
ftp://ftp.research.microsoft.com/pub/tr/tr-95-52.doc also
ftp://ftp.research.microsoft.com/pub/tr/tr-95-52.ps
John Brockman. Intentional Programming: A Talk With Charles Simonyi. Edge. 2000.
http://www.edge.org/digerati/simonyi/simonyi_p1.html
Microsoft Research. Intentional Programming.
http://www.cse.unsw.edu.au/~cs3141/ip.asf (video)
Charles Simonyi. Intentional Programming: Asymptotic Fun?http://www.hpcc.gov/iwg/sdp/vanderbilt/position_papers/simonyi.pdf
Books:
Krzysztof Czarnecki and Ulrich W. Eisenecker. Generative Programming: Methods, Tools and Applications.Addison-Wesley, 2000. ISBN: 0201309777.
Jack Herrington. Code Generation in Action. Manning, 2003. ISBN: 1930110979. http://www.codegeneration.net/cgia/
Xactium. Applied Metamodelling: A Foundation for Language Driven Development. 2004.
http://albini.xactium.com/content/index.php?option=com_remository&Itemid=28
Other Resources on the Web:
[3] Matt Quail. Totally Gridbag.
http://madbean.com/blog/2004/17/
Jack Herrington. Code Generation Network.
http://www.codegeneration.net/
[4] Intentional Software
http://www.intentsoft.com
[5] Xactium
http://www.xactium.com
Intentional Programming interviews
Sergey Dmitriev.
http://codegeneration.net/tiki-read_article.php?articleId=60
Charles Symonyi.
http://codegeneration.net/tiki-read_article.php?articleId=61
Krzystof Czarnecki.
http://codegeneration.net/tiki-read_article.php?articleId=64
Andy Evans.
http://codegeneration.net/tiki-read_article.php?articleId=68
See Also:
銆?a id="_254b74700f73c08_HomePageDays_DaysList__ctl0_DayItem_DayList__ctl0_TitleUrl" >Thinking in Current Paradigms, Platforms, Frameworks, and Libraries銆?
銆?a id="_254b74700f73c08_HomePageDays_DaysList__ctl1_DayItem_DayList__ctl0_TitleUrl" >Thinking in Current Programming Languages銆?/p>