編程初學者學什麼語言好?


高中剛畢業就開始學習,我覺得是一個很不錯的開端!正因如此,還請認真考慮大家的意見, 選擇合適的入門語言。

先強調:

1. 語言只是工具,假以時日,你都會熟練掌握一門/多門語言。

2. 編程語言用以表達你對計算機的理解,表達你的想法,所以解決問題的思路及方法更為重要。

3. 進入計算機的大門,你會發現天地很廣。現在多多了解,拓展視野,也很重要

4. 推薦使用Linux,可以從Ubuntu開始。一定要熬過一開始的痛苦時期。

5. 千里之行,始於足下。1w小時定律等。

@Joker Qyou的答案很受推薦,但我覺得不大適合初學者,那張圖片的"根"是:What programming language should I learn (next)?我覺得它更適合 "next"。

如果讓我重來,我會選擇C和(或者)Python。

Python語法和庫更豐富,上手更容易,使用更方便。

C簡單直接,學習成本不高,貼近底層,能幫助了解底層細節.

學習語言是簡單的,語言是工具,使用好工具是一方面,其他各種領域知識也是很重要的另一些方面。高中畢業後沒事刷OJ應該是蠻適合的吧,正好把演算法和編程語言練好。到了大學後,如果是我重來,我會:

1. 不放過學校的基礎課程。

2. 做ACM演算法題,混各種OJ。

3. 使用Linux。

4. 參加各種編程方面的活動。

(2014-12-23註:當時淺見,現在自己讀著臉紅,求輕拍--||)

(2015-05-11註:猶豫刪答案,還是留著吧,然後再改改。本次改動設計標題、精簡文字。或許過段時間會再猶豫刪答案。)


Javascript!原因如下:

  • 非常容易獲得,你無須下載安裝和配置開發環境,只要你使用瀏覽器,這一點我想對任何人都不存在問題。

  • 非常容易學習,只要有一個HTML頁面就可以,主流的瀏覽器都帶有調試器,你可以輕鬆調試。甚至不需要HTML頁面,你可以直接在瀏覽器的命令行中編寫Javascript代碼,來了解它們的功能與使用方法。而所有這一切,你不需要編譯運行等過程,你馬上就可以看到結果。

  • 語法特性好,在這一點上絲毫不比Ruby,Python等語言差。你可以把它看作是披著C外衣的Lisp——所有這些動態語言的老祖宗。它們在語言特性上並沒有超出Lisp很多。基本的Javascript在基礎庫上不太佔優,並不好用,但是引入各種外部庫非常容易,你不需要把這個庫下載下來,只要把它們在網上的鏈接添加到你的HTML頁面中就可以。

  • 用途非常廣泛,它已不僅僅是瀏覽器上的腳本語言了,nodejs,cocos2ds,phonegap等,你可以把它用於任何地方,解決任何問題。

  • 你有機會認識JQuery這個神器,很多複雜問題可以用一行代碼輕易的解決,妙不可言。

當然Javascript不一定滿足老闆的需要,但它並不會阻擋你學習其它語言的路。實際上,當你寫出第一個JavaScript應用時,你已經掌握了很多編程的基本原理,而這些基本原理對學習任何語言都是有幫助的。


Python 和 CoffeeScript 對新手比較友好, 如果有野心不怕困難那學 C 去..


另外,可以關注一下各種編程語言的流行趨勢。

PS:經過@OurDearAmy 的提醒,找了一下,圖的出處貌似是這裡: http://horstmann.com/hcmut/proglang2/introduction/#(1)

如果有哪位知友知道確切出處的,請提醒一下,方便註明,謝謝!

Update:

感謝@yskin 的提醒,

原圖出自 http://streamhead.com/what-pro... ,2011年2月8日發表。作者說他是看了《Seven Languages in Seven Weeks》這本書後做了這個圖。

原圖在:http://www.streamhead.com/wp-content/uploads/2011/02/what_programming_language_to_learn.png


要做專業開發者,C是跳不過的,門檻高但是之後受用無窮;要是只是為了實現一些功能,python最好了,上得web,下得腳本,畫得了gui,當得了伺服器,語法簡單還什麼平台都支持,居家旅行之必備。


你去找些你聽說過的語言的 hello world 的例子,對比一下,看哪個的語法你覺得順眼就學哪個,學好學精。高中剛畢業,還有時間玩玩。

平台?以後?專業?那是以後的事了,如果你堅持走技術路線的話。

語言這東西,哪有先學哪個後學哪個這種扯淡的標準的?

不可否認,不同語言的哲學思想不同,會讓對人有影響,但那也只是影響。你不會以後只用這門語言吧?

等你學的語言多了,單一編程思想對你的影響會降低。

如果你只專研一門,那你以後要麼是大師,要麼是打醬油的。

相信我,如果你堅持走技術路線,你以後不可能只會一門語言的。

so~~~

誰會去規定必須得先學英語再學法語、德語、西班牙語?我喜歡拉丁語就先學拉丁語不行?


我兩年前就這個問題在CSDN寫過一篇文章《第一門編程語言選誰? 》,其中有些內容過時了,有時間的話我會再更新這篇文章。簡而言之,基本原則是:作為編程初學者,選擇的編程語言一定要能引發自己興趣的,能讓自己把精力集中於解決一個有趣的問題上,而不是在語法細節上折騰來折騰去。


2015年2月編程語言排行榜,JS排名創歷史紀錄

JavaScript不斷走強。本月它超過了php,現在的位置排
名第六。另外,Objective-C的日子似乎已經結束。一年時間,Objective-C份額下降超過5%。現在排到第四的位置,在C++之後。
Objective-C之前排在第三位的位置長達超過2.5年。

以上資源來源於DevStore

編程語言的排行只是一個參考,每個編程語言有自己的特點,選擇自己喜歡擅長的語言就是最好的,最基本的學好英語,英語是基礎。


對於初學者,應該:

  • 從語法語義簡單的語言入手。這能排除一大波語言,尤其是C++,巨坑,嚴重不推薦。
  • 能快速上手做實踐。沒有看到成績,你很難有動力繼續學下去;沒有實踐,你學了很快也忘掉。

個人推薦C,奠基性的語言,很多後來語言的語法都是借鑒它的。至於實踐入手,推薦Arduino配合。花個200、300就能買到一組器材,上手很容易,有很多實驗可以做,容易培養興趣,水平夠的話還可以給生活中添些實用小玩意(定時澆花、餵魚……),一舉兩得。

我看到有人推薦Lisp系的,這是另一大奠基性的語言。不過Lisp雖然語法簡潔,但背後的思想是很深邃的,有些東西你如果沒有學過相關科目(數理邏輯等),可能不一定能理解。我一直覺得,如果只是囫圇吞棗學一下,不知其所以然,其實等於只學到一半。


最適合初學者的編程語言

這個講的很不錯,不是直接說學什麼好,把為什麼初學學這個語言的邏輯講得也很清楚。


世界上一共有多少種編程的語言?我們先試著數一下:Java, C, Python, VB, Matlab, Fortran, LabVIEW…只是隨便一說,就脫口而出這麼多如雷貫耳的編程語言。

然而我們的時間和精力終究是有限的,充其量只能把少數幾種語言學的精通,那麼究竟學習哪種編程語言最好呢?這裡基於TIOBE編程語言排行榜詳細分析一下

TIOBE 編程語言社區排行榜是互聯網行業內一個著名的網站。它每個月更新一次,給出編程語言的流行趨勢。排名採用著名的搜索引擎例如谷歌、MSN、雅虎、維基百科、YouTube等進行計算。

這個排行榜可以用來查你的編程技能是否與時俱進,也可以在學習新編程語言時作為一個選擇依據。(以下軟體logo來自網路,表格數據來自TIOBE Index | Tiobe)

1. 編程語言排行榜Top20榜單

表中第一列是目前最新的排名,第二列是一年前的排名,第三列是目前跟一年前相比排名的變化趨勢。

第1名:Java

Java是編程語言的頭牌紅人。它是一門面向對象的編程語言,簡單易用、開源免費、語言結構嚴謹、運行效率高,適合快速開發網站。利用這些優勢,它在第一次互聯網浪潮興起時,成功地抓住了大趨勢,站上了風口。

Java在計算機史上影響深遠,它在吸收C++語言各種優點的同時,摒棄了C++里複雜的指針、繼承等概念。它能很好的實現靜態面向對象編程,並可以把複雜的編程用優雅的方式表現出來。

第2-4名:C/C++/C#

C語言通過幹掉晦澀的彙編語言上位,贏得了當時程序員的歡心。因為出名較早,許多C語言程序在企業或研究所裡面一直默默的傳承,至今還有很多人使用,真是出名要趁早啊。

用C語言編寫較複雜程序時,程序員需要考慮的東西很多,很容易出錯、效率也比較低,於是就產生了C++。C++在C的基礎引入了對象的概念,但代價是增加了編譯器的複雜程度。

Java的崛起意味C和C++的日漸衰敗。為了和Java相抗衡,微軟公司新推出了C#。那個#號看起來像不像四個+號?暗示C#是把C++升級到C++++。C#和Java類似,是面向對象的高級程序設計語言,繼承了C/C++的許多方面的特點,同時去掉了一些C/C++的複雜性。

第5名:Python

Python是一顆耀眼的新星,是當前腳本的標準。Python很容易學習,因此無處不在使用它。它是一種代表極簡主義的語言,有非常簡單的語法。使你把精力集中於解決問題,而不是去編程本身。在科學計算方面,Python在性能和方便程度上,大有取代Matlab地位的趨勢。

第6名:PHP

PHP的中文名叫做超文本預處理器,是一種通用開源腳本語言。PHP 獨特的語法混合了C、Java、Perl以及PHP自創的語法,可以更快速地執行動態網頁。PHP使用廣泛,主要適用於Web開發領域。

第7名:JavaScript

第一次接觸Javascript的時候,還以為它是Java的變種呢。其實,Java與JavaScript是由不同公司開發的不同產品。Java是SUN公司推出的面向對象的網路程序設計語言,適合開發網路應用程序。而JavaScript則是Netscape公司為了擴展瀏覽器的功能而開發的產品。JavaScript是一種網路腳本語言,常用來為網頁添加各式各樣的美觀瀏覽效果和動態功能,被廣泛用於Web應用開發。

第8名:Ruby

Ruby是一門年輕的、面向對象編程和面向對象程序設計的腳本語言。近年來發展迅猛,號稱有取代頭牌紅星Java的趨勢。Ruby和Perl及Python兩類語言屬於一個大類,與C,C++,C#,java是不同大類。

第9名:Perl

Perl 被認為是一種擁有各種語言功能的夢幻腳本語言。最重要的特性是內部集成了正則表達式的功能。Perl追求的是也是極簡主義,解決一般的問題它用幾行代碼就可以完成,稍複雜的問題代碼也不會超過一屏。但正因為Perl的靈活性,許多Perl程序的代碼令人難以閱讀。

第10名:Visual Basic .NET

Visual http://Basic.NET是基於微軟.NETFramework之上的面向對象的編程語言。Visual Basic .NET語法特點是以英文單詞為基礎標識,以及與自然語言極其相近的邏輯表達。

2. Top21-50編程語言排名

下面是排名20到50的編程語言:

3. Top50-100編程語言排名

下面是排名50到100的編程語言,那畫面太多我不敢看:

(Visual) FoxPro, 4th Dimension/4D, ABC,ActionScript, APL, Avenue, BBC BASIC, bc, Bourne shell, C shell, cg, CL(OS/400), Clojure, Common Lisp, cT, Elixir, EXEC, Forth, Hack, Icon, IDL,Inform, Io, J, Julia, Korn shell, Mathematica, Mercury, ML, Moto, MQL4, MS-DOSbatch, NATURAL, NXT-G, OCaml, OpenCL, Oz, PL/I, PostScript, PowerShell,Programming Without Coding Technology, Pure Data, Smalltalk, SPARK, Stata, Tcl,thinBasic, Verilog, VHDL, Z shell

4. 編程語言排名的長期趨勢

(1) 排名前十名編程語言的熱度

我們先看一下目前排名前十名的編程語言近15年的熱門程度。

Java和C語言牢牢把握住了排名前兩位,並把其它語言遠遠甩在後面。2005年的時候,C語言一度超越了Java成為第一,然而也就是一眨眼的功夫,C語言又被重新反超。相同的事情發生在2013年和2015年。

C++在十幾年前,和前兩名的Java及C語言都有得一拼,然而在2005年時,它跌入了第二軍團,且十幾年沒有翻身。

(2) 編程語言排行榜每年的年度冠軍

想一直霸佔排行榜榜首,難度有點大,也說明編程軟體競爭激烈,更新換代非常快。

這張圖大概反映了編程語言的演化歷史,Ruby被不少人看好。

(3) 目前排名前十名編程語言的崛起歷史

Java在1996年崛起,並在幾年間迅速攀升至第一。C和C++語言是老牌強者,一直被追趕,只被Java超越過。C#仍然沒有追趕上Java的腳步。Python在2001年崛起。

再看看曾經的強者Lisp和Ada,目前排名已跌出了前20名。在互聯網界里,逆水行舟,不進則退啊。

5. 科學計算的編程語言

最後,讓我們看看適合科學計算的編程語言的排行情況。

(1) 科學計算中最熱門的兩種編程語言里,Python目前排名第5,遠超Matlab,也許是因為Python不光可以用來科學計算還可以干別的。Matlab排名只在18,是時候該學點Python了!

(2) 適合做統計的編程語言中,R語言不出意外上榜了。R內置多種統計學及數字分析功能,且繪圖時可直接加入數學符號,比其他統計學編程語言有更強的面向對象功能。

另外上榜的還有統計三劍客軟體之一的SAS,至於三劍客之二的SPSS和State沒上榜也許是因為它們只是界面操作。

(3) C和Fortran這哥倆,編程語句不如Python和Matlab簡潔。但大學課程里,一般會把他倆作為編程課的第一門語言,所以熟悉它們的人最多。

很多老一輩都用這個編程,可能工作第一天的時候,老前輩們會扔你一個C或者Fortran寫的千行甚至萬行代碼。我猜你是不會閑的蛋疼把他們翻譯成Matlab語句的(有那個時間不如去看歡樂頌呢),只能在前輩們的C或Fortran基礎上繼續發揚光大。

C除了做科學計算之外還可以干點別的,因此總排名一直在前面,而Fortran只能做科學計算,已經被其他科學計算軟體遠遠拋在了後面。當複合型人才的重要性啊。

(4) 不過呢,請注意上面排行榜只是反映某個編程語言的熱門程度,並不能說明一門編程語言好不好,或者一門語言所編寫的代碼數量多少。

沒有最好的編程語言,只有最適合自己、最適合待解決問題的編程語言。

ps, 如果對計算編程中的經驗、教訓或者好玩的東西感興趣,可以關注我的微信公眾號「科學計算編點程(kexuebc)」哦,每天推送一條實用小技巧。

例如:你一定要知道的十款主流畫圖軟體,淡定的工作從畫出高品格圖片開始


javascript 直觀 簡單 容易懂。

也不需要IDE。打開個記事本就能寫個小遊戲。還能再瀏覽器里跑。

可以向朋友炫耀。

可以做網頁遊戲外掛腳本。自動打怪。

語言風格和java很像,學了他就不用害怕java了。

表示數據的方式簡潔明快。叫做JSON。而且還是業界標準。

而且。。。這貨是函數式編程語言。寫幾個函數就能把它當LISP用了。巨牛比。


還是C語言吧。把C啃下來,學習其他的應該問題不大,這段時間一直感覺到C它真的很強大。


Python 學習編程的樂趣, 當然, 程序運行效率不夠, 但至少寫出個程序了. 徐圖發展


遙想當年剛上大學時,學校教的C(非計算機專業),譚浩強的教材,一學期下來連「Hello World」都不會(根本就不知老師在說什麼)。

一年後自己想自學編程,買了本老譚的QBASIC,總算入了點門,順序分支循環算是弄明白了,能打個圖像做點簡單運算什麼的。

先學QBASIC入門,產生興趣,入了門以後可以學http://VB.net,不過從面向過程轉向面向對象時會很迷糊。學.net平台的好處是可以很快做出些小東西激勵自己,而且市場廣闊。

我現在用C#,感覺C#的語法不是很適合初學者。


C比較好,現在大學(不論國內國外)一般以C為第一門語言教授,當然也有些改成了python,但是個人還是覺得從C開始最合適。

go用戶群太小,visual basic慢慢在退出江湖吧...objective-c和c很接近了,可以學一段時間c轉到objective-c上去...


C


先學一門入門簡單的,能出東西的。培養自己的信心。例如vb,Python.等等。

然後正式的學。從c開始,了解感受下高級語言與彙編的轉換,感受下指針,感受下電腦的真實面貌。然後學習C++,或者JAVA,C#這類,強類型,強約束語言,體會下軟體工程,多人協作。這類語言是當今it行業的支柱。接下來再學習下Python,ruby這類自由的腳步語言。結合前面的c++,體會下自由與約束的平衡。。接下來,再玩玩JavaScript,其它小眾語言,拓展自己的編程思想。

接下來,選一個和自己投緣的語言深入下去,包括該語言的常用庫。這時編程就開始上路了。接下來就是體會編程的哲學。。。什麼unix編程藝術,代碼整潔之道,代碼大全等等。之後,你寫的代碼就可以入眼了,也可以持續的維護和發展了。


C#吧,那玩意簡單,把這個玩溜了再看別的


來自:《如何成為一名黑客》(全文在此:http://goo.gl/b9zyw)

問:我該從那種語言學起?

答:HTML——如果你還不懂的話。市面上有一大堆的封面精美,宣傳得天花亂墜的 糟糕的 HTML書籍,不幸的是很少有好的。我最喜歡的是 HTML: The Definitive Guide。 但 HTML 不完全是一種編程語言。當你準備開始編程時,我推薦從 Python起步。 你會聽到一大群人推薦 Perl,並且 Perl 依然比 Python 流行得多,但是 難學得多且(以我之見)設計得不是很好。 C 確實重要,但它要比 Python 或 Perl 難多了。不要嘗試先學 C。 Windows用戶不要滿足於 Visual Basic。 它會教給你壞習慣,而且它不可以移植,只能在Windows下運行。避免它。

@pansz


推薦閱讀:

零基礎如何選擇並自學一門編程語言?
從學習一門語言到會開發網站大約需要多少時間?
一個編程語言有可能自己解釋自己嘛?
突然想到,如果新手們像職業電競選手一樣學編程的話,即使天賦不行是不是也能超越大部分人?
設計一個新的編程語言後,如何實現它?

TAG:程序員 | 編程語言 | 編程 |