2017你覺得未來五年最具前景的一門編程語言是什麼?
Java、 c、 c++ 、python 、go 、js 、swift ...等等語言 ,未來幾年內 ,學哪個更容易找工作。
更新下,我知道每門語言都有各自的優缺點,需要不斷學習,但是很多新人會在學第一門語言上糾結,所以我想問的是第一門學習的語言學什麼好(除C之外的)。假如搞Web後端開發 JAVA Python GO 都是可以的 但是你不可能一口氣就把三門都學了吧 至少得先掌握一門 找到工作看情況再學習點其他什麼。新人關心的是就業, 學習一門語言能比較容易找到工作才是最重要的, 畢竟編程崗位對新人不是很友好, 動不動兩三年經驗,所以才會來請教別人,我希望大家可以結合自己的工作經驗來推薦。更新:目前學習了Python,還有mysql git http協議什麼的 ,以前也有go的編程基礎,目前正在邊學邊找工作,如果有誰能提供一個python實習崗將不甚感激!
只學一門應該沒法找工作。大部分找到工作的都不是因為你學了具體哪一門語言而找到的。
編程初學者千萬不要按照這個答案下面的回答選擇,可能學習小眾語言的人更願意在這種問題下面發聲,比如Rust、Scala、Haskell什麼的,,如果你真學了這種語言到時候找不到工作、吃不上飯那可全是自己的事情。。。
TypeScript 。
原因:
1. JavaScript 瀏覽器端獨佔,份額大,好學,生態繁榮。
2. JavaScript 爛。
所以 5 年內應該會是某種能沿用 npm 的生態的 compile to JavaScript 的玩意會變成工程化開發的首選。
鑒於 flow 這個命革得太軟弱,一開始就做好了被取代的準備,ES 這玩意也沒人指望直接在瀏覽器里跑,怎麼也得先用個 Babel 轉一發,您說都捨得轉一發了還不如直接上接近白送的 TypeScript ....沒有所謂最具前景的編程語言,Java、 c、 c++ 、python 、go 、js 、swift ,未來很長一段時間他們都將一直佔據著TIOBE排行榜的前十。
到底誰最有前景?要根據他們各自的語言特性來對比,比如Java,一門商業化非常成功的語言,從學校、培訓結構、市場,整個生態鏈非常成熟,求職招人都容易,但是它的缺點就是語言本身,開發效率低,代碼不夠簡潔,語法略顯啰嗦,未來5年它還是會繼續引領編程語言排行榜,只不過,它的份額一定會逐漸的下降,畢竟受死的駱駝比馬大。
C、C++這類最接近機器碼的語言性能上無人能比,但是它的學習門檻太高,把程序寫好有一定的難度,況且這種不帶GC功能的語言管理起內存來也是一大累贅,所以他們兩還是會一如既往的在對性能要比較高要求的領域發揮作用,比如要個伺服器、資料庫什麼的會選擇它,但是絕大部分偏業務行的應用會選擇一門更友好的語言吧,比如Python。
Python這門語言最近兩年搶夠了風頭,這個網站說Python排名第一,那個網站說Python稱為XX國家增長最快的語言,什麼人工智慧、機器學習都在用Python。個人對Python的理解是它作為第二語言是使用最多的變成語言,很多時候Python就是一個輔助工具,比如做數據分析、數據挖掘、或者是爬蟲、甚至在金融領域、生物學、科學計算等領域都是作為一個工具在使用,就像我們學英語一樣,真正靠英語吃飯的只是少部分,更多的都是作為輔助工具可以有更好的發展。
js這類語言無論是在以前的PC互聯網時代還是現在的移動互聯網,它都是主流,短期內也不會出現第二種瀏覽器語言,再者,NodeJS開始進軍後端領域,希望與go、python流分一杯羹,你說它沒有前景嗎?
Swift這樣的語言天然優勢是有人強制要求你使用,你沒有太多選擇,不像後端語言,你看Java不爽了可以選擇Python,Python不爽選擇Go也不錯,但Swift不同,蘋果爸爸說咱iOS開發必須使用Swfit那你就得使用Swfit,不過這樣的語言整個市場就在那裡,不多不少,聽說Swift也可以寫後端了,但關鍵是有沒有良好的生態系統,如果什麼都需要重複造輪子的話,生產效率是個大問題。這點Go也有類似的困境。
說起Go,絕對是後起之秀,這門語言也不過誕生才幾年,但是它卻幾吸引了眾多人的眼球,這是一門非常現代化的面向對象語言,吸收了眾語言的優點,去掉了很多無謂的東西,就連繼承這種標準的面向對象特性都去掉了,它是一門非常工程化的語言,一切以使用為目標,兼具了性能和開發效率,號稱互聯網時代的C語言,未來它的發展一定還有很多上升趨勢。
這種問題一出來,答案肯定是五花八門啦。
我仔細想了想,我的觀點是:
1. Java——Java平台太龐大了,所以Java語言很重要。再看看Java 8開始的變化,可以發現Java社區的思路也在慢慢開始擁抱新趨勢,Java 9帶來的模塊化的影響是深遠的,而且已經有人驚呼以往沉重的「歷史包袱」——兼容性在Java 9上出問題了,再結合Java後續半年一個大版本,我是認可這種稍微「放縱」的,必須犧牲一點保守換取更多新變化。
2. C#——雖然「黑」微軟成為了一種「政治正確」的日常,但是不要就此看不見.NET在政府網站、校園網站方面的大量應用。而且開源的.NET Core發展不錯,有條不紊,加上C#的設計優雅,也是比較看好。
3. Go——Go的十年發展已經證明了自己的優勢,簡單古樸,效率權衡得很不錯,作為系統語言非常看好。
4. Python——動態語言當不了王者,但絕對可以成為一把鋒利無比的柳葉刀,AI的發展必然給Python提供更多更廣的發揮舞台。
5. PHP——「黑」PHP顯然也成為了一種日常,但PHP 7帶來的提升是巨大的,PHP現在的類型提示也是領先於其他動態語言的,而且後續PHP的JIT也是一件利器。不可小覷的是PHP專註Web 100年,在Web高效開發上佔用優勢。如果是Python是柳葉刀,PHP就是輕巧迅疾的圓月彎刀。
6. C/C++——老牌子了,不能落下,否則會被拉黑的。
7. Ruby——要看看Ruby 3長啥樣再說了。
8. JavaScript——絕對是值得投入的語言。前端應用越來越重要的今天,真的不需要理由,瀏覽器端的王者編程語言。還有TypeScript,我很喜歡,特別是深植Angular,是ES 6的超集,類型聲明,團隊心安。由此想到Node平台,也熱。
9. 其他新興編程語言——Scala、Kotlin、Swift、Clojure等等,很可能在具體某一領域佔據優勢,比如Scala於Spark、Kotlin於Android、Swift於iOS。Clojure作為Lisp系的最佳表現,有Storm的招牌應用,亦可另立山頭,稱霸一方。還有Rust,好像是慢熱型,但好像很牛掰的樣子,趨勢有待觀察。
說了這麼多,其實就是想說世界是五彩繽紛的,關鍵是夯實基礎,同時找准自己的技術領域和方向。
繼續說一說:
一些語言,可能表現都不錯,但就是使用上沒有Java、PHP、Python、C/C++、C#啥的廣泛。因此呢,一旦找到職位,薪資必然比較高,因為「物以稀為貴」,而且可能面向的業務規模都是比較高端的。但是呢,職位不多,職位選擇性就窄了,很可能面臨不好找工作的尷尬境地。而Java這些語言呢,職位多一些,可選擇性就大一些,但「價格」就低一些。但總體來講,程序員市場至少在目前還是不錯的。選啥最有前景?有矛就有盾,劍是雙刃劍,神都沒辦法告訴你,只有自己應勢而為了。而很多時候,也是要踩了坑才會有深刻領悟的。還有,低水平的程序員,不管選啥語言,機會都比較小......
編程語言本身是一種工具,既然是工具,設計之初就有解決現實問題的一些初衷。這些現實問題來自於不同的業務場景。
所以如果想看未來什麼編程語言流行,就要看未來有哪些業務場景會多起來。換句話說,先看看有哪些領域會成為投資或創業的風口,再去看看哪些編程語言能在這些領域有著自身的特殊優勢。
以我個人短短20餘年的經驗,回顧過往的編程語言的發展和投資創業的風口,2000年第一次互聯網泡沫的時候,曾經有PHP熱門了起來,因為PHP能非常快速的開發Web應用,學習門檻還低;隨著互聯網規模的擴張,高並發的需求越來越多,沉寂十餘年的Erlang,從原先的電信交換機領域突圍,成為了互聯網行業中解決對高並發、分散式、容災等有要求的應用的利器,也獲得了大量應用;而同時,小微企業的互聯網創業成為了熱門,這種團隊對個人開發效率有著非常高的要求,於是有Ruby借Rails火了一把,這是08年左右;基於瀏覽器的應用的流行,帶動了JavaScript的發展;接下來,移動互聯網浪潮的興起,而其中的領頭羊Apple,因為自身的生態原因,則帶動了整個Objective-C——一門有了近三十年歷史的語言。
其實我們可以發現,很多語言在成為一種工業上應用很廣的語言之前,其實都小眾存在過很長時間,當遇到適合它的浪潮時,他就會興起。
反過來說,如果一個語言解決的領域不存在了,或者場景越來越小了,那麼自然工作也會少。但只要這種編程語言對應的場景還在,學了總是可以找到工作的,門檻高低市場大小機會多少的問題。
所以未來哪些領域會有風口,而什麼語言又有比較好的解決方案呢?
我認為可能的風口有:
- 人工智慧、大數據,對應的可能的語言是Python和Julia,Python早年就在學術界流行,在科學計算上進行了布局(誤打誤撞?),當時是解決了C/C++這類語言過多的涉及計算機和系統底層的知識,而Python這種腳本語言可以讓學術界的人更好的把關注點放在演算法等本身上;現在Python幾乎成為了人工智慧入門的標配,同時相對Matlab這種語言來說,又非常的普適,各方面的生態都有。而Julia則是完全的學術派的設計思路,在語言層面上就有很多矩陣等計算,語法上又接近普通的語言。
- 區塊鏈,對應的語言可能是Go。區塊鏈本身是一種巨大的分散式系統,Go的設計天生就是分散式系統有很多考慮的,這點Go優於Java,而區塊鏈又同時是一個計算非常密集的應用,這點Go優於Erlang。
有人會提到Rust、Kotlin等語言,這些語言都是通用性的語言,誕生的時候解決的業務問題並不明顯,當這種情況下的話,就要等到有高人能在某個領域把他們的能力全部發揮出來了。而JavaScript已經是瀏覽器中的統治地位了,我就不放在這裡講了,至於TypeScript、WebAssembly,留給大家判斷吧。
那麼找工作的問題呢?大家肯定會說最好找工作的應該還是Java吧。那為什麼Java會這麼流行?
大家都聽說過「Horizontal Scalability」,也就是說,一個系統如果架構得當,只需要不斷的加入新的機器,就能相對比較線性的提升計算能力,就叫做水平擴展能力。
如果把這個移植到開發領域的話,一個團隊能不能有「Horizontal Scalability」,也就是團隊能不能在不斷加人的情況下,線性的提升開發效率。當然這是非常困難的,這時候就非常考驗團隊Leader的管理能力,同時也要求團隊使用的工具能夠支持這一個特點。而Java是最早具備這個能力的編程語言。Java在誕生當時率先應用了OOP,並且取消了C/C++中經常讓人犯錯的指針等東西,並且增加了介面。通過OOP,能很好的幫助架構師對系統進行拆分,通過介面,能保證不同團隊互相開發出來的東西在調用的時候不容易出低級錯(還有單元測試)。
最後在歷史的不斷演進過程中,Java又積累了非常龐大的生態,各個領域的問題都有解決方案。
總結,Java解決的領域問題是其實是:管理,不能說Java已經完全解決了,至少在這點上還沒有超過Java的語言。這就是為什麼Java讓其一直在大型業務系統的研發領域中,處於主流地位的原因。
當然,誰說程序員只能用一種工具呢。
我覺得未來五年編程最有前景的語言還是英語。什麼編程語言倒是不知道。
我負責任地說,就算以找工作為目標,也沒必要糾結哪門語言「最有前途」。
真正專業的公司選人看的是人的綜合能力,不是對一個語言熟不熟。
我面試過不少人,很多候選人對某個語言是熟悉,鏘鏘鏘就寫了一大堆代碼,還用上這種語言的一些牛逼特性,但很大一部分這些候選人也沒過面試,因為選人不只看這些啊。標識符亂用,a、b、c都上了,一個函數做七八個事情不知道拆分,解法的時間複雜度太好,甚至不知道什麼叫時間複雜度......這些問題都是用任何語言都需要了解的,是通用的Computer Science問題。掌握了這些能力,學什麼語言不都很快嘛。
所以,把任意一門語言學好,在學習和實踐中應用你學習的計算機科學和工程知識,之後轉用什麼語言也不怕。
我知道肯定會有人跳出來,說哎呀不是所有公司都這樣啊,還有很多初學者沒那麼幸運啊,你考不考慮普通人的感受啊bla bla bla,抱歉,我只會教努力向上的方法,不會教苟且偷生的方法。了解更多專業程序員做法請關注@程墨MorganRust
突然看到題主問題描述的最後是「學哪個更容易找工作?」
那就Java和PHP吧,JavaScript、Golang、Python都行
這問題其實應該改成「最具錢景」
單純的技術角度,我看好 go 語言,理由如下:
第一,go 語言是那種「一看就懂」的語言,非常利於技術棧遷移,一個有經驗的程序員,面對 go 語言,是很容易形成工程直覺的。另外,其引入的「新」編程模型也很簡練。
第二,go 面向的「系統編程 服務編程」領域,雖然已經發展很成熟,但是在雲計算場景中發展空間仍然很大。並且隨著服務越來越小型化,java/.net 顯得笨重,go 很適合作為輕量級替代品。
第三,我認為 go 語言很適合 iot 時代的邊緣計算應用開發。現在為什麼會出現 javascript 開發硬體的技術?因為 iot 要求的高迭代效率,和 c 語言的高開發成本是矛盾的。然而 js……有點太極端了,我認為 go 是一個很好的折中方案。
對於一門語言的流行,「簡單」真的特別重要。現在已經不是那個大家為了強大的 feature,連 c++ 都可以忍受的時代了。我曾經比較感興趣 rust,然而看了一下文檔,我就覺得這門語言不可能大紅大紫。為什麼?太複雜,我第一時間不看文檔只看 demo 代碼,都不知道代碼寫的是什麼。
然而如果你是想學一門語言找工作,那我不建議你去學 go。第一,所謂的「未來」,你不知道是什麼時候,你等不起。第二,就算 go 真的火了,你也無法預料它是否在國內也能大火。畢竟相比國外,國內開發群體相對來說不太喜歡換工具,除非是像 iOS 這樣的獨佔平台強推。第三,你要考慮地域問題,畢竟你不一定要生活在北上廣深杭,也不一定做互聯網。過於新的東西,滲透到其他行業是需要過程的,可能 go 已經很火了,然而你回到你們省會,還是找不到崗位。
如果你確實想學編程找工作,還是建議 java、c、php。事實上我連前端都不推薦,因為非互聯網行業前端薪資明顯低於前面幾個,在很多二三線城市,你做前端不會美工,連工作都很難找到。
既然提到了是為了找工作,那就把 Haskell、Lisp、Scala、Erlang、Elm、Assembly 這之類的語言先放起來吧,學這些找工作很難很難(不適合大佬但也許適合題主),比如我會因為興趣去學習 Java 以外的超過 30 種語言,但最終找工作還肯定是以 Java 為主。
其次就要看你想朝哪個方向發展。
如果說是前端,那就把 HTML、CSS、JavaScript 的基礎打好,在此基礎上可以進一步學習 TypeScript 和一些相關的框架,比如 Vue 之類的,有能力還需要了解一下 Node。
如果是移動端,Android 還是要先把 Java 學好,基礎打牢,JVM 也要有一定了解,在此基礎上有能力再去學習 Kotlin。iOS 的話 Objective-C 和 Swift 看起來五五開,不過 Objective-C 也不能一點都不了解,至少要知道 Runtime(不過 Objective-C 語法也很簡單),Apple 有關 Objective-C 的幾個 Guide 也最好多讀幾遍。
如果是後端開發,以題主的水平語言的推薦程度依次是 PHP、http://ASP.Net、Java、Python、Go,這塊不展開說了。
還有一個不太熱門的,就是桌面應用開發,主要就是 Win32 應用程序開發,多數都是使用 C++ 或 .Net,不過這塊貌似市場需求不是很強(或者說對技術要求相對較高,學習性價比低)。還有 macOS 應用開發,這個不提了。
最後,學習編程最重要的是思想,而不是糾結於某個語言,的確每門語言都有自己適合的領域,但只要是個高級語言,就沒有做不成的事情,所以如果沒有編程基礎的話,就選一門簡單的語言對編程的基本思想有個了解,然後再學什麼語言都是手到擒來的事(Haskell、Scala 這類的除外,範式就不同)。另外,不要太糾結 API,我發現很多人喜歡沉迷於 API,這不是一件好事,熟悉一類平台或框架大致的架構思想就可以了,API 有 IDE、References 就行了,當然如果平台或框架是開源的,學習 API 對應的實現也是一件對能力提升很大的事(比如我最近研究的 Android Framework,你真的能從中學到很多,這個一定是要自己去看的)。
最後的最後,不要把「面向工資編程」作為你的第一範式哦。
····找工作的話,我建議還是學Java,Go,能進能退。
為什麼不建議學Python,這玩意我遇見的選手都是順手學的···
Scala,Haskell好歸好,市場需求得多大呢?
如果是為了找工作,做前端方向未來幾年js看不到被取代的可能,後端方向java php這種一般公司還是用的最多的,嵌入式方向當然是c/c++ ,數據方向java python scala都可以,分散式go是個好選擇。一圈下來你說的那些基本都很容易找到工作。就算最後工作找好了,你還要擔心怎麼工作不猝死,不被毒死,不被領導祭天。所以,熱愛生活,熱愛編程,別想些有的沒的。
雲計算後端開發的話投 Elixir 一票。尤其是需要高並發、高可靠性、面向快樂編程的應用場景。
Go也是很不錯的後台編程語言,可以成為Elixir的有益補充。這裡有一篇很詳細地比較兩門編程語言的文章,想要詳細了解的請看:https://blog.codeship.com/comparing-elixir-go/
搬運一下結論:如果是要寫功能專一,計算量大或者API介面類的程序,用Go。如果要寫全棧的web應用,或者高並發、高實時、高可靠甚至是嵌入式的完整後台系統,用Elixir。
作為系統編程語言,Elixir相比Go最主要的優勢在於:1. 搶佔式調度器;2. 更輕量級的進程和更完善的進程管理機制。獨立的進程heap空間可以分別進行垃圾回收,從而避免了stop the world 式的全局垃圾回收。3. 相比於Go裡面無處不在的手寫的錯誤處理代碼,Elixir採用監控進程透明地進行錯誤處理。二者最大的區別在於Go沒有可以管理和控制已創建的微進程的機制,而Elixir則有非常完善的機制,因此Elixir更適合用於構建內部狀態透明的大型系統。問題應該是未來五年好找工作嗎?難道不應該是花五年時間投入到哪門語言里,通過紮實的編程語言功底,豐富的項目經驗,熟練的解決問題能力,間接地為客戶創造巨大的價值,與此同時也實現個人價值嗎?
很難說, 我覺得可能有好幾門.
Swift, 爹是蘋果.
Kotlin, 社區認可, Google 算得上乾爹吧. 至於親兒子 Go 不好算新語言.Reason, 作者的 React 已經在社區搞得風生水起風聲鶴唳的, 爹是 Facebook.TypeScript, 社區認可, 爹是微軟. 另外最近已經開始著手編譯到 WebAssembly 玩, 不能小看.為什麼沒有 Clojure, 爹連鬍子都不留啊!
腳本語言的需求一直很大。如果非要選一個腳本語言,我選java,合起來就是javascript…
題主問的是找工作。可以中肯的說,題主列舉的這些語言,不論學什麼,都很有前途。
不過,心裡一定要有點數:大部分語言的語法部分都比較容易,但是「我是寫 Java 的」,就僅僅意味著我只會 Java 語法嗎?要靠它生活,需要很多語法之外的東西,而往往這些語法之外的,遠比語法重要。
Python 在知乎已經夠臭了,希望某些培訓機構還是節制一點。
最後,個人目前最喜歡的,是 Swift。
說語言不重要的,你們應該是不懂初學者的心情 (或者裝作不懂)。
人家萌新問應該學哪門語言,你們上來就說只學一門沒法找工作,公司選人看的是綜合能力之類,自己是爽到了,題主還是不知道該學哪門語言。
如果還在糾結學什麼語言才能找到工作這種問題,Java是最適合的選擇,不吹不黑。
一般用Go的公司門檻都比較高。Go經常用在高並發,低延遲的系統。有這種需求的公司,還需要對操作系統,分散式,緩存,負載均衡等有一定了解,不是學了一門語言就能進去的。Facebook大部分後台都是php,但不代表學了php就能進Facebook。
Python同理。純Python後台很少見(不是說沒有),作為網頁伺服器,還要學個JavaScript什麼。純後端的話也只是做個中間層,真正的業務還是靠Java之類支撐。而且用Python的公司一般比較有追求,可能非985/211不招。
Scala,Swift這類東西只適合錦上添花,不適合雪中送炭。
還有不推薦JavaScript,因為這貨一般不單獨出現,都是跟著HTML/CSS/Node/PHP/jQuery/React/Vue/...全家桶。題目要求的是一門語言,與題目不符。
再說Java
Java適用於後端,以及安卓開發。經常整個技術棧都是Java寫的,不會涉及到其他東西。
而且Java工作跨度很大,從幾個人的小公司,到FLAG,BAT,都能找到工作。
最後,Java真的很好用,從Java 1到Java 8,經過十幾年的沉澱,各種庫都很齊全,不會像新興語言一樣出現些奇怪的設計,比較適合初學者學習。通過學習Java,基本可以涵蓋主要編程思想和數據結構,再學其他語言也比較容易。要是直接JavaScript上手,很可能把一些語言特性的東西,當成普世的東西,不利於以後的學習。
用武俠類比,C++和Java是少林武當,JavaScript,Swift這些就是九陰白骨爪,大力金剛指什麼,學好了內功再去學這些東西,自然威力大增,一上手就去學這些,容易遇到瓶頸,不利於之後提升。
難道不是ppt
推薦閱讀:
TAG:JavaScript | Python | 編程 | Java | 計算機科學 |