导航:首页 > 软件知识 > 程序员如何学习源代码

程序员如何学习源代码

发布时间: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上,看一看,说不定一下豁然开朗。

好吧,就写这么多,真是乱七八糟。

阅读全文

与程序员如何学习源代码相关的资料

热点内容
怎么成为联通流量卡代理 浏览:97
洛阳古玩市场在什么位置 浏览:316
工行外汇理财产品怎么样 浏览:487
西藏哪个菜市场最大 浏览:243
肇庆市小程序商城多少钱 浏览:203
秒杀信息哪里找 浏览:734
程序员年会抽什么红包 浏览:729
海口玉石市场在哪里 浏览:352
游戏王原盒代理版什么意思 浏览:843
地铁乘车使用什么小程序 浏览:851
结构化程序是为了什么 浏览:465
商品房交易如何过户 浏览:864
假冒产品怎么处理 浏览:385
乌克兰led照明市场怎么样 浏览:651
技术开发成功后的感受怎么形容 浏览:720
应用程序恢复出厂设置需要多久 浏览:690
第三方产品售前是什么意思 浏览:597
技术点对点应答表怎么填 浏览:740
两个小凡哪个技术好 浏览:566
交易猫还价有效期多久 浏览:142