學(xué)習(xí)編程的有效途徑是什么?很明顯,僅僅坐在教室里聽課是遠(yuǎn)遠(yuǎn)達(dá)不到的。閱讀一些編程理論的書籍可能會有所助益,但無法與通過有效閱讀并思考其他人的源代碼直至理解所獲得的實踐技巧相比。真的沒有什么方法比喜歡自己動手寫程序更能積累編程經(jīng)驗。閱讀一點(diǎn)只能學(xué)到一點(diǎn),而動手編程則能收獲很多。
不幸的是,搞清楚什么能做有時會是編程學(xué)習(xí)中最困難的地方?;趥€人的經(jīng)驗,答案似乎是你可以一躇而就,而不是七上八下的事情,并能通過頓悟來找到通過編寫程序來解決問題的方法。
需要做的最重要的事情是要找到一種方法來激勵自己編寫代碼。下面是一些建議,告訴你如何采取行動開始編程學(xué)習(xí)。
1、數(shù)據(jù)庫管理系統(tǒng)(DBMSes)
諸如PostgreSQL、 Oracle、Microsoft SQL Server,以及Informix這種專業(yè)、耐用的數(shù)據(jù)庫管理系統(tǒng)通過存儲過程或存儲函數(shù)提供了腳本功能。最受廣泛認(rèn)可的語言選項也許是Microsoft SQL Server和Sybase所使用的TransactSQL,以及Oracle所使用的PL/SQL。 PostgreSQL提供了一個名為PL/pgSQL的類PL/SQL的程序擴(kuò)展到SQL里,但它也提供了包括PL/Perl、PL/Python、PL/Ruby和 PL/Tcl在內(nèi)的其他語言的選擇范圍。
這種編程機(jī)會雖然限定于一組特定的問題領(lǐng)域,但如果你是一名DBA(數(shù)據(jù)庫管理員)或你的工作涉及數(shù)據(jù)庫開發(fā)報告,將會親身體驗到這是非常有用的。
2、實踐問題
您可以嘗試解決代碼任務(wù)中的通用清單所提供的問題,代碼任務(wù)是特別為了給程序員提供實習(xí)機(jī)會而專業(yè)設(shè)計的。歐拉(Project Euler)是一個比較流行的、不論編程語言的項目,包括“一系列具有挑戰(zhàn)性的數(shù)學(xué)/計算機(jī)編程問題”。歐拉項目收集了上百個問題,這些問題一般從易到難,足以讓你忙碌很長一段時間。
*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)其中的樂趣,它們可以和其它方法一樣用于編程實踐教育。
3、插件
許多新的電腦游戲提供了編寫和加載插件的功能。例如,“魔獸世界(World of Warcraft)”提供了一個使用Lua腳本語言的插件系統(tǒng)。隨著Firefox聲名鵲起和廣泛使用,現(xiàn)代網(wǎng)頁瀏覽器往往也提供靈活的插件系統(tǒng);在最簡單的情況下,F(xiàn)irefox的插件都是用JavaScript編寫的。開放源碼的瀏覽器在插件開發(fā)方面往往比封閉源代碼的瀏覽器更具吸引力,并且Chromium瀏覽器的插件系統(tǒng),很可能成為插件開發(fā)者們的第二大目標(biāo),這是因為谷歌Chrome瀏覽器高調(diào)的營銷策略以及不設(shè)限的許可證(permissive licensing)政策。
*PurpleEndurer注:Lua程序設(shè)計語言 是一個簡潔、輕量、可擴(kuò)展的腳本語言。Lua讀作/'lua/(嚕啊),是葡萄牙語中"Luna"(月亮)的意思。詳見:
http://zh.wikipedia.org/zh-cn/Lua
其他許多應(yīng)用程序具有插件和擴(kuò)展系統(tǒng),可以提供充分的機(jī)會來培養(yǎng)這些迅速發(fā)展的編碼技能,甚至包括一些終端仿真器(terminal emulators)和基于控制臺的文本編輯器,如Vim。(透露一點(diǎn)好消息:我貢獻(xiàn)了一點(diǎn)代碼到urlpicker項目。)
4、智能手機(jī)(Smartphones)
應(yīng)用程序開發(fā)行業(yè)中最大的新熱潮是智能手機(jī)的應(yīng)用程序。這種裝置通常需要開發(fā)人員使用一種可將裝置的功能發(fā)揮到極至的特定語言作為應(yīng)用平臺,至少要以官方認(rèn)可的方式進(jìn)行。
智能手機(jī)開發(fā)體系的一個新興產(chǎn)業(yè)正在崛起,即允許開發(fā)人員用非智能手機(jī)平臺原生的其它語言編寫自己的代碼,然后轉(zhuǎn)化為原生語言的應(yīng)用程序。 因為不需要學(xué)習(xí)任何特定的智能手機(jī)平臺的官方應(yīng)用程序開發(fā)語言,Web應(yīng)用程序也沾了光,成為智能手機(jī)應(yīng)用程序開發(fā)的一種方法。選擇語言甚于平臺的另一個方案是使用像諾基亞的N900這樣的設(shè)備,它運(yùn)行Debian發(fā)行的Linux系統(tǒng),可以運(yùn)行的軟件范圍很寬——包括很多不是為智能手機(jī)設(shè)計的軟件。
側(cè)重于多種方法開發(fā)智能手機(jī)應(yīng)用程序的書籍和在線教程紛紛出現(xiàn),特別是Android和iPhone的設(shè)備。一些第三方框架將可以從HTML + JavaScript 到 Ruby 或 Python編寫的代碼“編譯”為多種平臺的“本地”應(yīng)用程序,有時不僅包括智能電話平臺,而且包括桌面系統(tǒng)。對這種情況也許最令人興奮的是,這些框架和相關(guān)的IDE不傾向于試圖解決所有的編程問題,這與同樣出色的編程方式的主要框架,如Visual Studio和.NET框架有所不同。這使得人們有可能通過縮小選項至一個易于管理的問題領(lǐng)域來顯著地簡