怎樣學習一門程式語言

nomasp發表於2015-04-06

選擇一門語言

這裡寫圖片描述

確定你感興趣的領域

你可以開始學習任何程式語言(儘管其中一些被描述地比其他的更加“易學”),你得去問自己自己想用通過學習這門語言完成什麼樣的工作。這將會幫助你確定你應該追求的程式設計方式並且提供一個良好的開始。

如果你想進入Web開發行業,那你將會有一堆語言需要去學習,這和開發計算機程式相反。移動App的開發需要比PC等的開發更多的技巧。所有的這些決定將會影響著你的發展方向。

這裡寫圖片描述

考慮從一個“易學”的語言開始

無論你做了什麼樣的決定,你可能只會希望從一門高水準又易學的語言開始。這些語言對於初學者非常有用,因為它們教授基本的概念和適用於幾乎任何語言的思維過程。

在這種語言中最流行的兩種是Python和Ruby。它們都是使用著易讀的句法的物件導向的Web應用開發語言。

“物件導向”因為著這個語言是圍繞著“物件”、資料收集和操作的概念來打造的。這一概念被用在許多先進的程式語言上,比如C++、Java、Objective-C和PHP。

這裡寫圖片描述

通讀大量語言的基本教程

如果你還不確定你應該開始學習哪一門語言,那麼就去閱讀一些不同語言的基本教程吧。如果一門語言比別的更有意思,那就多去看看是不是真的那樣。在網上對於所有的程式語言有無數個基本教程。

Python——一個非常適合初學者的語言 ,而且當你掌握它的時候它會變得更加強大。被用來開發了許多Web應用、甚至一些遊戲。
Java——被無數個專案所使用,從遊戲到Web應用再到ATM軟體。
HTML——對於任何Web開發者必不可少的起航點。在從事其他一系列Web開發之前掌握好HTML非常重要。
C——最古老的語言之一,它已經是非常強大的工具,也是一些更現代的語言的祖先,比如C++,C#和Objective-C。

從簡單的開始學起

這裡寫圖片描述

學習語言的核心概念

雖然這一步中適合的部分將取決於你所選擇的語言,但所有程式語言都有對建立有用的程式至關重要的基本概念。儘快的學習和掌握這些概念,將會使你更容易地解決問題和建立強大而有效的程式碼。下面只是一些在不同語言中的核心概念:

變數——一個變數就是一個去儲存和應用以改變程式碼片的方式。變數可以被操作,並且經常被定義成“整數”、“字元”,還有其他的確定可以儲存的資料型別。進行編碼時,變數通常具有讓它們對於我們有種某種含義的名稱。這樣一來我們就容易理解該變數如何與其餘的程式碼進行互動了。

條件語句——條件語句是基於條件是否為真的一種行為。對於一個條件語句最常見的形式是“如果-那麼”。如果這個條件為真,那麼就有一件事發生,如果條件為假,那麼就會發生另一件事情。

函式或子例程——這個概念的實際名稱可能取決於不同的語言。它也可能被叫做“過程”、“方法”或是“可返回單元”。它本質上是一個大程式中的一個小程式。一個函式可以被別的程式“呼叫”多次,執行程式設計師去有效的建立複雜的程式。

資料輸入——這是在幾乎所有語言中都使用的一個寬泛的概念。它涉及到處理使用者的輸入以及儲存這些資料。這些資料怎樣收集則取決於程式的型別以及對於使用者的可用的輸入方式。它和關於顯示在螢幕上還是列印在檔案上的輸出有著精密聯絡。

這裡寫圖片描述

安裝一些有必要的軟體

許多的程式語言都要求有被程式設計師設計來講程式碼轉換成機器能理解的語言的編譯器。其他一些語言,比如Python,使用可以立即轉換成程式而不需要編譯。

一些語言有自己的往往包含著程式碼編輯器、偵錯程式和/或者翻譯以及除錯的IDEs(整合開發環境)。這些程式設計師在同一個地方去執行任何必要的功能。IDEs可能還包含著包含物件層次結構和目錄的視覺化介面。

在網上有許多的程式碼編輯器可以用。這些程式都提供不同方式的語法高亮和提供其他開發人員友好的工具。(譯者推薦用Emacs)

建立你的第一個程式

這裡寫圖片描述

每次只專注於一個概念

幾乎學習任何語言時被教的第一個程式就是“Hello World”。這是一個僅僅在螢幕上顯示“Hello,World”的簡單程式。這個程式教會初學者一些簡單的語法來建立一個可以運作的基本程式,以及如何處理顯示輸出。通過改變文字,你還可以學習到這些基本資料是怎樣被程式處理的。

這裡寫圖片描述

通過線上示例的片段來學習

在網上幾乎每個程式語言都有數以千記得線上程式碼示例。用這些例子來學習不同部分如何與語言協同工作,以及各個部分之前的差別。用這些在不斷示例中取得的碎片來建立你自己的程式。

這裡寫圖片描述

檢查語法

語法就是一門語言被寫得讓編譯器或解釋權能夠理解的方法。每種語言都有自己獨特的語法,雖然有些元素可能在不同的語言中共享。學習語法對於學習怎樣程式設計是非常重要的。在現實中,它只是更高階的概念賴以建立的基礎。

這裡寫圖片描述

試驗性的更改

對你的示例程式做些修改,然後測試結果。通過試驗你可以學到什麼有用、什麼沒用,這比多閱讀一本書或指南在任何時候都要快得多。不要害怕破壞了你的程式,學習去修復錯誤是任何開發過程中最重要的一步,並且新的事物永遠不可能在第一次就正確執行。

這裡寫圖片描述

開始練習除錯

當你在程式設計時,你總會碰到bug。它們存在程式中,並且可能隨時隨地的出現在程式中的任何一個地方。漏洞可能會破壞程式,或者只是讓程式不能編譯/執行。捕捉和修復這些錯誤在軟體開發週期中這是一個主要的過程,所以要早早地習慣於這麼做。

當你快要修改程式時,你可能會碰到它們不能運作的情況。想辦法弄清楚,並且採取不同的方式來解決,這將會成為你作為一個程式設計師最寶貴的技能之一。

(已經2點半了,明天再譯。)

這裡寫圖片描述

給所有程式碼新增註釋

幾乎所有程式語言都有一個允許你包含未被直譯器或編譯器處理的文字的“註釋”功能。也就允許了你可以留下短小但清晰的關於這段程式碼是用來做什麼的人類語言的解釋。這將不僅僅幫助你記住你的程式碼在這個大型程式是做什麼的,在協作環境中因為它允許其他人也能夠明白你的程式碼是做什麼的,所以也是非常重要的做法。

不斷練習

這裡寫圖片描述

每天都要敲程式碼

花大量的時間對於掌握一門語言是最重要的。即便是像Python這樣的簡單語言,它可能也要畫上一兩天去了解它的基本語法,花大量的時間才能真正精通。想任何其他的技巧一樣,練習是變得更加嫻熟的關鍵。儘量每天都要花一些時間去敲程式碼,即便是在工作之後和晚餐之前的一小時。

這裡寫圖片描述

給你的程式設定目標

通過設定能夠實現但又有挑戰性的目標,你將能夠開始解決問題並拿解決方案。嘗試著去設想去一個基本的應用程式,比如一個計算器,然後想辦法去做出來。使用你一直學習的語法和概念,然後將它們應用到實際中。

這裡寫圖片描述

和別人交流並且閱讀他人的程式

有很多程式設計社群致力於特定的語言或學科。找到並參與到這些社群會為你的學習創造奇蹟。你將會獲得能夠幫助你的學習過程的各式各樣的示例程式碼和工具。通過閱讀他人的程式程式碼不僅可以激勵你,還可以幫助你回憶那些還沒有掌握的概念。

為你所選擇的程式語言找到論壇或線上社群。確保自己是真正參與進去而不是不斷地問問題。這些社群往往看著做協作和討論的地方,而不僅僅是簡單的提問-回答問題。請隨時尋求幫助,但要準備好你的程式以及嘗試用不同的途徑。

一旦你已經有了一些經驗,可以參加一些程式設計的活動。這些活動是個人或團隊爭分奪秒的開發功能的程式,通常會圍繞一個特定的主題。這些事情都很好玩並且是一個認識其他程式設計師的很好的方式。

這裡寫圖片描述

挑戰自己並保持樂趣

去嘗試著做一些你現在還不知道怎麼做的事情。研究該怎樣完成這個任務的方式,並且不斷的將它們新增到你的程式中。一定要儘量避免勉強能執行的程式,你應該讓各個方面都很完美。

分享你的知識

這裡寫圖片描述

參加一些培訓課程

許多的大學、社群學院、社群中心都提供了你可以參加的程式設計課程和工作室,而無需在學校註冊。這裡對於新手程式設計師是很有裨益的,因為你可以從其他有經驗的程式設計師那裡得到幫助,或者你也可以通過網路和其他地方的程式設計師一起交流。

這裡寫圖片描述

買或者借一本書

有成千上萬種你所能想象出的所有語言的教學書籍。雖然你的知識不應該全然來自一本書,但它們會給你提供許多的參考,而且往往內涵了大量友好的示例。

這裡寫圖片描述

學習數學和邏輯

大多程式設計都涉及了基本的算術運算,但可能你想要學習更先進的概念。如果你想寫出複雜的模擬或者演算法級別程式,這將是非常重要的。對於大多數日常程式設計而言,你並不需要太多先進的數學知識。但學習邏輯,尤其是計算機邏輯,將能幫助你理解處理更先程式序的複雜問題的最好方式。

這裡寫圖片描述

永遠不要停止程式設計

有一個流行的理論,成為一名專家至少需要10000小時的練習。雖然這個理論還處於辯論中,但它內含的原則永遠是正確的:精通需要時間和奉獻精神。不要指望一夜之間你就能學會一切,但如果你保持專注,並且不斷的學習,很快你就會成為你的領域裡的專家。

這裡寫圖片描述

學習另一種程式語言

雖然你可以僅僅精通一門語言,但許多的程式設計師通過學習多種語言來提高在其領域內成功的機會。它們的第二或者第三個語言往往和第一個語言相輔相成,這就能幫助他們去寫出更加複雜和有趣的程式。一旦你掌握了你的第一個語言,你就有時間來學習第二個語言。

你可能會發現第二個語言會學的比第一個更快。那是因為許多的核心概念對於多種語言都是相通的,尤其是如果這兩個語言本身就是密切相關的。

應用你的技能

這裡寫圖片描述

參加一個四年的課程

雖然這並非絕對需要,但在學院或大學的四年學習可以讓你見識到各種不同的語言,你可以在網路上和專業人士或者其他學生交流。這種方法不一定適合所有人,並且很多成功的程式設計師都沒有在一個耗時4年的機構學習。

這裡寫圖片描述

建立自己的程式碼庫

當你在建立程式並且不斷擴充你的知識時,確保你所有最好的程式都儲存自己的程式碼庫中。你可以把這個展示給招牌和麵試官看你所做的工作。確保這包含了你所有時間的工作,並且確保你可以用這些程式給給另一家公司做任何工作。

這裡寫圖片描述

做一些外包兼職工作

對於程式設計師來說有非常大的自由職業市場,尤其是移動App開發。帶上幾個小的外包兼職去感受一番商業程式設計是如何運作的。通常境況下你可以用外包兼職的工作來幫助你建立程式碼庫,並且這將有益於新的作品。

這裡寫圖片描述

開發你自己的免費程式或商業軟體

你不必為一家工作來換取金錢。如果你有能力,完全可以獨立開發軟體並且讓其免費,通過你自己的網站或者其他的市場。準備好提供為你的商業軟體做技術支援,因為你的客戶希望它們能完好的工作。

免費軟體是一種釋出小程式和應用程式的流行方式。開發者不會收到任何款項,但會幫助你建立知名度以及讓自己在社群中有一定聲望。

(譯者注:翻譯完畢,其實更多的是可以感受到中外的軟體行業的諸多差異,同時也歡迎交流。)



感謝您的訪問,希望對您有所幫助。

歡迎大家關注或收藏、評論或點贊。


為使本文得到斧正和提問,轉載請註明出處:
http://blog.csdn.net/nomasp


相關文章