自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

程序員編程須知的七大攻略

開發(fā) 開發(fā)工具
程序員除了要修煉好自己的技術(shù)功底外,還需要有一些人文方面的修煉。這里提出七大攻略,希望對大家有所幫助。

中國古代思想家孔子(Confucius)功勞中包括對許多事物發(fā)表的見解,從平凡的幸運餅消息(fortune cookie messages)到明顯荒謬的笑話,如“Man who stand on toilet is high on pot.(立于[茅]廁,樂于[尿]壺)”。他曾說過一段對人們學(xué)習(xí)編程有幫助的話:

I hear and I forget.(耳聽為虛)

I see and I remember.(眼見為實)

I do and I understand.(實踐出真知)

對大多數(shù)人來說,坐在教室里聽課遠非學(xué)習(xí)編程的理想途徑。輔以閱讀介紹編程概念的書籍可能會有所助益,但無法與通過有效閱讀并思考其他人的源代碼直至理解所獲得的實踐技巧相比。

但是,真的沒有什么方法比喜歡自己動手寫程序更能積累編程技巧。閱讀一點只能學(xué)到一點,而動手編程則能收獲很多。找到你想簡化的事情,并編寫一些程序代碼來通過自動化使它們更容易處理。

不幸的是,搞清楚什么能做有時會是編程學(xué)習(xí)中最困難的地方。基于個人的經(jīng)驗,答案似乎是你可以一躇而就,而不是七上八下的事情,并能通過頓悟來找到通過編寫程序來解決問題的方法。

在尋求這種頓悟時,由于剛開始編程的人知識通常都非常有限,繪制流程圖有助于以你喜歡的方式來事先準備。請這樣來做,至少在開始時,包括搞清楚你每天使用電腦的流程,把其中使用最多的部分簡化繪制出來。一旦你整理出來,就把在那些情況下特別有用的編程技能作為早期學(xué)習(xí)的重點。這樣的機會在一定程度上是稀缺的,你可能要改變計算環(huán)境來提供這樣的機會。

需要做的最重要的事情是要找到一種方法來激勵自己編寫代碼。下面是關(guān)于如何采取行動學(xué)習(xí)編程的建議。

1、數(shù)據(jù)庫管理系統(tǒng)(DBMSes)

諸如PostgreSQL、 Oracle、Microsoft SQL Server,以及Informix這種專業(yè)、耐用的數(shù)據(jù)庫管理系統(tǒng)通過存儲過程或存儲函數(shù)提供了腳本功能。最受廣泛認可的語言選項也許是Microsoft SQL Server和Sybase所使用的TransactSQL,以及Oracle所使用的PL/SQL。 PostgreSQL提供了一個名為PL/pgSQL的類PL/SQL的程序擴展到SQL里,但它也提供了包括PL/Perl、PL/Python、PL/Ruby和 PL/Tcl在內(nèi)的其他語言的選擇范圍。

這種編程機會雖然限定于一組特定的問題領(lǐng)域,但如果你是一名DBA(數(shù)據(jù)庫管理員)或你的工作涉及數(shù)據(jù)庫開發(fā)報告,將會親身體驗到這是非常有用的。

2、插件

許多新的電腦游戲提供了編寫和加載插件的功能。例如,“魔獸世界(World of Warcraft)”提供了一個使用Lua腳本語言的插件系統(tǒng)。隨著Firefox聲名鵲起和廣泛使用,現(xiàn)代網(wǎng)頁瀏覽器往往也提供靈活的插件系統(tǒng);在最簡單的情況下,F(xiàn)irefox的插件都是用JavaScript編寫的。開放源碼的瀏覽器在插件開發(fā)方面往往比封閉源代碼的瀏覽器更具吸引力,并且Chromium瀏覽器的插件系統(tǒng),很可能成為插件開發(fā)者們的第二大目標,這是因為谷歌Chrome瀏覽器高調(diào)的營銷策略以及不設(shè)限的許可證(permissive licensing)政策。

*PurpleEndurer注:Lua程序設(shè)計語言 是一個簡潔、輕量、可擴展的腳本語言。Lua讀作/'lua/(嚕啊),是葡萄牙語中"Luna"(月亮)的意思。詳見:

http://zh.wikipedia.org/zh-cn/Lua

其他許多應(yīng)用程序具有插件和擴展系統(tǒng),可以提供充分的機會來培養(yǎng)這些迅速發(fā)展的編碼技能,甚至包括一些終端仿真器(terminal emulators)和基于控制臺的文本編輯器,如Vim。(透露一點好消息:我貢獻了一點代碼到urlpicker項目。)

3、實踐問題

您可以嘗試解決代碼任務(wù)中的通用清單所提供的問題,代碼任務(wù)是特別為了給程序員提供實習(xí)機會而專業(yè)設(shè)計的。歐拉(Project Euler)是一個比較流行的、不論編程語言的項目,包括“一系列具有挑戰(zhàn)性的數(shù)學(xué)/計算機編程問題”。歐拉項目收集了上百個問題,這些問題一般從易到難,足以讓你忙碌很長一段時間。

*PurpleEndurer注:關(guān)于歐拉項目,可訪問:http://projecteuler.net

其他例子包括RubyQuiz,它多年來一直在ruby-talk的郵件列表中廣受歡迎。另外還有CodeKata,它是Dave Thomas的一個規(guī)模較小、壽命較短的項目。Dave Thomas是《The Pragmatic Programmer(程序員修煉之道)》一書的合著者之一。

*PurpleEndurer注:關(guān)于CodeKata可訪問http://codekata.pragprog.com/

這些選項不適合用作自我激勵型探索性學(xué)習(xí)的任務(wù),因為它們會讓人撓破頭皮,但如果發(fā)現(xiàn)其中的樂趣,它們可以和其它方法一樣用于編程實踐教育。

4、智能手機(Smartphones)

應(yīng)用程序開發(fā)行業(yè)中***的新熱潮是智能手機的應(yīng)用程序。這種裝置通常需要開發(fā)人員使用一種可將裝置的功能發(fā)揮到極至的特定語言作為應(yīng)用平臺,至少要以官方認可的方式進行。

智能手機開發(fā)體系的一個新興產(chǎn)業(yè)正在崛起,即允許開發(fā)人員用非智能手機平臺原生的其它語言編寫自己的代碼,然后轉(zhuǎn)化為原生語言的應(yīng)用程序。 因為不需要學(xué)習(xí)任何特定的智能手機平臺的官方應(yīng)用程序開發(fā)語言,Web應(yīng)用程序也沾了光,成為智能手機應(yīng)用程序開發(fā)的一種方法。選擇語言甚于平臺的另一個方案是使用像諾基亞的N900這樣的設(shè)備,它運行Debian發(fā)行的Linux系統(tǒng),可以運行的軟件范圍很寬——包括很多不是為智能手機設(shè)計的軟件。

側(cè)重于多種方法開發(fā)智能手機應(yīng)用程序的書籍和在線教程紛紛出現(xiàn),特別是Android和iPhone的設(shè)備。一些第三方框架將可以從HTML + JavaScript 到 Ruby 或 Python編寫的代碼“編譯”為多種平臺的“本地”應(yīng)用程序,有時不僅包括智能電話平臺,而且包括桌面系統(tǒng)。對這種情況也許最令人興奮的是,這些框架和相關(guān)的IDE不傾向于試圖解決所有的編程問題,這與同樣出色的編程方式的主要框架,如Visual Studio和.NET框架有所不同。這使得人們有可能通過縮小選項至一個易于管理的問題領(lǐng)域來顯著地簡化開發(fā)過程。其結(jié)果是軟件開發(fā)風(fēng)格令初學(xué)者感到非常易于接受。

不足之處是,在學(xué)習(xí)如何編程時,你可能很難每天都編寫新的智能手機應(yīng)用程序。但是,如果您的智能手機的操作系統(tǒng)是類Unix系統(tǒng)(如N900的),同樣的小工具開發(fā)項目在工作站和服務(wù)器中都非常有用。

5、電子表格

如果使用了附帶強大宏系統(tǒng)的電子表格程序,你將擁有一個快速的方法來閱讀其他人(或物)代碼,并編寫自己的代碼。首先,將你執(zhí)行次數(shù)多、通常需要采取數(shù)個繁瑣步驟的任務(wù)記錄成一個宏。接下來,打開宏的源代碼,閱讀并進行編輯,使之更適合于一般用途。這是一個非常有限的方法,不會帶來多大的長進,但可能會幫助你上路,自然地喜歡上簡單的腳本代碼。

使用此類腳本的最常見的電子表格程序可能是微軟Excel。Excel所使用的VBA是一種貧乏的語言,但是如果你在日常工作中大量使用Excel,這可能是無論如何你都該掌握的一種技能。OpenOffice.org使用了類似的宏系統(tǒng),使用方法大致相同,LibreOffice也像微軟Office一樣,提供了學(xué)習(xí)代碼的機會。

在任何情況下,編寫程序的門坎都比編寫簡單的命令行shell腳本代碼稍高,因為菜單選項和按鈕需要點擊才能啟用。入門的成本類似于用市場上的一種主要IDE開始一個新項目,但是一個大幅縮水的“項目”。這會是一個不錯的主意,可以確保這不僅僅是在日常開發(fā)環(huán)境中編寫腳本的機會,甚至是加以利用就會很有幫助的。

6、Unix

如果你定期使用一些類UNIX系統(tǒng),在尋找鍛煉初期編程技能的方式時就具有巨大的優(yōu)勢。UNIX在簡單腳本自動化方面提供了比任何其他家庭通用操作系統(tǒng)的更多的使用機會,這要感謝平臺上管理腳本的極大靈活性。在最不復(fù)雜的情況下,一個管理腳本可能只不過是將一系列shell命令保存到一個文件中。在此基礎(chǔ)上,可以利用簡單的循環(huán)和條件結(jié)構(gòu)、輸入輸出處理、文件讀寫、計劃任務(wù)來進行擴展。

通過編寫簡單shell腳本爽過一把后,花一段時間來學(xué)習(xí)如何用Perl、Python和Ruby編寫管理腳本對任何一個Unix系統(tǒng)管理員都是值得的。在Unix環(huán)境使用這些語言的關(guān)鍵技能包括通過UNIX管道和重定向訪問文本流,處理命令行選項,讀寫文件,使用正則表達式搜索和操作文本。管理員也想知道編程的公共基礎(chǔ)知識,比如處理輸出,循環(huán)(或在某些情況下遞歸),以明確界定的標準為基礎(chǔ),通過使用條件判斷結(jié)構(gòu)編程來作出決策。

編寫Unix命令行工具是一塊沃土,有許多機會將腳本語言的巨大能力用于編程。由于管理腳本開發(fā)的靈活性和簡約性要求,編寫工具的范圍可以從一些有用工具的最簡例子到強大的服務(wù)器進程,甚至大規(guī)模并行任務(wù)自動化,負載平衡,啟發(fā)式過濾,和一些其他有趣的問題解決作業(yè),這些問題激起了世界上***的程序員的興趣。

雖然幾乎所有通用操作系統(tǒng)都具有一些使用管理腳本的能力,其中相當一部分用途比較窄,另一些操作系統(tǒng)則比較均衡。Unix在管理腳本的適用條件方面高人一等,因為諸如主要Linux發(fā)行版和BSD Unix系統(tǒng)等Unix類系統(tǒng)共享相同的基本運行環(huán)境設(shè)計,他們都可以從管理腳本和腳本平臺之間的可移植性中受益 - 只要你按可移植性要求來寫這些腳本(如通過使用sh或Perl而不是bash,選擇系統(tǒng)標準sysctl值而不是數(shù)據(jù)源的proc文件系統(tǒng))。

這些工作也適用于除開非常高級,動態(tài),解釋型語言之外的其它語言。C,C++,Haskell,Objective-C,Objective Caml,以及大量其他選項正好合適各類簡單Unix工具的編寫任務(wù)。對于其中的許多語言,即使要完成像小型管理工具的這樣簡單的工程項目,也必須學(xué)會更廣泛的技能,這一要求比Perl,Ruby和Bourne shell的這樣的語言高。但這些任務(wù)與GUI應(yīng)用程序開發(fā)、系統(tǒng)編程、其它經(jīng)常使用(特別是在其他平臺上的)的任務(wù)比起來,其艱巨性對編程初學(xué)者來說要小得多。

實際上,鑒于Unix哲學(xué)多年來提供了大量常用工具,這些工具嚴格分工(大部分),并工作良好,類UNIX環(huán)境對編程新手的價值中有一部分是充分利用Unix命令行環(huán)境力量,鼓勵用戶像程序員那樣去思考,而非觀眾。

7. Web網(wǎng)頁

這是一個危險的建議,通過玩JavaScript來學(xué)習(xí)編程。這不是因為JavaScript是一種不好的語言,而是因為追求動態(tài)用戶體驗的緣故,網(wǎng)頁已經(jīng)被不加限制地濫用JavaSciprt弄得亂七八糟,因而在網(wǎng)頁上放縱程序員新手可能會被認為是不負責(zé)任的。在網(wǎng)頁中JavaScript也有一些積極用法,而且可以讓新手們對編寫在瀏覽器中運行的桌面應(yīng)用程序的想法愈來愈感興趣,這給了我們在程序員職業(yè)生涯中盡早開始學(xué)習(xí)JavaScript的很多理由。

事實上,JavaScript是一種最常見的、單獨的客戶端網(wǎng)頁腳本,這也意味著JavaScript可能是最簡單的語言,通過閱讀別人的代碼就能學(xué)習(xí)。找到具有客戶端動態(tài)元素的任何網(wǎng)頁,然后右鍵單擊并選擇查看頁面源代碼的選項,你就會發(fā)現(xiàn)它布滿了JavaScript的散落片段。對于更復(fù)雜的動態(tài)頁面,(X)HTML的網(wǎng)頁甚至可能引用一個純代碼的單獨.js文件。

在把代碼上傳到公共訪問的Web服務(wù)器前要細心檢查;確保它是好的。如果你想讓更多的有用腳本以本地方式來啟動,瀏覽器擴展性可以讓你將任意腳本應(yīng)用到你查看的網(wǎng)頁上——而且只適用于你個人的瀏覽體驗。Firefox的Greasemonkey是一個例子。

征求有關(guān)代碼的反饋

提高編程技能的另一個偉大方法是,向自己身邊的行家里手征求反饋,并掌握他們分享給你的的知識。他們可能并不總是彼此認可,但如果你認為他們是值得尊敬的優(yōu)秀程序員,他們所說的至少可以提示你思考新思想,并以新的方式回顧舊觀念。

征求反饋的方式很多,這兒列出幾種:

在開始工作時,選擇具有強大有益社區(qū)的程序語言,如Ruby編程語言有ruby-talk郵件列表,Perl編程語言有PerlMonks網(wǎng)站。加入這些社區(qū)中的一個(或類似其中之一的),并學(xué)習(xí)該語言的文化和***經(jīng)驗,以及得到最有效幫助的方法。

與另一個程序員結(jié)對。結(jié)對編程(Pair programming)是一種時髦的做法,已經(jīng)通過敏捷開發(fā)方法的崛起而獲得尊崇。兩個人走到一起做一個項目,但往往只有其中一個是在任何特定時間實際編寫代碼。結(jié)組程序員輪流編寫代碼,其中一人輸入代碼時,另外一個則在后面閱讀代碼,確保他們都得到大量的編碼時間。就代碼持續(xù)交談可以幫助確保解決給定問題的***辦法逐漸顯現(xiàn)并最終采用。任何一個擁有頓悟的人在試圖向另一個人解釋一個問題時,應(yīng)該認識到結(jié)對編程的潛在價值。

尋求導(dǎo)師。找到導(dǎo)師的地方,可以是編程語言社區(qū)、朋友或同事之中、開放源碼軟件開發(fā)項目、重量級技術(shù)主題會議。學(xué)校可能是另一個找到導(dǎo)師的好地方,所謂導(dǎo)師,就是對你、宿舍室友甚至研究小組有好感,具有不那么傳統(tǒng)而更互敬互讓的輔導(dǎo)制關(guān)系的指導(dǎo)老師。在學(xué)習(xí)編程過程的初期,與導(dǎo)師一對一的關(guān)系有時是獲得反饋的最有價值的方式。如果你幸運地尋得一位好的導(dǎo)師,你應(yīng)該好好利用這一資源優(yōu)勢,并且永遠不要認為這是理所當然的。

在代碼托管網(wǎng)站(如Bitbucket或GitHub)上創(chuàng)建一個項目。告訴你的程序員朋友,把它張貼到自己的Weblog或Twitter中,并激勵他人閱讀你的代碼,提供反饋意見。確保問題跟蹤系統(tǒng)是打開的,這樣人們可以通過代碼托管網(wǎng)站的交互功能提交bug或改進建議。

在實踐技能并獲得達人提供的反饋中,你應(yīng)該能夠以自己的方式從中學(xué)習(xí)編程的基礎(chǔ)知識,獲得實際有益的經(jīng)驗。

現(xiàn)在開動行動,編寫代碼罷!

【編輯推薦】

  1. 程序員的十大技術(shù)煩惱
  2. 架構(gòu)師最怕程序員知道的10件事
  3. 每個好架構(gòu)師都是一位出色的程序員
  4. 程序員必須養(yǎng)成良好的代碼習(xí)慣
  5. PHP程序員如何突破成長瓶頸
責(zé)任編輯:彭凡 來源: CSDN博客
相關(guān)推薦

2011-06-09 13:26:27

編程程序員

2013-04-22 11:13:06

程序員編程誤區(qū)

2013-07-09 15:04:17

程序員編程

2011-06-07 10:28:51

程序員

2014-11-07 16:57:21

程序員

2021-05-11 11:49:42

工業(yè)物聯(lián)網(wǎng)IIOT物聯(lián)網(wǎng)

2019-11-27 18:43:36

程序員編程語言軟件

2023-10-12 08:47:50

線程池參數(shù)含義

2010-08-10 14:45:57

FlexBlazeDS

2009-02-24 09:28:29

2009-08-26 10:06:40

七夕程序員

2018-04-23 11:00:06

程序員養(yǎng)生健康

2011-07-19 13:27:35

2013-12-16 09:36:49

程序員編程語言

2016-11-23 07:33:54

編程語言GitHub程序員

2013-06-09 09:56:35

2009-08-31 16:28:35

程序開發(fā)語言

2009-07-03 14:30:38

JSP深入編程

2015-03-06 10:10:18

程序員基礎(chǔ)實用算法講解

2011-01-13 09:40:23

算法
點贊
收藏

51CTO技術(shù)棧公眾號