準大一,到底選哪門編程語言?

前言

大家好,我是二哥呀。

我看朋友圈,有些地方已經開學了哈,我們這邊推遲到了 9 月 15 號以後。那對於大一新生/準大一新生來說,該如何選擇編程語言就是個頭大的問題,因爲誰都怕選擇錯了呀。

主流的大學一般都會在大一上半學期開設 C語言這門課,但 C語言是面向過程的,應用領域比較窄,以後工作後用到 C語言的可能性不大。像 Java 啊、Python 啊、C++啊,是面向對象的,應用領域更廣泛,以後也更容易找到工作。

那到底還要不要學習 C語言了呢?那到底是選擇 Java 呢?還是 Python 呢?還是 C++ 呢?

還有前端的 JavaScript,新興的 Go 語言,天下第一的 PHP?

麻了麻了。

二哥作爲一名 18 歲卻擁有 13 年編程經驗的老學長,奔着爲人民服務的態度,我就把幾大編程語言拉倒了一個羣裏,給他們了一個勇於表達自己的機會。

C語言

大家好,我是 C語言。

作爲開場演員,我需要大家更多的掌聲,快。

我是由貝爾實驗室的 Dennis Ritchie 在 1969 年~ 1973 年間發明創造的,瞧,就他——你們眼中的 C語言之父。

父親是這樣評價我的:“古怪的、有缺陷的,但同時也是一個巨大的成功。”

的確,我的指針不知道勸退了多少初學者,但如果有幸邁過去這一關,可以說潛力無限。

那爲什麼我還能獲得如此大的成功呢?

第一,我和 Unix 操作系統關係密切。

大部分 Unix 內核,以及所有支撐工具和函數庫都是用我來編寫的。20 世紀 70 年代至 80 年代,Unix 風靡於各大高校,許多人開始接觸到我,並且深深地愛上了我。

以至於後來幾乎所有的操作系統都用到了我,比如說 Windows、Linux、macOS 等等。

第二,小而美是我的優點。

我非常的簡潔,幾乎沒有任何冗餘。以至於我的庫函數,嗯,都少得可憐。

這有利有弊,有利的是,上手難度幾乎爲 0,除了指針難以被新手控制意外,其他的基礎語法都很容易上手。

與此同時,由於庫函數的缺失,導致新手在開發任何一塊小程序的時候都必須得親力親爲。

很多編程語言都受到了我的影響,比如說 Java、C++、C#、Python、Go 等等。

《指環王》裏有這樣一句話:“one ring to them all”,可以把 ring 換成 language,這個 language 就是我,恐怕沒有人會不同意。

但我也必須得承認,如果大學只學我這一門編程語言,畢業後的就業形勢確實不容樂觀,因爲你們當中的大多數人,都不會從事嵌入式開發和硬件驅動開發。

當然了,以後嵌入式會不會也火起來,也不一定,比如說,在眼鏡裏植入一個芯片,讓鏡片變得更輕更薄更智能,就只能用我來搞定了。總不能再裝個 JDK 吧,哈哈哈。

最後我想說的是,如果你想成爲特別牛逼的程序員,一定要對計算機原理、編譯原理有所瞭解,那麼我更接近底層,顯然是繞不開的。

像 CSAPP 這本經典書,例子就是用我編寫的。

大家懂我了嗎?

C++

大家好,我是 C++,對,比 C 多了兩個+號,意味着我就是 C語言的增強版本。

20 世紀 80 年代,比雅尼·斯特勞斯特魯普博士在貝爾實驗室工作期間發明並創造了我。瞧,就他——你們眼中的 C++之父。

從誕生之初,我就一直不停地增長,添加了諸多的新特性:

  • 虛函數
  • 運算符重載
  • 多繼承
  • 標準模板庫
  • 異常處理
  • 運行時類型信息
  • 命名空間

我必須得承認,我不適合作爲第一門編程語言來入門,除非你極具天賦,否則你可能會因爲我“從入門到放棄”的。在學習我之前,必須得搞一波 C 語言。

如果你想以後開發高性能的客戶端或者遊戲服務器,建議學我。

Java

大家好,我是 Java。

一開始,我叫 Oak,1990 年,我就由詹姆斯高斯林等人創造發明了,算是雛形吧。瞧,就他——你們眼中的 Java 之父。

說起來,也挺有意思的。我當初瞄準的是智能家電這塊,也打算搞嵌入式呢,父親曾把我起名爲 C++ ++ —,哈哈哈。直到 1995 年,我才正式改名爲 Java。

我的優勢主要有四點:

第一就是學習資料豐富,幾乎遍地都是,這就極大地降低了學習的成本。

就連培訓班,爲了品牌的宣傳,都忍痛割愛把視頻教程開源到 B 站上了,直接就能白嫖,可以說是省了一大筆培訓費,哈哈哈哈。

GitHub 上這份星標 200+ 的《Java 程序員進階之路》不錯啊,順帶推薦一把

https://github.com/itwanger/toBeBetterJavaer

第二就是就業前景樂觀,雖然我現在已經很捲了,但是需求量仍然很大,因爲我的生態好,車輪子多,能節省開發成本,不管是大廠,還是小廠,都比較鍾愛。

像阿里、美團,都是我的重度用戶。

如果要說哪門語言在國內找工作最喫香?

如果我喊是我,那絕對沒有第二門編程語言出來瞎逼逼。

像企業級 Web 開發、大數據分析處理、微服務、雲計算、移動開發都是我的主戰場。還有圖像處理、桌面應用開發、分佈式系統開發、嵌入式等等,我也都能自由切入。

第三就是我搞出來了一個 JVM,可以跨平臺,你只需要敲一次代碼,編譯好,就能在所有平臺上運行。

第四就是我把指針這塊給砍掉了,這對新手來說,簡直就是福音。你只管折騰,內存什麼的我來幫你搞定。當然了,也不能太瞎糊弄,OOM 也是會發生的。一旦發生,找起來問題就也挺頭大的。

綜合實力來看,我應該是編程語言中的大王。

Python

大家好,我是 Python。

吉多·範羅蘇姆發明創造,第一版發行於 1991 年。瞧,就他——你們眼中的 Python 之父。

我的優勢就在於簡單易上手。

但講真,我的兩大核心應用領域,比如說人工智能、數據分析,對學歷都是有比較高的要求的。

還有爬蟲這塊,如果作爲學習,比如說去爬爬網易雲音樂下的評論,豆瓣上的高分電影,我覺得還可以。

但爬蟲這塊說實話,有風險。尤其是一些需要付費的內容,或者比較私密的數據,儘量不要去爬。

我比較疑惑的一點是,有些學校,明明牌子不是很響亮,卻特別喜歡拿我來給學生講。

恐怕以後的就業真的是大問題。

如果你是一名編程愛好者,那麼推薦你來學我,寫一些自動化的測試腳本了,我覺得蠻 OK 的,因爲學習曲線比較平緩。

如果你想以我爲生,那麼盡最大可能提高你的學歷,很關鍵。

Go

大家好,我是 Go,也可以叫我 Golang。

對了,我爸是 Google,背靠大樹好乘涼啊。主創人員主要有三個,都是計算機領域的宗師級大牛:Rob Pike、Ken Thompson 和 Robert Griesemer。

像 docker、k8s 都是用我編寫的。

我敢這麼拍着胸脯說,我就是目前發展最迅猛的編程語言了,沒有之一,國內很多大廠都開始張開雙臂擁抱我了。

國內的字節就是重度用戶。

爲什麼大廠會青睞我呢?

因爲第一,微服務和雲原生已經成爲一種趨勢,而我作爲一款高性能的編譯型語言,非常適合承載落地微服務的實現,又容易生成跨平臺的可執行文件,相比於其他語言,也更容易在 docker 上部署。

第二,我兼具了 Java 和 C語言的量大優勢,比如說 Java 的垃圾回收,但 Java 需要 JVM 才能運行,我可以像 C語言一樣直接編譯運行。

第三,我是用 Goroutine(協程)實現的併發,避免了上下文切換的額外耗費,兼顧了多線程的優點,簡化了高併發程序的複雜。

但我也有自身的缺陷,比如說,不支持多態,沒有註解,缺少框架等等。

C#

大家好,我是 C#,似乎比 c++ 又多了兩個 ++。

對了,我爸是微軟,由C和C++派生出來的面向對象的編程語言。由安德斯·海爾斯伯格主持開發,2000 年首次發佈,我爸的野心也很大,就是爲了取代 Java 的。

怎麼評價我自己呢?

前後端的事都可以辦,但是,主要是針對 Windows,跨平臺性差。

當然了,最大的問題還是封閉性吧,再加上多次推倒重來的反覆摩擦,鐵粉都離我而去了,傷心。

國內的職位還有一定數量,但大多集中在工具定製開發、遊戲開發(unity 3d)等方面。

PHP

大家好,我是 PHP。

1995 年由拉斯姆斯·勒多夫開發,瞧,就他——你們眼中的 PHP 之父。

對,“我曾是世界上最好的編程語言”。

曾幾何時,我有多火,你們這些年輕一代的同學都想象不到。2000 年到 2010 年,可以說是我最輝煌的十年,幾乎每一家中小型公司的後臺都是用我開發的。

你們知道嗎?曾經,我纔是 BAT 最主流的編程語言。現如今,他們都在冷落我。。。。。。

從神壇上跌落的我,有多傷心難過,你們恐怕也是難以想象。

但不管怎麼說,不管是開發傳統網站還是前後端分離的網站,還是開發小程序和App的後端接口,我絕對是開發速度最快的語言,沒有之一。

當然了,這也可能是我被人詬病的地方,入門簡單意味着門檻低,很多開發者在使用我的時候就不那麼注重代碼規範,只管代碼跑起來完事。

害,總之,我。。。。。。哭了。。。。。。

JavaScript

大家好,我是 JavaScript,作爲壓軸的表演嘉賓,你們能想象到,我的分量有多重。

布蘭登·艾克在1995年5月僅花了十天時間就把我的原型設計出來了。woc,真的牛逼壞了!瞧,就他——你們眼中的 JavaScript 之父。

一開始,我叫 Mocha,後來網景公司爲了讓我蹭點 Java 的“熱度”,就把我臨時改名爲了 JavaScript

以至於後來的很多初學者還以爲我是 Java 的腳本語言呢,害!

世界上的大多數網站都是我的使用者,主流的瀏覽器(ChromeIEFirefoxSafari)都支持我。

講真,我也沒想到我會發展得這麼好。

對於前端程序員來說,我、HTML、CSS 是三巨頭,缺一不可,我們可以說是相得益彰吧。

以前,我僅限於客戶端,也就是瀏覽器這邊,隨着 Node 的橫空出世,我竟然可以跨界到服務器端,着實爽了一把。

可能有人詆譭我,說我爛,屎山很多,但只要有瀏覽器在的那一天,我就會擁有衆多的傭歹。

總結

好了,就到這吧,這幾個傢伙 BB 了這麼多,是時候安靜一會了。

作爲羣主,二哥就來簡單總結一下吧。

編程語言沒有優劣之分,只有適不適合。

學習編程,千萬不要貪多,既想學這個,又想學那個,可能到最後,哪一個也不精通,不,精通這個詞可能過了,哪一個都不熟練。

也千萬不要有這種想法,這個簡單點,我學這個,學了一段時間後,發現有點難,覺得另外一個容易,換另外一個。那可真的是糟蹋了自己的大學時光啊。

哪怕只是大一,時間也是寶貴的。

如果你想走開發這條路,考慮到招聘崗位和學習成本,第一門編程語言首選 C 語言(科班)、Java(後端)、JavaScript(前端)。

其次,可以選擇 C++、Go、Python、C#。

當然了,對於編程語言的學習來說,我是極度不推薦新手看書學習的,因爲書要考慮到嚴謹性,很難兼顧趣味性。

這就導致很多初學者還沒入門就勸退了。

我推薦前期跟着視頻入門,然後不斷 coding 加深理解,最後再看書深入淺出。

完美的節奏,perfect。

有想要不同編程語言的學習路線和學習資料的嗎?可以在評論區裏喊出來。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章