親愛的tl80,關於如何學習程式碼,我已經決定試一試。問題是,我不知道從哪裡開始。對我這樣的初學者來說,最好的程式語言是什麼?
簽名,可能是編碼員
親愛的,這可能是初學英語的人最常問的問題之一,也是教育工作者爭論的問題。問題是,你可以問十個程式設計師什麼是最好的語言,讓你的腳濕,你可以得到十個不同的答案有成千上萬的選擇。你開始使用哪種語言,不僅取決於它對初學者的友好程度,還取決於你想從事的專案型別,你為什麼對編碼感興趣,也許還取決於你是否想過以此為生。以下是一些考慮和建議,以幫助您做出決定。
取決於你想做什麼或做什麼,你的選擇可能已經為你準備好了。例如,要建立一個網站或webapp,你應該學習HTML和CSS,以及JavaScript和PHP的互動性。如果你的重點主要是/僅僅是構建一個移動應用程式,那麼你可以直接學習Objective-C for iOS應用程式或者如何使用Java for Android(以及其他東西)程式設計。
如果你想超越一個特定的專案或專業,或者想學習一堆語言,最好從學習程式設計的基本概念和如何“像程式設計師一樣思考”開始。這樣,不管你的第一門程式語言是什麼,你可以將這些技能應用到學習新技能上(可能只需21分鐘)。甚至孩子們的編碼應用程式也可以從一開始就很有用。例如,我上的第一門正式程式設計課程(除了四年級的基礎課程)是哈佛大學的CS50,你可以免費選修。馬蘭教授從Scratch開始這門課程,Scratch是一個為孩子們設計的拖放式程式設計環境,它教你編碼基礎知識和邏輯,同時幫助你創造一些很酷的東西,然後他繼續教你C。
多年來,我們為學習程式碼提供了其他一些優秀的資源,例如互動式課程Codecademy,但即使使用這些資源,您仍然需要選擇從哪種語言開始。因此,讓我們看看比較流行的語言和最推薦的入門語言之間的區別。
大多數“主流”程式語言,如C、Java、C#、Perl、Ruby和Python,都可以完成與其他語言相同或幾乎相同的任務。例如,Java可以跨平臺工作,用於web應用程式和applet,但是Ruby也可以做大型web應用程式和Python應用程式,類似地執行在Linux和Windows上。soaworld指出,由於許多語言都是以彼此為模型的,因此使用它們的語法或結構通常幾乎相同,因此學習一種語言通常有助於學習其他語言。例如,要列印“Hello World”,Java和C#在語法上類似於Perl和Python:
然而,它們的不同之處在於設定和進入的容易程度。SOA世界繼續:
嘿,順便說一句,如果你仔細看這些例子,你會發現有些是簡單的,有些是複雜的,有些在行尾需要分號,而有些則不需要。如果你剛剛開始程式設計,有時最好選擇沒有很多語法(或邏輯)規則的語言,因為這樣可以讓語言“走出自己的路”。如果你曾經嘗試過一種語言,並且真的很難適應,那就試試更簡單的一種吧!
下麵是最流行的程式語言的快速比較:
C語言是應用最廣泛的程式語言之一。這有幾個原因。正如著名的程式設計師和作家喬爾斯波爾斯基所說,C對於程式設計來說就像學習基本解剖學對於醫生一樣重要。C是一種“機器級”語言,所以你將學習一個程式如何與硬體互動,併在最低硬體級別學習程式設計的基本原理(C是Linux/GNU的基礎)。你學習了除錯程式、記憶體管理、計算機如何工作等高階語言(如Java)所沒有的知識,同時也為你編寫其他語言的高效程式碼做好了準備。C是許多其他高階語言的“祖父”,包括Java、C#和JavaScript。
也就是說,與其他語言相比,C語言的編碼更嚴格,學習曲線更陡,如果你不打算開發與硬體介面的程式(例如,使用裝置驅動程式或作業系統擴充套件),學習C語言將增加你的學習時間,也許是不必要的。Stack Overflow對C和Java作為第一語言進行了很好的討論,大多數人都指向C。然而,就我個人而言,雖然我很高興接觸到C語言,但我認為它不是一種非常適合初學者的語言。它會教會你紀律,但在你做任何有用的事情之前,你必須學很多東西。而且,因為它太嚴格了,你可能會像這樣沮喪:
Java是第二流行的程式語言,也是斯坦福大學著名的(免費的)CS程式設計入門課程中教授的語言。java強制使用現代語言中的面向物件的原理(OOP),包括C++、Perl、Python和PHP。一旦你學會了Java,你就可以很容易地學習其他OOP語言。
Java具有使用歷史悠久的優點。有很多“樣板”的例子,它已經教了幾十年了,它被廣泛用於許多目的(包括Android應用程式開發),所以它是一種非常實用的學習語言。你不會像使用C那樣獲得機器級的控制,但是你可以訪問/操作最重要的計算機部分,比如檔案系統、圖形和聲音,這些都是可以在任何作業系統上執行的非常複雜和現代的程式。
許多人推薦Python作為最好的初學者語言,因為它簡單但功能強大。該程式碼易於閱讀,並強制執行良好的程式設計風格(如縮排),而不必對語法過於嚴格(如記住在每行末尾新增分號)。Ariel Computing的Patrick Jordan比較了用各種語言(BASIC、C、J、Java和Python)編寫簡單指令碼所需的時間,並確定不應忽略其他語言,Python:
需要更少的時間、更少的程式碼行和更少的概念來達到給定的目標。[…]最後,用Python程式設計很有趣!有趣和頻繁的成功培養了學生的信心和興趣,這樣學生就可以更好地繼續學習程式設計。
SOA說Python對於那些想熟悉Linux(或者已經熟悉Linux)的初學者來說是絕對必須的。由於Pinterest和Instagram等熱門網站的廣泛採用,Python的受歡迎程度今天也在迅速上升。
JavaScript(與Java關係不大)需要最少的設定,因為它已經內建在web瀏覽器中。O'Reilly Media建議您從JavaScript開始,因為它有一個相對寬容的語法(您可以用JavaScript鬆散地編寫程式碼),您可以從程式碼中立即看到結果,並且您不需要很多工具。在我們自己的“學會編寫程式碼”夜校中,我們使用JavaScript向您展示變數和函式如何工作等基本知識。如果你想為web**很酷的互動式東西,JavaScript是一項必備技能。
最後一個要考慮的問題是,你是否願意把編碼作為一種愛好,變成一種職業。Dev/Code/Hack分解了不同的工作角色以及您應該為他們學習的技能:
後端/伺服器端程式設計師:通常使用以下幾種語言之一:Python、Ruby、PHP、Java或.Net。有資料庫知識。可能有一些系統管理知識。
前端/客戶端程式設計師:HTML、CSS、JavaScript。可能有設計技巧。
移動程式設計師:Objective-C或Java(對於Android)。移動網站的HTML/CSS。可能具有伺服器端知識。
3D程式設計師/遊戲程式設計師:C/C++,OpenGL,動畫。可能有很好的藝術技巧。
高效能程式設計師:C/C++,java。可能有數學或定量分析方面的背景。
不過,最終沒有一種方法可以開始學習程式碼。最重要的是透過“撓癢癢”來學習基礎知識,也就是說,透過解決你想解決的問題或你想建立的東西來學習。正如程式設計很糟糕的部落格所說:
你學的第一門程式語言可能是最難學的。選擇一些小而有趣的東西讓這少了一個挑戰,多了一個冒險。從哪裡開始並不重要,只要你繼續寫程式碼,繼續讀程式碼。也別忘了測試一下。一旦你有了一門你滿意的語言,學會一門新的語言就不是什麼了不起的事了,你會在學習的過程中學到新的技能。
一旦你決定了,前面提到的便當將建議你需要的資源和課程後,你已經學習了你的第一語言。
愛你,生活駭客
有了幾十種行業標準程式語言和數百種其他活動語言來考慮,挑選最好的程式語言學習可能會很困難。如果你要投入數千小時的時間學習和實踐,你希望結果是值得的。 ...
...題。對於初學者來說,這兩種語言都很簡單。但也許你對先學哪種語言有點困惑。如果你傾向於魯比,這裡有一個偉大的嬰兒步驟,你可以採取。 ...
... 我應該用JavaScript在我的應用程式中編寫程式碼,還是應該使用類似的框架節點.JS還是快車?我應該使用Python、Scala還是Ruby進行開發?C還是C++?哪種框架最好?對於資料庫...
...地方開始。對很多人來說,最棘手的事情是知道在哪裡。我應該使用哪個遊戲引擎?我應該學習程式語言嗎?如果是的話,哪種程式語言最適合遊戲開發? ...
Synology提供了過多的NAS型號可供選擇,但如果您不確定所有的區別是什麼,那麼選擇可能會有點令人眩暈。以下是一些你應該知道的事情,以幫助你縮小你的理想選擇。 我們是滑學NAS產品的大粉絲,主要是因為它們非常容易設...
就像音樂一樣,環繞聲平臺有多種標準。大多數高階家庭音響系統支援的兩大系統是杜比數字和DTS(標準所有者的縮寫,最初稱為數字影院系統)。但是這兩者有什麼區別呢? 什麼是杜比數字和dts(dolby digital and dts)? 杜比和DTS...