如何自學程式設計

  學習程式設計是一門苦差事,尤其是剛入門的時候,對著哪些它認識你,你不認識它的程式碼別提是多麼痛苦的一件事情了,很多朋友可能受不了這種痛苦從而放棄了學習,因為很多人沒有那個耐心和毅力。當然學習程式設計除了耐心和毅力之外還是需要一些方法和技巧的,下面就跟隨小編一起來看看吧。

  自學程式設計

  首要之首:不要急於選擇一種語言

  新手們有一個常見的錯誤就是猶豫於判斷哪種程式語言是做好的、最該先學的。 我們有很多的選擇,但你不能說那種語言最好。 我們應該理解:說到底,什麼語言並不重要。 重要的是理解資料結構、控制邏輯和設計模式。任何一種語言甚至一種簡單的指令碼語言都會具有所有程式語言都共有的各種特徵,也就是說各種語言是貫通的。 我正在攻讀我的計算機學學位,我程式設計使用Pascal,彙編,和C語言,事實上我從來沒有把它當成職業以求獲得回報。 我一直在自學程式設計,工作上用不到它,我使用現有的知識,參考各種文件和書本,學習它們的用法。 因此,不要急於選擇何種程式語言。 找出你想要開發的東西,使用一種能夠完成這項任務的語言,這就可以了。

  根據各種開發平臺的不同,有很多不同的軟體開發形式可供你選擇:從網站應用到桌面軟體到智慧手機軟體到命令列指令碼工具。 這篇文章裡,我將重點介紹一些很受歡迎的入門教程和資源,它們能幫助你學會如何在各種主流的平臺上程式設計開發。 我先假設你是一個悟性很強的讀者,但對於新手,當我談論程式程式碼時還是要按照入門級的水平。 因為即使是你自己看一篇程式設計入門 手冊,如果發現都能理解時,心情自然會很高興,這樣利於你進一步學習。

  桌面指令碼

  想要動手在Windows裡或蘋果系統裡程式設計,最簡單的方法是從一種指令碼語言或巨集語言開始,例如AutoHotkey Windows 或 Automator 蘋果系統。 如今一些硬體程式設計師衝著他們的螢幕大喊大叫,說AHK和AppleScript並不是真正的程式語言。 也許他們說的是對的技術上,這些種類的語言只能做一些上層的程式設計。 但是對於那些只是想來脫盲、想在他們的電腦裡實現一些能自動執行的程式的新手來說,這些語言會是一個絕妙的入門而且你會吃驚於它們豐富的功能。

  例如,大家都喜愛的Texter就是Adam使用AutoHotkey開發的能獨立執行的Windows應用程式,所以說這種指令碼語言遠不是隻能開發小規模指令碼軟體。 如果你想從AutoHotkey入手,可以參考Adam的指導: how to turn any action into a keyboard shortcut using AutoHotkey然後,你可以下載 Texter原始碼 看看這個功能齊全的使用AHK開發的Windows應用程式的內部結構。

  Web開發

  除了把自己約束在特定的程式語言和特定的作業系統上,你還可以在瀏覽器裡開發你的殺手鐗程式,讓它在網際網路上執行,這就是webapp。 歡迎來到奇妙的web程式設計世界。

  HTML 和 CSS:開發網站,你第一件要知道的事情就是HTML網頁就是由它組成的和CSS一種讓外觀更好看的樣式標記。 HTML 和 CSS 並不是程式語言它們只是頁面的結構和樣式資訊。 然而,在開始開發web應用程式之前你必須要學會如何手工的編寫簡單的HTML和CSS,web頁面是任何webapp的前端顯示部分。 這個 HTML 指導 是你入手的好地方。

  JavaScript:當你可以通過HTML和CSS構建一個靜態頁面後,事情就開始變得有趣了因為到了該學JavaScript的時候了。 JavaScript是一種web瀏覽器上的程式語言,它的魔力就是能在頁面裡製造一些動態效果。 JavaScript可以做bookmarklets, Greasemonkey 指令碼, 和 Ajax, 所以它是web上各種好東西的關於因素。 學習JavaScript從這裡開。

  伺服器端指令碼:一旦你學會了網頁裡的知識,你就要開始對它新增一些動態伺服器操作為了實現這些,你需要把目光轉移到伺服器端指令碼語言,例如PHP, Python, Perl, 或 Ruby。 舉個例子,如果想要製作一個網頁形式的聯絡方式表單,根據使用者的輸入傳送郵件,你就需要使用伺服器端指令碼來實現。 像PHP這樣的指令碼語言可以讓你跟web伺服器上的資料庫進行溝通,所以如果你想搭建一個使用者可以登入註冊的網站,這樣的語言正是你需要的。 Webmonkey 是一個優秀的web開發資源網站,裡面有大量的各種web程式語言的指導手冊。 閱讀一下他們的 PHP 初學者指南。 當你感覺差不多了的時候,看看WebMonkeys PHP and MySQL tutorial 學習如何使用PHP跟資料庫互動。 網上最好的要數PHP語言官方的線上文件和函式參考了。 每個知識點上 例如strlen function這個都在後面列出來使用者的評論註釋,這些對於文件的本身是非常有價值的。 我很喜歡PHP,但還有很多其他種伺服器端的指令碼語言你們都可以選擇。

  Web框架:過去數年裡,web開發人員在開發動態網站的過程中不得不一遍又一遍的針對重複遇到的問題寫出重複的程式碼。 為了避免這種每次開發一些新網站都會重複勞動一次的問題,一些程式設計師動手搭建了一些框架,讓框架替我們完成重複性的工作。 非常流行的 Ruby on Rails 框架,作為一個例子,它利用Ruby程式語言,為我們提供了一個專門面向web的架構,普通的web應用程式都能使用它來完成。 事實上,Adam使用Rails開發了他的第一個正式的而且是歎為觀止的!web應用程式,MixTape.me。這就是 他的如何在沒有任何經驗的情況下搭建一個網站。還有一些其他的web開發框架包括 CakePHP 針對 PHP 程式設計者, Django 針對 Python 程式設計中, 以及 jQuery 針對 JavaScript.

  Web APIs: API 應用層序程式設計介面 是指不同的軟體之間相互交換的程式途徑。 例如,如果你想在你的網站上放一個動態的地圖,你可以使用Google Map,而不需要開發自己的地圖。 The Google Maps API 可以輕鬆的讓你通過JavaScript在程式中引入一個地圖到你的頁面上。 幾乎所有的現代的你所知道的和喜愛的web服務都提供了API,通過這些API你可以獲取到他們的資料和小工具,在你的應用程式裡就可以使用這些互動過來的東西了,例如Twitter, Facebook, Google Docs, Google Maps, 這個列表遠不止這些。 通過API把其他web應用整合到你的web應用裡是現在富web開發的前沿地帶。 每個優秀的主流的web服務API都附帶有完整的文件和一些快速入手的指導例如,這個就是 Twitter的。 瘋狂吧。

  命令列指令碼

  如果你想開發一個程式,讓它讀取文字或檔案、輸入輸出一些有用的東西,那麼,命令列指令碼語言將是個不錯的選擇。 然而它並不像web應用程式和桌面應用程式那樣有吸引力和好看的外觀,但是作為快速開發的指令碼語言,你卻不能忽視它們。

  很多的在linux平臺上執行的web指令碼同樣能以命令列模式執行,例如Perl,Python和PHP,所以如果你學會了使用它們,你將能在兩種環境中使用它們。 我的學習道路一直沒離開Peal太遠,我自學Python使用的是這本優秀的線上免費書Dive into Python。

  如果成為一個Unix高手也是你學習的目標,那麼你絕對要精通bash這個指令碼語言。 Bash是Unix和Linux環境下的一種命令列指令碼語言,它能夠為你做所以的事情:從自動備份資料庫指令碼到功能齊全的使用者互動程式。 起初我沒有任何使用bash指令碼的經驗,但最終我用bash開發了一個全功能的個人代辦工作管理員: Todo.txt CLI。

  外掛Add-ons

  如今的web應用程式和瀏覽器都可以通過一些擴充套件軟體來豐富自己的功能。 由於一些現有的軟體,例如Firefox、WordPress越來越受到開發人員的關注,外掛的開發也日益流行,人們都在說But if only it could do THIS

  只要你掌握了HTML,JavaScript和CSS,你就可以在任何的瀏覽器裡開發你想要的很多東西。 Bookmarklets, Greasemonkey user scripts, 和 Stylish user styles這些軟體都是用的更普通頁面一樣的語言寫成的, 這幾個東西都值得你去研究一些。

  更高階的瀏覽器擴充套件程式,例如Firefox的擴充套件,它們可以幫助你很多。 開發Firefox的擴充套件,舉個例子,需要你精通JavaScript和XML一種標記語言,類似HTML,但具有更嚴格的格式。 早在2007年我就寫下來 how to build a Firefox extension, 這是我在笨手笨腳的研究網上的一些學習資料後獲得的成果。

  很多免費的、受歡迎的web應用程式都提供了擴充套件框架,例如WordPress 和 MediaWiki。 這些應用程式都是用PHP寫成的,所以只有對PHP熟悉你才能做這些事情。 這個就是 如何編寫WordPress外掛。 而想駕馭Google Wave前沿技術的開發人員可以從使用HTML, JavaScript, Java, 和 Python 寫小元件和小工具開始。 我寫的第一個Wave bot是跟著這個 一個下午時間的快速入門指導開始的。

  開發桌面上的Web應用程式

  學習程式設計最好的結果是你在一個環境下學的東西可以應用到另外的環境中。 先學習開發web應用程式的好處就是我們有一些方法可以讓web應用程式直接在桌面上執行。 例如, Adobe AIR 是一個跨平臺的即時執行平臺,它能讓你編寫的程式執行在任何裝有AIR的作業系統的桌面上。 AIR應用程式都是由HTML, Flash, 或 Flex 寫成的,所以它能讓你的web程式在桌面環境中執行。 AIR是開發部署桌面應用程式的一個優秀的選擇,就像我們提到過的 10個讓你值得去安裝AIR的應用程式。

  移動應用開發

  能在iPhone或者Android智慧手機上執行的手機應用程式的開發如今正呈現井噴之勢,所以你也可以夢想一下如何在iTunes應用商店裡通過你的天才程式大賺一筆。 但是,作為一個編碼新手,直接奔向移動開發所經歷的學習曲線可能會很陡,因為它需要你熟悉高階的程式語言,例如Java和Objective C。 然而,你當然應該看看iPhone 和 Android 程式設計究竟是什麼樣子的。 閱讀這個 簡單的iPhone應用開發例子 可以初步認識一下iPhone程式的開發過程。 Android 程式都是由Java寫成的,這有一個 簡單的視訊教程教你如何開發第一個Hello Android程式注:可能需要代理才能看這個視訊。

  最後:耐心,刻苦,嘗試,失敗

  好的程式設計師都有一個不達目的誓不罷休的品質,他們會驚喜於通過長期推敲和失敗換來的一點成績。 學會程式設計會有很好的回報的,但是學習的過程可能會是飽受挫折和孤獨的。 如果有可能,最好找個伴一起陪你做這件事。 想精通程式設計,這和其他事情一樣,需要堅持,反覆嘗試,獲得更多的經驗。