如何自學編程
學習編程是一門苦差事,尤其是剛?cè)腴T的時候,對著哪些它認識你,你不認識它的代碼別提是多么痛苦的一件事情了,很多朋友可能受不了這種痛苦從而放棄了學習,因為很多人沒有那個耐心和毅力。當然學習編程除了耐心和毅力之外還是需要一些方法和技巧的,下面就跟隨學習啦小編一起來看看如何自學編程吧。
自學編程
首要之首:不要急于選擇一種語言
新手們有一個常見的錯誤就是猶豫于判斷哪種編程語言是做好的、最該先學的。 我們有很多的選擇,但你不能說那種語言最好。 我們應(yīng)該理解:說到底,什么語言并不重要。 重要的是理解數(shù)據(jù)結(jié)構(gòu)、控制邏輯和設(shè)計模式。任何一種語言甚至一種簡單的腳本語言都會具有所有編程語言都共有的各種特征,也就是說各種語言是貫通的。 我正在攻讀我的計算機學學位,我編程使用Pascal,匯編,和C語言,事實上我從來沒有把它當成職業(yè)以求獲得回報。 我一直在自學編程,工作上用不到它,我使用現(xiàn)有的知識,參考各種文檔和書本,學習它們的用法。 因此,不要急于選擇何種編程語言。 找出你想要開發(fā)的東西,使用一種能夠完成這項任務(wù)的語言,這就可以了。
根據(jù)各種開發(fā)平臺的不同,有很多不同的軟件開發(fā)形式可供你選擇:從網(wǎng)站應(yīng)用到桌面軟件到智能手機軟件到命令行腳本工具。 這篇文章里,我將重點介紹一些很受歡迎的入門教程和資源,它們能幫助你學會如何在各種主流的平臺上編程開發(fā)。 我先假設(shè)你是一個悟性很強的讀者,但對于新手,當我談?wù)摮绦虼a時還是要按照入門級的水平。 因為即使是你自己看一篇編程入門 手冊,如果發(fā)現(xiàn)都能理解時,心情自然會很高興,這樣利于你進一步學習。
桌面腳本
想要動手在Windows里或蘋果系統(tǒng)里編程,最簡單的方法是從一種腳本語言或宏語言開始,例如AutoHotkey (Windows) 或 Automator (蘋果系統(tǒng))。 如今一些硬件程序員沖著他們的屏幕大喊大叫,說AHK和AppleScript并不是真正的編程語言。 也許他們說的是對的技術(shù)上,這些種類的語言只能做一些上層的編程。 但是對于那些只是想來脫盲、想在他們的電腦里實現(xiàn)一些能自動運行的程序的新手來說,這些語言會是一個絕妙的入門入口而且你會吃驚于它們豐富的功能。
例如,大家都喜愛的Texter就是Adam使用AutoHotkey開發(fā)的能獨立運行的Windows應(yīng)用程序,所以說這種腳本語言遠不是只能開發(fā)小規(guī)模腳本軟件。 如果你想從AutoHotkey入手,可以參考Adam的指導: how to turn any action into a keyboard shortcut using AutoHotkey(然后,你可以下載 Texter源代碼 看看這個功能齊全的使用AHK開發(fā)的Windows應(yīng)用程序的內(nèi)部結(jié)構(gòu))。
Web開發(fā)
除了把自己約束在特定的編程語言和特定的操作系統(tǒng)上,你還可以在瀏覽器里開發(fā)你的殺手锏程序,讓它在互聯(lián)網(wǎng)上運行,這就是webapp。 歡迎來到奇妙的web編程世界。
HTML 和 CSS:開發(fā)網(wǎng)站,你第一件要知道的事情就是HTML(網(wǎng)頁就是由它組成的)和CSS(一種讓外觀更好看的樣式標記)。 HTML 和 CSS 并不是編程語言它們只是頁面的結(jié)構(gòu)和樣式信息。 然而,在開始開發(fā)web應(yīng)用程序之前你必須要學會如何手工的編寫簡單的HTML和CSS,web頁面是任何webapp的前端顯示部分。 這個 HTML 指導 是你入手的好地方。
JavaScript:當你可以通過HTML和CSS構(gòu)建一個靜態(tài)頁面后,事情就開始變得有趣了因為到了該學JavaScript的時候了。 JavaScript是一種web瀏覽器上的編程語言,它的魔力就是能在頁面里制造一些動態(tài)效果。 JavaScript可以做bookmarklets, Greasemonkey 腳本, 和 Ajax, 所以它是web上各種好東西的關(guān)于因素。 學習JavaScript從這里開。
服務(wù)器端腳本:一旦你學會了網(wǎng)頁里的知識,你就要開始對它添加一些動態(tài)服務(wù)器操作為了實現(xiàn)這些,你需要把目光轉(zhuǎn)移到服務(wù)器端腳本語言,例如PHP, Python, Perl, 或 Ruby。 舉個例子,如果想要制作一個網(wǎng)頁形式的聯(lián)系方式表單,根據(jù)用戶的輸入發(fā)送郵件,你就需要使用服務(wù)器端腳本來實現(xiàn)。 像PHP這樣的腳本語言可以讓你跟web服務(wù)器上的數(shù)據(jù)庫進行溝通,所以如果你想搭建一個用戶可以登錄注冊的網(wǎng)站,這樣的語言正是你需要的。 Webmonkey 是一個優(yōu)秀的web開發(fā)資源網(wǎng)站,里面有大量的各種web編程語言的指導手冊。 閱讀一下他們的 PHP 初學者指南。 當你感覺差不多了的時候,看看WebMonkeys PHP and MySQL tutorial 學習如何使用PHP跟數(shù)據(jù)庫交互。 網(wǎng)上最好的要數(shù)PHP語言官方的在線文檔和函數(shù)參考了。 每個知識點上 (例如strlen function這個)都在后面列出來用戶的評論注釋,這些對于文檔的本身是非常有價值的。 (我很喜歡PHP,但還有很多其他種服務(wù)器端的腳本語言你們都可以選擇。)
Web框架:過去數(shù)年里,web開發(fā)人員在開發(fā)動態(tài)網(wǎng)站的過程中不得不一遍又一遍的針對重復遇到的問題寫出重復的代碼。 為了避免這種每次開發(fā)一些新網(wǎng)站都會重復勞動一次的問題,一些程序員動手搭建了一些框架,讓框架替我們完成重復性的工作。 非常流行的 Ruby on Rails 框架,作為一個例子,它利用Ruby編程語言,為我們提供了一個專門面向web的架構(gòu),普通的web應(yīng)用程序都能使用它來完成。 事實上,Adam使用Rails開發(fā)了他的第一個正式的(而且是嘆為觀止的!)web應(yīng)用程序,MixTape.me。這就是 他的如何在沒有任何經(jīng)驗的情況下搭建一個網(wǎng)站。還有一些其他的web開發(fā)框架包括 CakePHP (針對 PHP 編程者), Django (針對 Python 編程中), 以及 jQuery (針對 JavaScript).
Web APIs: API (應(yīng)用層序編程接口) 是指不同的軟件之間相互交換的程序途徑。 例如,如果你想在你的網(wǎng)站上放一個動態(tài)的地圖,你可以使用Google Map,而不需要開發(fā)自己的地圖。 The Google Maps API 可以輕松的讓你通過JavaScript在程序中引入一個地圖到你的頁面上。 幾乎所有的現(xiàn)代的你所知道的和喜愛的web服務(wù)都提供了API,通過這些API你可以獲取到他們的數(shù)據(jù)和小工具,在你的應(yīng)用程序里就可以使用這些交互過來的東西了,例如Twitter, Facebook, Google Docs, Google Maps, 這個列表遠不止這些。 通過API把其他web應(yīng)用集成到你的web應(yīng)用里是現(xiàn)在富web開發(fā)的前沿地帶。 每個優(yōu)秀的主流的web服務(wù)API都附帶有完整的文檔和一些快速入手的指導(例如,這個就是 Twitter的)。 瘋狂吧。
命令行腳本
如果你想開發(fā)一個程序,讓它讀取文字或文件、輸入輸出一些有用的東西,那么,命令行腳本語言將是個不錯的選擇。 然而它并不像web應(yīng)用程序和桌面應(yīng)用程序那樣有吸引力和好看的外觀,但是作為快速開發(fā)的腳本語言,你卻不能忽視它們。
很多的在linux平臺上運行的web腳本同樣能以命令行模式運行,例如Perl,Python和PHP,所以如果你學會了使用它們,你將能在兩種環(huán)境中使用它們。 我的學習道路一直沒離開Peal太遠,我自學Python使用的是這本優(yōu)秀的在線免費書Dive into Python。
如果成為一個Unix高手也是你學習的目標,那么你絕對要精通bash這個腳本語言。 Bash是Unix和Linux環(huán)境下的一種命令行腳本語言,它能夠為你做所以的事情:從自動備份數(shù)據(jù)庫腳本到功能齊全的用戶交互程序。 起初我沒有任何使用bash腳本的經(jīng)驗,但最終我用bash開發(fā)了一個全功能的個人代辦任務(wù)管理器: Todo.txt CLI。
插件(Add-ons)
如今的web應(yīng)用程序和瀏覽器都可以通過一些擴展軟件來豐富自己的功能。 由于一些現(xiàn)有的軟件,例如Firefox、WordPress越來越受到開發(fā)人員的關(guān)注,插件的開發(fā)也日益流行,人們都在說But if only it could do THIS
只要你掌握了HTML,JavaScript和CSS,你就可以在任何的瀏覽器里開發(fā)你想要的很多東西。 Bookmarklets, Greasemonkey user scripts, 和 Stylish user styles這些軟件都是用的更普通頁面一樣的語言寫成的, 這幾個東西都值得你去研究一些。
更高級的瀏覽器擴展程序,例如Firefox的擴展,它們可以幫助你很多。 開發(fā)Firefox的擴展,舉個例子,需要你精通JavaScript和XML(一種標記語言,類似HTML,但具有更嚴格的格式)。 早在2007年我就寫下來 how to build a Firefox extension, 這是我在笨手笨腳的研究網(wǎng)上的一些學習資料后獲得的成果。
很多免費的、受歡迎的web應(yīng)用程序都提供了擴展框架,例如WordPress 和 MediaWiki。 這些應(yīng)用程序都是用PHP寫成的,所以只有對PHP熟悉你才能做這些事情。 這個就是 如何編寫WordPress插件。 而想駕馭Google Wave前沿技術(shù)的開發(fā)人員可以從使用HTML, JavaScript, Java, 和 Python 寫小組件和小工具開始。 我寫的第一個Wave bot是跟著這個 一個下午時間的快速入門指導開始的。
開發(fā)桌面上的Web應(yīng)用程序
學習編程最好的結(jié)果是你在一個環(huán)境下學的東西可以應(yīng)用到另外的環(huán)境中。 先學習開發(fā)web應(yīng)用程序的好處就是我們有一些方法可以讓web應(yīng)用程序直接在桌面上運行。 例如, Adobe AIR 是一個跨平臺的即時運行平臺,它能讓你編寫的程序運行在任何裝有AIR的操作系統(tǒng)的桌面上。 AIR應(yīng)用程序都是由HTML, Flash, 或 Flex 寫成的,所以它能讓你的web程序在桌面環(huán)境中運行。 AIR是開發(fā)部署桌面應(yīng)用程序的一個優(yōu)秀的選擇,就像我們提到過的 10個讓你值得去安裝AIR的應(yīng)用程序。
移動應(yīng)用開發(fā)
能在iPhone或者Android智能手機上運行的手機應(yīng)用程序的開發(fā)如今正呈現(xiàn)井噴之勢,所以你也可以夢想一下如何在iTunes應(yīng)用商店里通過你的天才程序大賺一筆。 但是,作為一個編碼新手,直接奔向移動開發(fā)所經(jīng)歷的學習曲線可能會很陡,因為它需要你熟悉高級的編程語言,例如Java和Objective C。 然而,你當然應(yīng)該看看iPhone 和 Android 編程究竟是什么樣子的。 閱讀這個 簡單的iPhone應(yīng)用開發(fā)例子 可以初步認識一下iPhone程序的開發(fā)過程。 Android 程序都是由Java寫成的,這有一個 簡單的視頻教程教你如何開發(fā)第一個Hello Android程序(注:可能需要代理才能看這個視頻)。
最后:耐心,刻苦,嘗試,失敗
好的程序員都有一個不達目的誓不罷休的品質(zhì),他們會驚喜于通過長期推敲和失敗換來的一點成績。 學會編程會有很好的回報的,但是學習的過程可能會是飽受挫折和孤獨的。 如果有可能,最好找個伴一起陪你做這件事。 想精通編程,這和其他事情一樣,需要堅持,反復嘗試,獲得更多的經(jīng)驗。
看過“ 如何自學編程 ”的人還看了: