歡迎光臨
每天分享高質量文章

選 Python 還是 Java ?

對於初學程式設計,以及想要轉行到程式設計領域的人來說,總有這麼一個選擇,選 C++、Python、還是 Java 好呢?哪個前景更好、哪個好學、哪個好找工作,等等這類問題。

 

熟悉我的都知道,我是從 Linux C/C++ 後臺開發,轉行到演演算法工程師,在大四實習的時候,做過 Go 開發,大四下做畢設的時候,用過 Java、以及前端一些技術;相對而言,我有自己的技術棧(在深度的前提下,進行廣度的擴充),且對於市面上比較流行的技術自己也都有過接觸,也跟很多 BAT 同事進行過這方面的交流,還算是有一點經驗吧!

 

關於這個選擇,微信上面私聊問我(不止幾個人了),我發現很多在校學生、以及工作了要轉行程式設計的,都很糾結這個問題,很迷茫,不知道咋選?今天,我站在我的視角,說一下自己關於這個選擇的看法,希望讀完本文的你,不再糾結於此。

 

Python 還是 Java

 

1、

如果你明確的知道,我就是要選 Java,或者選 Python,那很好了,按照自己的戰略計划走就行了;在程式設計行業,興趣永遠是第一位的,做著自己喜歡,感興趣的東西,是一件非常爽的事情,長久的執行下去,慢慢的會成為這個領域的專家級人物。

 

我也不知道,什麼時候程式設計界,流傳了這麼一句話:語言不重要,基礎才是關鍵;你要是不相信我,你可以去問一些大佬,或者問一些學程式設計一段時間的人,問他選哪個方向學比較好,學 Python、Java、Go 還是前端好?這些人的回覆總是如出一轍,根據你的興趣來,語言不重要,基礎才是關鍵,說真的,這個答案,對於要選擇方向的人來說,基本上就是廢話,沒任何有效資訊。

 

語言不重要,基礎才是關鍵,問你選擇方向的初學者,難道他們不知道這個道理嗎?這句話,基本上學程式設計的,人人都知道,基礎很重要,對於這麼明顯的道理,我相信絕對不是初學者問你選擇時,他想要的答案;當你回答這句話時,其實他心裡很傷的,但是敬重你,又要不懂裝懂的,還說自己下來在考慮一下,大概知道了怎麼選,連連答謝;基本上就是這麼一個狀況,我也是由當初的小白轉行的,也經歷過這些,作為一步一個腳印的過來人,我是感同身受!

 

語言不重要,基礎才是關鍵,這句話沒毛病,但是要看對誰說了,你要弄明白物件;我自己從大二開始接觸程式設計,基礎還算是扎實,2017 年就開始在大公司實習,自學程式設計快 3 年,實習加上工作,也有 1 年半了,從不敢拿這句話出去裝 B,顯得自己技術多麼厲害;對這句話,直到現在,還沒到真正意義上的理解,也就是才慢慢的有了一點點感覺,很多搞程式設計的,對這句話,一知半解,談到程式設計,這句話就不離口,總是告訴別人,基礎很重要,語言是其次,給人一種基礎很扎實,技術很強的感覺,熟不知這句話搞程式設計的絕大多數人都知道。

 

對於工作三年以上,真正意義上,經歷過硬仗、經歷過好多線上問題,對系統穩定性、併發量雙重考驗下,都深入底層,都摸過這些東西的,才會慢慢的對這句話有新的認知,這些大佬站的層次不一樣,說出來是真的深有體會,其他很多人也就是聽過這句話,在轉述一下而已,對於初入程式設計的人來說,我個人覺得這句話意義不大!

 

對於初入程式設計,要轉行的人來說,首要的就是在某一領域做深、做精、打造自己的技術棧與技術品牌,往後才是橫向擴充套件,此時語言的選擇就至關重要了;真的選擇不同,其後的發展也是不一樣的。

 

選擇,就是要站在你所處的環境,以及自己未來想去的公司,看清自己現在所處的階段,在什麼階段,就把這個階段的事做好,才是你最佳的選擇;人最重要的就是要有自知之明,一定要清醒的認識自己,以及當下手裡握的資源,把自己重新審視清楚,做好定位,再做選擇!

 

2、

對於基礎,我沒說基礎不重要,基礎對於應屆生,找工作是非常的重要的,對於已經工作幾年了,主要就是看你工程或者演演算法能力,更多考察在專案經驗以及工程架構、對系統設計的理解上面了。

 

不知道啥時候,又冒出來這麼一句話:熟練掌握一門語言之後,其他語言就能很快的熟悉起來,我想說的是,對於 C++、Java,Go,Python,每一門語言入門容易,想要深入學習,想要把各種特性都摸清楚,都很難的,沒一門語言,是你想的那麼簡單,在短期內只能是入門級別的水平。

 

說說我自己的情況吧,我曾經說過,對於 Python 幾乎不用學習,直接就可以上手,對於 Python 的爬蟲、到資料分析,再到深度學習,用 python 寫演演算法,這個流程下來,只是完成業務需求的話,自己可以很快的解決;你有沒有想過背後的原因,我之前是 Linux C/C++ 出身的,在這個領域已經走得很深了,對於很多程式設計哲學、程式設計思想、以及程式設計習慣都是花費了好幾年的時間在這門語言上,對一門語言達到了非常的熟練,這才是我快速上手 Python 的根本原因(但也僅僅只限於完成業務需求)。

 

對於你說你 Python 已經很熟悉了,之前沒接觸過 C++,你能快速的學會嗎?就單說 C++,你的 Linux、Vim 這些的特別熟悉,才能很好的在伺服器上進行開發;見過好多 Python 的都用什麼開發工具,我寫 C++ 或者 Python 都是 Linux 下麵的 Vim,我個人是特別的喜歡 Vim,已經脫離滑鼠大半年了,一款良好的開發工具會讓你提升效率,做起事情來,是事半功倍的!

 

我自己覺得自己基礎知識還算扎實,C/C++ 語言學的也不錯,Python 你們也覺得簡單,但是我快速上手之後,也就是完成一些業務需求還可以,對於深層次的 ,用 python 寫演演算法、寫模型,以及 python 資料挖掘這方面,自己很多也不懂,畢竟沒有在這個領域深入學習;還有就是別人總說這句話,給我的感覺就是別人都能很快的熟悉一門語言,技術能力都很強,而我自己遠遠沒有達到熟悉的地步(也就是入門,完成需求,能用而已),可能就是我個人比較笨了,學習能力還有欠缺,這有可能這是我自身原因;我想問問,大家在熟悉了一門語言之後,在學另一門很快的就達到了熟悉的地步嗎?(其實很多人掌握的語言很多,但都僅僅是入門級別水平的,沒有自己能拿得出手的東西)。

 

基礎很重要,語言是其次,熟練掌握一門語言後,其他語言學起來很快的,說起來容易,做起來你就知道有多難了,工作幾年以上的,其實說這些話,是他們所站的高度、水平都具有了,以及在程式設計領域多年的經驗;從他們自身的角度上出發,說出來是為了大家好,真的挺好的;但是有些人,經常把這句話掛在嘴邊,真是不知道自己能力有沒有達到,反正給人一種很厲害的感覺!

 

很多大佬說的這些話,是真的有這個水平了,也是有這個能力的,他們所處的環境跟你不一樣啊!但是,你要知道,這個是針對的少數人,對極其牛逼的程式員來說,語言真的是其次,基礎真的特別重要,這些話沒毛病,在之後程式設計技術發展的道路上會體現出來的(等你們工作一段時間就明白了);對於很多人,平庸的程式員還是佔多數的,在程式設計這行,想要出類拔萃,光靠努力是不夠的,還得有點邏輯思維,以及智力的,在程式設計領域幹個幾年轉行的,轉產品的、轉管理的、程式語言還是其次嗎?基礎真的很重要嗎?

 

基礎很重要,語言是其次,掌握一門語言,就能快速的掌握其他語言(很多人都不會自己思考,光覺得是很有道理,說起來容易啊,真的有多少人能真正的做到呢!),自己沒有深刻的體會,總是得不到精髓,我還需要在多工作幾年,對自己磨練磨練,再回過頭來好好的體會這句話;在剛工作的時候,掌握一門程式語言,熟練的掌握它,一定要做深、做精,這是你吃飯的傢伙,對於大部分人而言,選擇一個方向,深入學習一門語言,真的真的是很重要的。

 

3、

Python 還是 Java,簡直就是一場巔峰對決!

 

好好選擇一門語言,深入的學習下去,這個很重要!

 

對於基礎:資料結構 + 演演算法,作業系統 + 計算機網路,資料庫 + Linux,C 語言,這些基礎知識,在學習語言的時候,不可忽視,是你面試的重點(不管工作上能不能用到、以及以後會不會用上,掌握了對你都是有幫助的,相信在程式設計之路上走的長遠,的有這些基礎知識的支撐)。

 

基礎這塊,我強調一點,被人忽視的 C 語言,C 語言掌握的怎麼樣?C 你學到了什麼程度?將會影響你今後在程式設計的路上能走多遠,走多快,我個人一直把 C 語言當做基礎,不管你學的是什麼方向,C++、Java、Python,學 C 是與語言無關的,C 是基礎,有時間的話,都要把 C 語言學好,是絕對不虧的一件事情,C 的精髓、C 的理念、C 的哲學、都是很有指導性意義的!

 

基礎是功底,語言是大方向,基礎在面試中起的作用相當大(尤其校招面試),語言的熟練程度,影響著工作的效率,在工作中,主要還是完成需求,完成工作任務,明確兩者之間的關係就好。

 

4、

對於在校學生,很多人都糾結於 Java/C++ 和 Python,下麵我就直說了。

 

對於目前大的趨勢來說,未來的人工智慧、資料分析、機器學習,這些肯定有大量的崗位,而這些正是 Python 非常擅長的地方,Java 更偏向於做一些應用級別、伺服器級別的工程類專案,C++ 就是偏遊戲和底層了。

 

對於學校是普通一本或者二本,也是本科學生,想著本科畢業就找工作,那麼走後臺開發職位,Java 或者 Linux C/C++ 方向,只要基礎扎實,語言熟練,能力強,本科畢業去 BAT 級別的公司工作可能性很大(實在不知道選啥,首選 Java,對 C 有興趣的可以走 C++)。

 

對於學校是 211/985 院校的本科生,完全在本科期間就可以走機器學習、資料挖掘、人工智慧相關崗位,因為演演算法崗,目前來看,還是比較看學歷的,這個是真的,學校好的話,本科走演演算法沒問題。

 

對於研究生來說,我認識很多研究生找 Java 後臺開發崗的,也有很多人找演演算法崗的,無所謂的,只要自己喜歡這個崗位,都是可以的,研究生的可選擇性比本科大(註意:我說的是研究生,哪怕你是普通一本的研究生),可以全憑興趣方向,全憑把握(自己衡量演演算法和開發崗)找工作。

 

我都說了,以上的戰略規劃,是針對絕大部分人,針對想去 BAT 級別網際網路大廠的。

 

如果你想去大廠工作,按照這個做決定,就沒什麼問題了,如果你想本科畢業先隨便找份工作,小公司或者創業公司都可以,那麼與學校無關,自己感興趣什麼就學什麼,學 Python、學爬蟲、學資料分析,都可以的,也應該能找到工作,只不過不是大廠而已。

 

目前來說,Python、Python 爬蟲以及 python 後端開發,資料分析,這些崗位, BAT 校招很少招的,如果走工程方向的話,只會一門 Python,只能算是加分項,工程能力目前主流是:C++、Java、Go,學了 Python,還想拿這個找工作的話,直奔演演算法崗!

 

演演算法崗,目前確實競爭激烈,但是你真感興趣,本科還是 985/211,或者你是研究生,沒啥擔心的,只要學的好,有能力還擔心找不到嗎?如果你學校不好,你還對演演算法崗感興趣,想走這個方向,那就做好本科畢業,不去大廠工作的打算就好了,隨便找份工作應該還是可以的,之後社招在想辦法進大廠。 

 

對於 Python 來說,隨著 AI 的不斷推廣,相關崗位在未來肯定有大幅度的增加,可以利用業餘時間,往這個方向上靠攏,學習,積蓄力量,提升自己,機會一旦到了,抓住就好了。

 

歸納總結

 

我個人一直認為只有選擇好了,大方向不錯,才能達到自己的預期;程式設計行業,選好一門語言(C 是基礎,不算),在透過不斷做專案,來達到熟練,做深、做精才是你要做的事情,對於當下的你來說,選擇一門合適的,自己感興趣的語言進行學習,是至關重要的,工作了,你就會發現,語言真的不是其次,這是吃飯的傢伙啊(不熟的話,很影響效率的)!

 

其實,我知道,在當下,鼓吹 Python、演演算法崗的人多了去了,很多人辨別能力有待提高,多去想想,多思考,演演算法崗,高薪是那麼好拿的嗎?別被別人帶動,你自己要想清楚了;我簡單說一下,學校不好,還想本科畢業做演演算法,就別太抱去 BAT 級別大廠工作的想法了(也不是完全沒可能,只是真的很難,認清現實),學校是 211/985,不管本科還是研究生,畢業去 BAT 級別做演演算法,沒問題的(在行業裡,演演算法崗目前還是看學歷的),學校不行,還是本科,實在想做演演算法,畢業還想去大廠工作,那就考研啊(有個研究生學歷,最起碼門檻過了)!

 

認真看完的,尤其在校的,我相信,對於學哪門語言,你肯定心中有數了,現在就是時間的問題;在學生時代,多花些時間,把基礎打好,語言熟練的掌握一門就夠了,沉下心來,踏踏實實的,好好的專研一陣技術,對於程式設計界流傳的那些話,那些是大佬們深有體會總結的(大佬的視角站的角度不一樣),其實對於現階段的你們,對我也一樣,沒啥太大的價值,沒啥有效資訊啊,只有你做到了,真正的理解了,在說出來,才有底氣!

 

在學生時代,熟悉一門語言,真的很重要;工作了,就沒有大把的時間來好好的專研技術了,對於現階段,選擇真的很重要,我只是把我的一些想法,思考分享出來,做決定在你自己!

贊(0)

分享創造快樂