導航:首頁 > 軟體知識 > 程序員如何學習源代碼

程序員如何學習源代碼

發布時間:2024-06-14 15:24:09

㈠ 新手怎麼學代碼編程

熟悉以下關鍵東西,可以邊學邊做,定期訓練,經常思考,長期積累:

1、語法。

2、基礎理論(數學、數據結構、演算法等)。

3、設計方法(編程原則、設計模式、框架設計等)。

4、庫(核心、基礎、UI、擴展、游戲引擎等)。

5、計算機相關(操作系統、網路、圖形學等)。

6、領域知識(游戲設計、網站設計等)。

7、開發工具(編輯器、IDE、自動部署等)。

8、項目管理(進度管理、分工協作、Bug管理、版本控制等)。

(1)程序員如何學習源代碼擴展閱讀:

編譯方式下,首先通過一個對應於所用程序設計語言的編譯程序對源程序進行處理,經過對源程序的詞法分析、語法分析、語意分析、代碼生成和代碼優化等階段將所處理的源程序轉換為用二進制代碼表示的目標程序,然後通過連接程序處理將程序中所用的函數調用、系統功能調用等嵌入到目標程序中,構成一個可以連續執行的二進制執行文件。調用這個執行文件就可以實現程序員在對應源程序文件中所指定的相應功能。

㈡ 初學者怎樣看懂代碼

初學者要看懂代碼首先從要需求分析了解,然後是系統分析,最後是塊的理解。看懂代碼其實不難,大抵不過是選擇,分支,循環。語法如果看不懂,那就需要補補基礎,先弄清楚這段代碼要做什麼,有說明最好,可以幫助理解,沒有說明就試著過一下代碼流程。

(2)程序員如何學習源代碼擴展閱讀:

最重要的是學會寫程序

C語言也好,python也好,得學會思考用程序實現,舉個例子,想制定計劃表,安排時間,那這個問題就可以寫個程序來實現;你想做筆記、管理自己的文件,這也是一個程序。

從簡單的、直接的幾行十幾行程序開始,比如計算器;到復雜的小工具,比如大數計算器,這個過程中你逐漸明白數組、指針、內存布局、函數,了解遞歸、棧、鏈表,然後學基本的數據結構,之後再寫程序,你需要考慮代碼的優雅、簡單、時間空間效率高,使用什麼樣的方式來實現最好,最後學會了復用,學會了調用系統API,學會了想什麼就能用代碼實現什麼或者知道它不能被實現,就學會了編程。



㈢ 紼嬪簭鍛樺叆闂:濡備綍鑷瀛︾紪紼媉鑷瀛︾▼搴忓憳鎬庝箞鍏ラ棬

棣栬佷箣棣栵細涓嶈佹ヤ簬閫夋嫨涓縐嶈璦鏂版墜浠鏈変竴涓甯歌佺殑閿欒灝辨槸鐘硅鮑浜庡垽鏂鍝縐嶇紪紼嬭璦鏄鍋氬ソ鐨勩佹渶璇ュ厛瀛︾殑

鎴戜滑鏈夊緢澶氱殑閫夋嫨錛屼絾浣犱笉鑳借撮偅縐嶈璦鈥滄渶濂解

鎴戜滑搴旇ョ悊瑙o細璇村埌搴曪紝浠涔堣璦騫朵笉閲嶈

閲嶈佺殑鏄鐞嗚В鏁版嵁緇撴瀯銆佹帶鍒墮昏緫鍜岃捐℃ā寮

浠諱綍涓縐嶈璦鈥旂敋鑷充竴縐嶇畝鍗曠殑鑴氭湰璇璦鈥旈兘浼氬叿鏈夋墍鏈夌紪紼嬭璦閮藉叡鏈夌殑鍚勭嶇壒寰侊紝涔熷氨鏄璇村悇縐嶈璦鏄璐閫氱殑

鎴戞e湪鏀昏繪垜鐨勮$畻鏈哄﹀︿綅錛屾垜緙栫▼浣跨敤Pascal錛屾眹緙栵紝鍜孋璇璦錛屼簨瀹炰笂鎴戜粠鏉ユ病鏈夋妸瀹冨綋鎴愯亴涓氫互奼傝幏寰楀洖鎶

鎴戜竴鐩村湪鑷瀛︾紪紼嬶紝宸ヤ綔涓婄敤涓嶅埌瀹冿紝鎴戜嬌鐢ㄧ幇鏈夌殑鐭ヨ瘑錛屽弬鑰冨悇縐嶆枃妗e拰涔︽湰錛屽︿範瀹冧滑鐨勭敤娉

鍥犳わ紝涓嶈佹ヤ簬閫夋嫨浣曠嶇紪紼嬭璦

鎵懼嚭浣犳兂瑕佸紑鍙戠殑涓滆タ錛屼嬌鐢ㄤ竴縐嶈兘澶熷畬鎴愯繖欏逛換鍔$殑璇璦錛岃繖灝卞彲浠ヤ簡

鏍規嵁鍚勭嶅紑鍙戝鉤鍙扮殑涓嶅悓錛屾湁寰堝氫笉鍚岀殑杞浠跺紑鍙戝艦寮忓彲渚涗綘閫夋嫨錛氫粠緗戠珯搴旂敤鍒版岄潰杞浠跺埌鏅鴻兘鎵嬫満杞浠跺埌鍛戒護琛岃剼鏈宸ュ叿

榪欑瘒鏂囩珷閲岋紝鎴戝皢閲嶇偣浠嬬粛涓浜涘緢鍙楁㈣繋鐨勫叆闂ㄦ暀紼嬪拰璧勬簮錛屽畠浠鑳藉府鍔╀綘瀛︿細濡備綍鍦ㄥ悇縐嶄富嫻佺殑騫沖彴涓婄紪紼嬪紑鍙

鎴戝厛鍋囪句綘鏄涓涓鎮熸у緢寮虹殑璇昏咃紝浣嗗逛簬鏂版墜錛屽綋鎴戣皥璁虹▼搴忎唬鐮佹椂榪樻槸瑕佹寜鐓у叆闂ㄧ駭鐨勬按騫

鍥犱負鍗充嬌鏄浣犺嚜宸辯湅涓綃囩紪紼嬪叆闂ㄦ墜鍐岋紝濡傛灉鍙戠幇閮借兘鐞嗚В鏃訛紝蹇冩儏鑷鐒朵細寰堥珮鍏達紝榪欐牱鍒╀簬浣犺繘涓姝ュ︿範

妗岄潰鑴氭湰鎯寵佸姩鎵嬪湪Windows閲屾垨鑻規灉緋葷粺閲岀紪紼嬶紝鏈綆鍗曠殑鏂規硶鏄浠庝竴縐嶈剼鏈璇璦鎴栧畯璇璦寮濮嬶紝渚嬪侫utoHotkey(Windows)鎴朅utomator(鑻規灉緋葷粺)

濡備粖涓浜涚‖浠剁▼搴忓憳鍐茬潃浠栦滑鐨勫睆騫曞ぇ鍠婂ぇ鍙錛岃碅HK鍜孉ppleScript騫朵笉鏄鈥滅湡姝b濈殑緙栫▼璇璦

涔熻鎬粬浠璇寸殑鏄瀵圭殑鈥旀妧鏈涓婏紝榪欎簺縐嶇被鐨勮璦鍙鑳藉仛涓浜涗笂灞傜殑緙栫▼

浣嗘槸瀵逛簬閭d簺鍙鏄鎯蟲潵鑴辯洸銆佹兂鍦ㄤ粬浠鐨勭數鑴戦噷瀹炵幇涓浜涜兘鑷鍔ㄨ繍琛岀殑紼嬪簭鐨勬柊鎵嬫潵璇達紝榪欎簺璇璦浼氭槸涓涓緇濆欑殑鍏ラ棬鍏ュ彛鈥旇屼笖浣犱細鍚冩儕浜庡畠浠涓板瘜鐨勫姛鑳

渚嬪傦紝澶у墮兘鍠滅埍鐨凾exter灝辨槸Adam浣跨敤AutoHotkey寮鍙戠殑鑳界嫭絝嬭繍琛岀殑Windows搴旂敤紼嬪簭錛屾墍浠ヨ磋繖縐嶈剼鏈璇璦榪滀笉鏄鍙鑳藉紑鍙戝皬瑙勬ā鑴氭湰杞浠

濡傛灉浣犳兂浠嶢utoHotkey鍏ユ墜錛屽彲浠ュ弬鑰傾dam鐨勬寚瀵礆細錛堢劧鍚庯紝浣犲彲浠ヤ笅杞絋exter婧愪唬鐮佺湅鐪嬭繖涓鍔熻兘榻愬叏鐨勪嬌鐢ˋHK寮鍙戠殑Windows搴旂敤紼嬪簭鐨勫唴閮ㄧ粨鏋)

Web寮鍙慔TML鍜孋SS錛氬紑鍙戠綉絝欙紝浣犵涓浠惰佺煡閬撶殑浜嬫儏灝辨槸HTML(緗戦〉灝辨槸鐢卞畠緇勬垚鐨)鍜孋SS(涓縐嶈╁栬傛洿濂界湅鐨勬牱寮忔爣璁)

HTML鍜孋SS騫朵笉鏄緙栫▼璇璦鈥斿畠浠鍙鏄欏甸潰鐨勭粨鏋勫拰鏍峰紡淇℃伅

鐒惰岋紝鍦ㄥ紑濮嬪紑鍙憌eb搴旂敤紼嬪簭涔嬪墠浣犲繀欏昏佸︿細濡備綍鎵嬪伐鐨勭紪鍐欑畝鍗曠殑HTML鍜孋SS錛寃eb欏甸潰鏄浠諱綍webapp鐨勫墠絝鏄劇ず閮ㄥ垎

榪欎釜HTML鎸囧兼槸浣犲叆鎵嬬殑濂藉湴鏂

JavaScript:褰撲綘鍙浠ラ氳繃HTML鍜孋SS鏋勫緩涓涓闈欐侀〉闈㈠悗錛屼簨鎯呭氨寮濮嬪彉寰楁湁瓚d簡鈥斿洜涓哄埌浜嗚ュJavaScript鐨勬椂鍊欎簡

JavaScript鏄涓縐峸eb嫻忚堝櫒涓婄殑緙栫▼璇璦錛屽畠鐨勯瓟鍔涘氨鏄鑳藉湪欏甸潰閲屽埗閫犱竴浜涘姩鎬佹晥鏋

JavaScript鍙浠ュ仛,鑴氭湰,鍜孉jax,鎵浠ュ畠鏄痺eb涓婂悇縐嶅ソ涓滆タ鐨勫叧浜庡洜緔

瀛︿範JavaScript浠庤繖閲屽紑

鏈嶅姟鍣ㄧ鑴氭湰錛氫竴鏃︿綘瀛︿細浜嗙綉欏甸噷鐨勭煡璇嗭紝浣犲氨瑕佸紑濮嬪瑰畠娣誨姞涓浜涘姩鎬佹湇鍔″櫒鎿嶄綔鈥斾負浜嗗疄鐜拌繖浜涳紝浣犻渶瑕佹妸鐩鍏夎漿縐誨埌鏈嶅姟鍣ㄧ鑴氭湰璇璦錛屼緥濡侾HP,Python,Perl,鎴朢uby

涓句釜渚嬪瓙錛屽傛灉鎯寵佸埗浣滀竴涓緗戦〉褰㈠紡鐨勮仈緋繪柟寮忚〃鍗曪紝鏍規嵁鐢ㄦ埛鐨勮緭鍏ュ彂閫侀偖浠訛紝浣犲氨闇瑕佷嬌鐢ㄦ湇鍔″櫒絝鑴氭湰鏉ュ疄鐜

鍍廝HP榪欐牱鐨勮剼鏈璇璦鍙浠ヨ╀綘璺焪eb鏈嶅姟鍣ㄤ笂鐨勬暟鎹搴撹繘琛屾矡閫氾紝鎵浠ュ傛灉浣犳兂鎼寤轟竴涓鐢ㄦ埛鍙浠ョ櫥褰曟敞鍐岀殑緗戠珯錛岃繖鏍風殑璇璦姝f槸浣犻渶瑕佺殑

Webmonkey鏄涓涓浼樼鐨剋eb寮鍙戣祫婧愮綉絝欙紝閲岄潰鏈夊ぇ閲忕殑鍚勭峸eb緙栫▼璇璦鐨勬寚瀵兼墜鍐

闃呰諱竴涓嬩粬浠鐨凱HP鍒濆﹁呮寚鍗

褰撲綘鎰熻夊樊涓嶅氫簡鐨勬椂鍊欙紝鐪嬬湅WebMonkey鈥檚PHPandMySQLtutorial瀛︿範濡備綍浣跨敤PHP璺熸暟鎹搴撲氦浜

緗戜笂鏈濂界殑瑕佹暟PHP璇璦瀹樻柟鐨勫湪綰挎枃妗e拰鍑芥暟鍙傝冧簡

姣忎釜鐭ヨ瘑鐐逛笂(渚嬪俿trlenfunction榪欎釜)閮藉湪鍚庨潰鍒楀嚭鏉ョ敤鎴風殑璇勮烘敞閲婏紝榪欎簺瀵逛簬鏂囨。鐨勬湰韜鏄闈炲父鏈変環鍊肩殑

錛堟垜寰堝枩嬈PHP錛屼絾榪樻湁寰堝氬叾浠栫嶆湇鍔″櫒絝鐨勮剼鏈璇璦浣犱滑閮藉彲浠ラ夋嫨

)Web妗嗘灦錛氳繃鍘繪暟騫撮噷錛寃eb寮鍙戜漢鍛樺湪寮鍙戝姩鎬佺綉絝欑殑榪囩▼涓涓嶅緱涓嶄竴閬嶅張涓閬嶇殑閽堝歸噸澶嶉亣鍒扮殑闂棰樺啓鍑洪噸澶嶇殑浠g爜

涓轟簡閬垮厤榪欑嶆瘡嬈″紑鍙戜竴浜涙柊緗戠珯閮戒細閲嶅嶅姵鍔ㄤ竴嬈$殑闂棰橈紝涓浜涚▼搴忓憳鍔ㄦ墜鎼寤轟簡涓浜涙嗘灦錛岃╂嗘灦鏇挎垜浠瀹屾垚閲嶅嶆х殑宸ヤ綔

闈炲父嫻佽岀殑RubyonRails妗嗘灦錛屼綔涓轟竴涓渚嬪瓙錛屽畠鍒╃敤Ruby緙栫▼璇璦錛屼負鎴戜滑鎻愪緵浜嗕竴涓涓撻棬闈㈠悜web鐨勬灦鏋勶紝鏅閫氱殑web搴旂敤紼嬪簭閮借兘浣跨敤瀹冩潵瀹屾垚

浜嬪疄涓婏紝Adam浣跨敤Rails寮鍙戜簡浠栫殑絎涓涓姝e紡鐨勶紙鑰屼笖鏄鍙逛負瑙傛㈢殑錛侊級web搴旂敤紼嬪簭錛孧ixTape

me

榪欏氨鏄浠栫殑濡備綍鍦ㄦ病鏈変換浣曠粡楠岀殑鎯呭喌涓嬫惌寤轟竴涓緗戠珯

榪樻湁涓浜涘叾浠栫殑web寮鍙戞嗘灦鍖呮嫭CakePHP(閽堝筆HP緙栫▼鑰),Django(閽堝筆ython緙栫▼涓),浠ュ強jQuery(閽堝笿avaScript)

WebAPIs:API(搴旂敤灞傚簭緙栫▼鎺ュ彛)鏄鎸囦笉鍚岀殑杞浠朵箣闂寸浉浜掍氦鎹㈢殑紼嬪簭閫斿緞

渚嬪傦紝濡傛灉浣犳兂鍦ㄤ綘鐨勭綉絝欎笂鏀句竴涓鍔ㄦ佺殑鍦板浘錛屼綘鍙浠ヤ嬌鐢℅oogleMap錛岃屼笉闇瑕佸紑鍙戣嚜宸辯殑鍦板浘

TheGoogleMapsAPI鍙浠ヨ交鏉劇殑璁╀綘閫氳繃JavaScript鍦ㄧ▼搴忎腑寮曞叆涓涓鍦板浘鍒頒綘鐨勯〉闈涓

鍑犱箮鎵鏈夌殑鐜頒唬鐨勪綘鎵鐭ラ亾鐨勫拰鍠滅埍鐨剋eb鏈嶅姟閮芥彁渚涗簡API錛岄氳繃榪欎簺API浣犲彲浠ヨ幏鍙栧埌浠栦滑鐨勬暟鎹鍜屽皬宸ュ叿錛屽湪浣犵殑搴旂敤紼嬪簭閲屽氨鍙浠ヤ嬌鐢ㄨ繖浜涗氦浜掕繃鏉ョ殑涓滆タ浜嗭紝渚嬪俆witter,Facebook,GoogleDocs,GoogleMaps,榪欎釜鍒楄〃榪滀笉姝㈣繖浜

閫氳繃API鎶婂叾浠杦eb搴旂敤闆嗘垚鍒頒綘鐨剋eb搴旂敤閲屾槸鐜板湪瀵寃eb寮鍙戠殑鍓嶆部鍦板甫

姣忎釜浼樼鐨勪富嫻佺殑web鏈嶅姟API閮介檮甯︽湁瀹屾暣鐨勬枃妗e拰涓浜涘揩閫熷叆鎵嬬殑鎸囧(渚嬪傦紝榪欎釜灝辨槸Twitter鐨)

鐤鐙傚惂

鍛戒護琛岃剼鏈濡傛灉浣犳兂寮鍙戜竴涓紼嬪簭錛岃╁畠璇誨彇鏂囧瓧鎴栨枃浠躲佽緭鍏ヨ緭鍑轟竴浜涙湁鐢ㄧ殑涓滆タ錛岄偅涔堬紝鍛戒護琛岃剼鏈璇璦灝嗘槸涓涓嶉敊鐨勯夋嫨

鐒惰屽畠騫朵笉鍍弚eb搴旂敤紼嬪簭鍜屾岄潰搴旂敤紼嬪簭閭f牱鏈夊惛寮曞姏鍜屽ソ鐪嬬殑澶栬傦紝浣嗘槸浣滀負蹇閫熷紑鍙戠殑鑴氭湰璇璦錛屼綘鍗翠笉鑳藉拷瑙嗗畠浠

寰堝氱殑鍦╨inux騫沖彴涓婅繍琛岀殑web鑴氭湰鍚屾牱鑳戒互鍛戒護琛屾ā寮忚繍琛岋紝渚嬪侾erl錛孭ython鍜孭HP錛屾墍浠ュ傛灉浣犲︿細浜嗕嬌鐢ㄥ畠浠錛屼綘灝嗚兘鍦ㄤ袱縐嶇幆澧冧腑浣跨敤瀹冧滑

鎴戠殑瀛︿範閬撹礬涓鐩存病紱誨紑Perl澶榪滐紝鎴戣嚜瀛Python浣跨敤鐨勬槸榪欐湰浼樼鐨勫湪綰垮厤璐逛功DiveintoPython

濡傛灉鎴愪負涓涓猆nix楂樻墜涔熸槸浣犲︿範鐨勭洰鏍囷紝閭d箞浣犵粷瀵硅佺簿閫歜ash榪欎釜鑴氭湰璇璦

Bash鏄疷nix鍜孡inux鐜澧冧笅鐨勪竴縐嶅懡浠よ岃剼鏈璇璦錛屽畠鑳藉熶負浣犲仛鎵浠ョ殑浜嬫儏錛氫粠鑷鍔ㄥ囦喚鏁版嵁搴撹剼鏈鍒板姛鑳介綈鍏ㄧ殑鐢ㄦ埛浜や簰紼嬪簭

璧峰垵鎴戞病鏈変換浣曚嬌鐢╞ash鑴氭湰鐨勭粡楠岋紝浣嗘渶緇堟垜鐢╞ash寮鍙戜簡涓涓鍏ㄥ姛鑳界殑涓浜轟唬鍔炰換鍔$$悊鍣錛歍odo

txtCLI

鎻掍歡錛圓dd-ons錛夊備粖鐨剋eb搴旂敤紼嬪簭鍜屾祻瑙堝櫒閮藉彲浠ラ氳繃涓浜涙墿灞曡蔣浠舵潵涓板瘜鑷宸辯殑鍔熻兘

鐢變簬涓浜涚幇鏈夌殑杞浠訛紝渚嬪侳irefox銆乄ordPress瓚婃潵瓚婂彈鍒板紑鍙戜漢鍛樼殑鍏蟲敞錛屾彃浠剁殑寮鍙戜篃鏃ョ泭嫻佽岋紝浜轟滑閮藉湪璇粹淏utifonlyitcoulddoTHIS鈥濆彧瑕佷綘鎺屾彙浜咹TML錛孞avaScript鍜孋SS錛屼綘灝卞彲浠ュ湪浠諱綍鐨勬祻瑙堝櫒閲屽紑鍙戜綘鎯寵佺殑寰堝氫笢瑗

,scripts,鍜孲tylishuserstyles榪欎簺杞浠墮兘鏄鐢ㄧ殑鏇存櫘閫氶〉闈涓鏍風殑璇璦鍐欐垚鐨,榪欏嚑涓涓滆タ閮藉煎緱浣犲幓鐮旂┒涓浜

鏇撮珮綰х殑嫻忚堝櫒鎵╁睍紼嬪簭錛屼緥濡侳irefox鐨勬墿灞曪紝瀹冧滑鍙浠ュ府鍔╀綘寰堝

寮鍙慒irefox鐨勬墿灞曪紝涓句釜渚嬪瓙錛岄渶瑕佷綘綺鵑欽avaScript鍜孹ML錛堜竴縐嶆爣璁拌璦錛岀被浼糎TML錛屼絾鍏鋒湁鏇翠弗鏍肩殑鏍煎紡錛

鏃╁湪2007騫存垜灝卞啓涓嬫潵howtobuildaFirefoxextension,榪欐槸鎴戝湪絎ㄦ墜絎ㄨ剼鐨勭爺絀剁綉涓婄殑涓浜涘︿範璧勬枡鍚庤幏寰楃殑鎴愭灉

寰堝氬厤璐圭殑銆佸彈嬈㈣繋鐨剋eb搴旂敤紼嬪簭閮芥彁渚涗簡鎵╁睍妗嗘灦錛屼緥濡俉ordPress鍜孧ediaWiki

榪欎簺搴旂敤紼嬪簭閮芥槸鐢≒HP鍐欐垚鐨勶紝鎵浠ュ彧鏈夊筆HP鐔熸倝浣犳墠鑳藉仛榪欎簺浜嬫儏

榪欎釜灝辨槸濡備綍緙栧啓WordPress鎻掍歡

鑰屾兂椹鵑┉GoogleWave鍓嶆部鎶鏈鐨勫紑鍙戜漢鍛樺彲浠ヤ粠浣跨敤HTML,JavaScript,Java,鍜孭ython鍐欏皬緇勪歡鍜屽皬宸ュ叿寮濮

鎴戝啓鐨勭涓涓猈avebot鏄璺熺潃榪欎釜涓涓涓嬪崍鏃墮棿鐨勫揩閫熷叆闂ㄦ寚瀵煎紑濮嬬殑

寮鍙戞岄潰涓婄殑Web搴旂敤紼嬪簭瀛︿範緙栫▼鏈濂界殑緇撴灉鏄浣犲湪涓涓鐜澧冧笅瀛︾殑涓滆タ鍙浠ュ簲鐢ㄥ埌鍙﹀栫殑鐜澧冧腑

鍏堝︿範寮鍙憌eb搴旂敤紼嬪簭鐨勫ソ澶勫氨鏄鎴戜滑鏈変竴浜涙柟娉曞彲浠ヨ﹚eb搴旂敤紼嬪簭鐩存帴鍦ㄦ岄潰涓婅繍琛

渚嬪傦紝AdobeAIR鏄涓涓璺ㄥ鉤鍙扮殑鍗蟲椂榪愯屽鉤鍙幫紝瀹冭兘璁╀綘緙栧啓鐨勭▼搴忚繍琛屽湪浠諱綍瑁呮湁AIR鐨勬搷浣滅郴緇熺殑妗岄潰涓

AIR搴旂敤紼嬪簭閮芥槸鐢盚TML,Flash,鎴朏lex鍐欐垚鐨勶紝鎵浠ュ畠鑳借╀綘鐨剋eb紼嬪簭鍦ㄦ岄潰鐜澧冧腑榪愯

AIR鏄寮鍙戦儴緗叉岄潰搴旂敤紼嬪簭鐨勪竴涓浼樼鐨勯夋嫨錛屽氨鍍忔垜浠鎻愬埌榪囩殑10涓璁╀綘鍊煎緱鍘誨畨瑁匒IR鐨勫簲鐢ㄧ▼搴

縐誨姩搴旂敤寮鍙戣兘鍦╥Phone鎴栬匒ndroid鏅鴻兘鎵嬫満涓婅繍琛岀殑鎵嬫満搴旂敤紼嬪簭鐨勫紑鍙戝備粖姝e憟鐜頒簳鍠蜂箣鍔匡紝鎵浠ヤ綘涔熷彲浠ユⅵ鎯充竴涓嬪備綍鍦╥Tunes搴旂敤鍟嗗簵閲岄氳繃浣犵殑澶╂墠紼嬪簭澶ц禋涓絎

浣嗘槸錛屼綔涓轟竴涓緙栫爜鏂版墜錛岀洿鎺ュ斿悜縐誨姩寮鍙戞墍緇忓巻鐨勫︿範鏇茬嚎鍙鑳戒細寰堥櫋錛屽洜涓哄畠闇瑕佷綘鐔熸倝楂樼駭鐨勭紪紼嬭璦錛屼緥濡侸ava鍜孫bjectiveC

鐒惰岋紝浣犲綋鐒跺簲璇ョ湅鐪媔Phone鍜孉ndroid緙栫▼絀剁珶鏄浠涔堟牱瀛愮殑

闃呰昏繖涓綆鍗曠殑iPhone搴旂敤寮鍙戜緥瀛愬彲浠ュ垵姝ヨよ瘑涓涓媔Phone紼嬪簭鐨勫紑鍙戣繃紼

Android紼嬪簭閮芥槸鐢盝ava鍐欐垚鐨勶紝榪欐湁涓涓綆鍗曠殑瑙嗛戞暀紼嬫暀浣犲備綍寮鍙戠涓涓鈥滺elloAndroid鈥滅▼搴忥紙娉錛氬彲鑳介渶瑕佷唬鐞嗘墠鑳界湅榪欎釜瑙嗛戱級

鑰愬績錛屽埢鑻︼紝灝濊瘯錛屽け璐ュソ鐨勭▼搴忓憳閮芥湁涓涓涓嶈揪鐩鐨勮獡涓嶇艦浼戠殑鍝佽川錛屼粬浠浼氭儕鍠滀簬閫氳繃闀挎湡鎺ㄦ暡鍜屽け璐ユ崲鏉ョ殑涓鐐規垚緇

瀛︿細緙栫▼浼氭湁寰堝ソ鐨勫洖鎶ョ殑錛屼絾鏄瀛︿範鐨勮繃紼嬪彲鑳戒細鏄楗卞彈鎸鎶樺拰瀛ょ嫭鐨

濡傛灉鏈夊彲鑳斤紝鏈濂芥壘涓浼翠竴璧烽櫔浣犲仛榪欎歡浜

鎯崇簿閫氱紪紼嬶紝榪欏拰鍏朵粬浜嬫儏涓鏍鳳紝闇瑕佸潥鎸侊紝鍙嶅嶅皾璇曪紝鑾峰緱鏇村氱殑緇忛獙

㈣ 如何學習別人的程序代碼

如何學習別人的程序代碼



只要是個程序員就會看代碼,但是很多人,包括我在內,在看一些開源代碼的時候往往一頭霧水,不知從何看起。

越是結構好的代碼,如果不理解它的思想越是難得看懂,例如Qt、Agg、CryptPP等。這里我將我的一些經驗寫在這里,留個記錄吧。

完善的開源工程都會有文檔,即使沒有文檔也應當有api-guid,那麼我們先找到它們,這時我們不要管它是怎麼設計的,先編譯一個,照著例子寫個程序廳枝帆運行一下吧,再試試一些高級功能。這時我們在心中先猜猜它應當是怎樣設計的(大多數情況是沒有想法)。好吧,我們再來看文檔,文檔中一般有靜態結構的說明扮雹,如模塊劃分、類列表、每個類的成員列表。嗯,還是一頭霧水啊,沒辦法,我們打開源碼所在的文件夾,看看源碼的組織方式。嗯,有點頭緒了,大多數情況下,目錄結構與工程結構是一致的,而我們編寫例子程序的時候使用的介面一般在源碼的include目錄下。那好吧,我們根據頭文件名和目錄結構去找相應的實現文件吧,但這往往相當困難,因為你會發現它根本就不是你所想的那樣。一個類或一個外部變數,你想找到它往往會動用Windows的搜索。看了幾個小時還沒有太大的進展,仍然不知道它的頭(高層的入口)在哪,尾(底層的具體實現)在哪,不過你至少對那些地方有哪些文件都熟悉了,那些零星的注釋也被你看了一遍。這時該把你寫的例子程序拿出來了,我們單步跟進去,跟的同時我們也注意一下所跟到的文件的物理位置、它附近都有哪些文件、哪些類或結構。一直跟下去,這樣我們往往會順藤摸瓜找到最底層的實現,並發現一條執行路徑(太變態的或用了一堆模板的除外)搭敬。由於你已經對工程的結構有了一定了解,這時你可以從頭和尾一起開始看代碼(前提是你已經找到了一個頭和一個尾),將一條線弄清楚,那麼這個工程的其他線也應該是差不多的設計思路。

有些開源工程裡面的宏特別多,那你要當心,首先搞清楚這些宏吧。

用C寫的工程往往比用C++寫的容易懂,因為它最多有很多函數指針和extern變數,而後者則令人頭疼得多,如果你實在沒有辦法,那麼上網搜吧,很多著名的開源工程一般會有一些人將其研究心得放到blog上,看一看,說不定一下豁然開朗。

好吧,就寫這么多,真是亂七八糟。

閱讀全文

與程序員如何學習源代碼相關的資料

熱點內容
哪些交易所大陸注冊 瀏覽:886
python爬取股票實時數據後如何下單 瀏覽:266
在區域代理拿桶裝水大概多少錢 瀏覽:608
逆行扣分一般多久能來信息 瀏覽:286
程序狀態反映了什麼 瀏覽:536
硬碟數據恢復是靠什麼 瀏覽:942
重慶哪個日料市場最大 瀏覽:493
九恆星產品有什麼用 瀏覽:642
移動代理商如何發展 瀏覽:69
汽車鈑金電腦數據復原多少錢一台 瀏覽:273
一個城市的美團外賣總代理多少錢 瀏覽:743
鏈一交易所怎麼下載的 瀏覽:402
怎麼查快遞信息是什麼東西 瀏覽:645
順豐速運騎手要買哪些產品 瀏覽:814
ajax怎麼傳遞json數據 瀏覽:897
通達信如何下載專業數據 瀏覽:965
眼鏡的發明使用了哪些新技術 瀏覽:984
政府會計應當提供的信息有哪些 瀏覽:147
沖壓產品如何報價 瀏覽:157
32歲程序員薪資開多少 瀏覽:421