對(duì)于初學(xué)編程,以及想要轉(zhuǎn)行到編程領(lǐng)域的人來說,總有這么一個(gè)選擇,選 C++、Python、還是 Java 好呢?哪個(gè)前景更好、哪個(gè)好學(xué)、哪個(gè)好找工作,等等這類問題。
熟悉我的都知道,我是從 Linux C/C++ 后臺(tái)開發(fā),轉(zhuǎn)行到算法工程師,在大四實(shí)習(xí)的時(shí)候,做過 Go 開發(fā),大四下做畢設(shè)的時(shí)候,用過 Java、以及前端一些技術(shù);相對(duì)而言,我有自己的技術(shù)棧(在深度的前提下,進(jìn)行廣度的擴(kuò)充),且對(duì)于市面上比較流行的技術(shù)自己也都有過接觸,也跟很多 BAT 同事進(jìn)行過這方面的交流,還算是有一點(diǎn)經(jīng)驗(yàn)吧!
關(guān)于這個(gè)選擇,微信上面私聊問我(不止幾個(gè)人了),我發(fā)現(xiàn)很多在校學(xué)生、以及工作了要轉(zhuǎn)行編程的,都很糾結(jié)這個(gè)問題,很迷茫,不知道咋選?今天,我站在我的視角,說一下自己關(guān)于這個(gè)選擇的看法,希望讀完本文的你,不再糾結(jié)于此。
Python 還是 Java
1、
如果你明確的知道,我就是要選 Java,或者選 Python,那很好了,按照自己的戰(zhàn)略計(jì)劃走就行了;在編程行業(yè),興趣永遠(yuǎn)是第一位的,做著自己喜歡,感興趣的東西,是一件非常爽的事情,長(zhǎng)久的執(zhí)行下去,慢慢的會(huì)成為這個(gè)領(lǐng)域的專家級(jí)人物。
我也不知道,什么時(shí)候編程界,流傳了這么一句話:語言不重要,基礎(chǔ)才是關(guān)鍵;你要是不相信我,你可以去問一些大佬,或者問一些學(xué)編程一段時(shí)間的人,問他選哪個(gè)方向?qū)W比較好,學(xué) Python、Java、Go 還是前端好?這些人的回復(fù)總是如出一轍,根據(jù)你的興趣來,語言不重要,基礎(chǔ)才是關(guān)鍵,說真的,這個(gè)答案,對(duì)于要選擇方向的人來說,基本上就是廢話,沒任何有效信息。
語言不重要,基礎(chǔ)才是關(guān)鍵,問你選擇方向的初學(xué)者,難道他們不知道這個(gè)道理嗎?這句話,基本上學(xué)編程的,人人都知道,基礎(chǔ)很重要,對(duì)于這么明顯的道理,我相信絕對(duì)不是初學(xué)者問你選擇時(shí),他想要的答案;當(dāng)你回答這句話時(shí),其實(shí)他心里很傷的,但是敬重你,又要不懂裝懂的,還說自己下來在考慮一下,大概知道了怎么選,連連答謝;基本上就是這么一個(gè)狀況,我也是由當(dāng)初的小白轉(zhuǎn)行的,也經(jīng)歷過這些,作為一步一個(gè)腳印的過來人,我是感同身受!
語言不重要,基礎(chǔ)才是關(guān)鍵,這句話沒毛病,但是要看對(duì)誰說了,你要弄明白對(duì)象;我自己從大二開始接觸編程,基礎(chǔ)還算是扎實(shí),2017 年就開始在大公司實(shí)習(xí),自學(xué)編程快 3 年,實(shí)習(xí)加上工作,也有 1 年半了,從不敢拿這句話出去裝 B,顯得自己技術(shù)多么厲害;對(duì)這句話,直到現(xiàn)在,還沒到真正意義上的理解,也就是才慢慢的有了一點(diǎn)點(diǎn)感覺,很多搞編程的,對(duì)這句話,一知半解,談到編程,這句話就不離口,總是告訴別人,基礎(chǔ)很重要,語言是其次,給人一種基礎(chǔ)很扎實(shí),技術(shù)很強(qiáng)的感覺,熟不知這句話搞編程的絕大多數(shù)人都知道。
對(duì)于工作三年以上,真正意義上,經(jīng)歷過硬仗、經(jīng)歷過好多線上問題,對(duì)系統(tǒng)穩(wěn)定性、并發(fā)量雙重考驗(yàn)下,都深入底層,都摸過這些東西的,才會(huì)慢慢的對(duì)這句話有新的認(rèn)知,這些大佬站的層次不一樣,說出來是真的深有體會(huì),其他很多人也就是聽過這句話,在轉(zhuǎn)述一下而已,對(duì)于初入編程的人來說,我個(gè)人覺得這句話意義不大!
對(duì)于初入編程,要轉(zhuǎn)行的人來說,首要的就是在某一領(lǐng)域做深、做精、打造自己的技術(shù)棧與技術(shù)品牌,往后才是橫向擴(kuò)展,此時(shí)語言的選擇就至關(guān)重要了;真的選擇不同,其后的發(fā)展也是不一樣的。
選擇,就是要站在你所處的環(huán)境,以及自己未來想去的公司,看清自己現(xiàn)在所處的階段,在什么階段,就把這個(gè)階段的事做好,才是你最佳的選擇;人最重要的就是要有自知之明,一定要清醒的認(rèn)識(shí)自己,以及當(dāng)下手里握的資源,把自己重新審視清楚,做好定位,再做選擇!
2、
對(duì)于基礎(chǔ),我沒說基礎(chǔ)不重要,基礎(chǔ)對(duì)于應(yīng)屆生,找工作是非常的重要的,對(duì)于已經(jīng)工作幾年了,主要就是看你工程或者算法能力,更多考察在項(xiàng)目經(jīng)驗(yàn)以及工程架構(gòu)、對(duì)系統(tǒng)設(shè)計(jì)的理解上面了。
不知道啥時(shí)候,又冒出來這么一句話:熟練掌握一門語言之后,其他語言就能很快的熟悉起來,我想說的是,對(duì)于 C++、Java,Go,Python,每一門語言入門容易,想要深入學(xué)習(xí),想要把各種特性都摸清楚,都很難的,沒一門語言,是你想的那么簡(jiǎn)單,在短期內(nèi)只能是入門級(jí)別的水平。
說說我自己的情況吧,我曾經(jīng)說過,對(duì)于 Python 幾乎不用學(xué)習(xí),直接就可以上手,對(duì)于 Python 的爬蟲、到數(shù)據(jù)分析,再到深度學(xué)習(xí),用 python 寫算法,這個(gè)流程下來,只是完成業(yè)務(wù)需求的話,自己可以很快的解決;你有沒有想過背后的原因,我之前是 Linux C/C++ 出身的,在這個(gè)領(lǐng)域已經(jīng)走得很深了,對(duì)于很多編程哲學(xué)、編程思想、以及編程習(xí)慣都是花費(fèi)了好幾年的時(shí)間在這門語言上,對(duì)一門語言達(dá)到了非常的熟練,這才是我快速上手 Python 的根本原因(但也僅僅只限于完成業(yè)務(wù)需求)。
對(duì)于你說你 Python 已經(jīng)很熟悉了,之前沒接觸過 C++,你能快速的學(xué)會(huì)嗎?就單說 C++,你的 Linux、Vim 這些的特別熟悉,才能很好的在服務(wù)器上進(jìn)行開發(fā);見過好多 Python 的都用什么開發(fā)工具,我寫 C++ 或者 Python 都是 Linux 下面的 Vim,我個(gè)人是特別的喜歡 Vim,已經(jīng)脫離鼠標(biāo)大半年了,一款良好的開發(fā)工具會(huì)讓你提升效率,做起事情來,是事半功倍的!
我自己覺得自己基礎(chǔ)知識(shí)還算扎實(shí),C/C++ 語言學(xué)的也不錯(cuò),Python 你們也覺得簡(jiǎn)單,但是我快速上手之后,也就是完成一些業(yè)務(wù)需求還可以,對(duì)于深層次的 ,用 python 寫算法、寫模型,以及 python 數(shù)據(jù)挖掘這方面,自己很多也不懂,畢竟沒有在這個(gè)領(lǐng)域深入學(xué)習(xí);還有就是別人總說這句話,給我的感覺就是別人都能很快的熟悉一門語言,技術(shù)能力都很強(qiáng),而我自己遠(yuǎn)遠(yuǎn)沒有達(dá)到熟悉的地步(也就是入門,完成需求,能用而已),可能就是我個(gè)人比較笨了,學(xué)習(xí)能力還有欠缺,這有可能這是我自身原因;我想問問,大家在熟悉了一門語言之后,在學(xué)另一門很快的就達(dá)到了熟悉的地步嗎?(其實(shí)很多人掌握的語言很多,但都僅僅是入門級(jí)別水平的,沒有自己能拿得出手的東西)。
基礎(chǔ)很重要,語言是其次,熟練掌握一門語言后,其他語言學(xué)起來很快的,說起來容易,做起來你就知道有多難了,工作幾年以上的,其實(shí)說這些話,是他們所站的高度、水平都具有了,以及在編程領(lǐng)域多年的經(jīng)驗(yàn);從他們自身的角度上出發(fā),說出來是為了大家好,真的挺好的;但是有些人,經(jīng)常把這句話掛在嘴邊,真是不知道自己能力有沒有達(dá)到,反正給人一種很厲害的感覺!
很多大佬說的這些話,是真的有這個(gè)水平了,也是有這個(gè)能力的,他們所處的環(huán)境跟你不一樣啊!但是,你要知道,這個(gè)是針對(duì)的少數(shù)人,對(duì)極其牛逼的程序員來說,語言真的是其次,基礎(chǔ)真的特別重要,這些話沒毛病,在之后編程技術(shù)發(fā)展的道路上會(huì)體現(xiàn)出來的(等你們工作一段時(shí)間就明白了);對(duì)于很多人,平庸的程序員還是占多數(shù)的,在編程這行,想要出類拔萃,光靠努力是不夠的,還得有點(diǎn)邏輯思維,以及智力的,在編程領(lǐng)域干個(gè)幾年轉(zhuǎn)行的,轉(zhuǎn)產(chǎn)品的、轉(zhuǎn)管理的、編程語言還是其次嗎?基礎(chǔ)真的很重要嗎?
基礎(chǔ)很重要,語言是其次,掌握一門語言,就能快速的掌握其他語言(很多人都不會(huì)自己思考,光覺得是很有道理,說起來容易啊,真的有多少人能真正的做到呢!),自己沒有深刻的體會(huì),總是得不到精髓,我還需要在多工作幾年,對(duì)自己磨練磨練,再回過頭來好好的體會(huì)這句話;在剛工作的時(shí)候,掌握一門編程語言,熟練的掌握它,一定要做深、做精,這是你吃飯的家伙,對(duì)于大部分人而言,選擇一個(gè)方向,深入學(xué)習(xí)一門語言,真的真的是很重要的。
3、
Python 還是 Java,簡(jiǎn)直就是一場(chǎng)巔峰對(duì)決!
好好選擇一門語言,深入的學(xué)習(xí)下去,這個(gè)很重要!
對(duì)于基礎(chǔ):數(shù)據(jù)結(jié)構(gòu) + 算法,操作系統(tǒng) + 計(jì)算機(jī)網(wǎng)絡(luò),數(shù)據(jù)庫 + Linux,C 語言,這些基礎(chǔ)知識(shí),在學(xué)習(xí)語言的時(shí)候,不可忽視,是你面試的重點(diǎn)(不管工作上能不能用到、以及以后會(huì)不會(huì)用上,掌握了對(duì)你都是有幫助的,相信在編程之路上走的長(zhǎng)遠(yuǎn),的有這些基礎(chǔ)知識(shí)的支撐)。
基礎(chǔ)這塊,我強(qiáng)調(diào)一點(diǎn),被人忽視的 C 語言,C 語言掌握的怎么樣?C 你學(xué)到了什么程度?將會(huì)影響你今后在編程的路上能走多遠(yuǎn),走多快,我個(gè)人一直把 C 語言當(dāng)做基礎(chǔ),不管你學(xué)的是什么方向,C++、Java、Python,學(xué) C 是與語言無關(guān)的,C 是基礎(chǔ),有時(shí)間的話,都要把 C 語言學(xué)好,是絕對(duì)不虧的一件事情,C 的精髓、C 的理念、C 的哲學(xué)、都是很有指導(dǎo)性意義的!
基礎(chǔ)是功底,語言是大方向,基礎(chǔ)在面試中起的作用相當(dāng)大(尤其校招面試),語言的熟練程度,影響著工作的效率,在工作中,主要還是完成需求,完成工作任務(wù),明確兩者之間的關(guān)系就好。
4、
對(duì)于在校學(xué)生,很多人都糾結(jié)于 Java/C++ 和 Python,下面我就直說了。
對(duì)于目前大的趨勢(shì)來說,未來的人工智能、數(shù)據(jù)分析、機(jī)器學(xué)習(xí),這些肯定有大量的崗位,而這些正是 Python 非常擅長(zhǎng)的地方,Java 更偏向于做一些應(yīng)用級(jí)別、服務(wù)器級(jí)別的工程類項(xiàng)目,C++ 就是偏游戲和底層了。
對(duì)于學(xué)校是普通一本或者二本,也是本科學(xué)生,想著本科畢業(yè)就找工作,那么走后臺(tái)開發(fā)職位,Java 或者 Linux C/C++ 方向,只要基礎(chǔ)扎實(shí),語言熟練,能力強(qiáng),本科畢業(yè)去 BAT 級(jí)別的公司工作可能性很大(實(shí)在不知道選啥,首選 Java,對(duì) C 有興趣的可以走 C++)。
對(duì)于學(xué)校是 211/985 院校的本科生,完全在本科期間就可以走機(jī)器學(xué)習(xí)、數(shù)據(jù)挖掘、人工智能相關(guān)崗位,因?yàn)樗惴◢彛壳皝砜矗€是比較看學(xué)歷的,這個(gè)是真的,學(xué)校好的話,本科走算法沒問題。
對(duì)于研究生來說,我認(rèn)識(shí)很多研究生找 Java 后臺(tái)開發(fā)崗的,也有很多人找算法崗的,無所謂的,只要自己喜歡這個(gè)崗位,都是可以的,研究生的可選擇性比本科大(注意:我說的是研究生,哪怕你是普通一本的研究生),可以全憑興趣方向,全憑把握(自己衡量算法和開發(fā)崗)找工作。
我都說了,以上的戰(zhàn)略規(guī)劃,是針對(duì)絕大部分人,針對(duì)想去 BAT 級(jí)別互聯(lián)網(wǎng)大廠的。
如果你想去大廠工作,按照這個(gè)做決定,就沒什么問題了,如果你想本科畢業(yè)先隨便找份工作,小公司或者創(chuàng)業(yè)公司都可以,那么與學(xué)校無關(guān),自己感興趣什么就學(xué)什么,學(xué) Python、學(xué)爬蟲、學(xué)數(shù)據(jù)分析,都可以的,也應(yīng)該能找到工作,只不過不是大廠而已。
目前來說,Python、Python 爬蟲以及 python 后端開發(fā),數(shù)據(jù)分析,這些崗位, BAT 校招很少招的,如果走工程方向的話,只會(huì)一門 Python,只能算是加分項(xiàng),工程能力目前主流是:C++、Java、Go,學(xué)了 Python,還想拿這個(gè)找工作的話,直奔算法崗!
算法崗,目前確實(shí)競(jìng)爭(zhēng)激烈,但是你真感興趣,本科還是 985/211,或者你是研究生,沒啥擔(dān)心的,只要學(xué)的好,有能力還擔(dān)心找不到嗎?如果你學(xué)校不好,你還對(duì)算法崗感興趣,想走這個(gè)方向,那就做好本科畢業(yè),不去大廠工作的打算就好了,隨便找份工作應(yīng)該還是可以的,之后社招在想辦法進(jìn)大廠。
對(duì)于 Python 來說,隨著 AI 的不斷推廣,相關(guān)崗位在未來肯定有大幅度的增加,可以利用業(yè)余時(shí)間,往這個(gè)方向上靠攏,學(xué)習(xí),積蓄力量,提升自己,機(jī)會(huì)一旦到了,抓住就好了。
歸納總結(jié)
我個(gè)人一直認(rèn)為只有選擇好了,大方向不錯(cuò),才能達(dá)到自己的預(yù)期;編程行業(yè),選好一門語言(C 是基礎(chǔ),不算),在通過不斷做項(xiàng)目,來達(dá)到熟練,做深、做精才是你要做的事情,對(duì)于當(dāng)下的你來說,選擇一門合適的,自己感興趣的語言進(jìn)行學(xué)習(xí),是至關(guān)重要的,工作了,你就會(huì)發(fā)現(xiàn),語言真的不是其次,這是吃飯的家伙啊(不熟的話,很影響效率的)!
其實(shí),我知道,在當(dāng)下,鼓吹 Python、算法崗的人多了去了,很多人辨別能力有待提高,多去想想,多思考,算法崗,高薪是那么好拿的嗎?別被別人帶動(dòng),你自己要想清楚了;我簡(jiǎn)單說一下,學(xué)校不好,還想本科畢業(yè)做算法,就別太抱去 BAT 級(jí)別大廠工作的想法了(也不是完全沒可能,只是真的很難,認(rèn)清現(xiàn)實(shí)),學(xué)校是 211/985,不管本科還是研究生,畢業(yè)去 BAT 級(jí)別做算法,沒問題的(在行業(yè)里,算法崗目前還是看學(xué)歷的),學(xué)校不行,還是本科,實(shí)在想做算法,畢業(yè)還想去大廠工作,那就考研啊(有個(gè)研究生學(xué)歷,最起碼門檻過了)!
認(rèn)真看完的,尤其在校的,我相信,對(duì)于學(xué)哪門語言,你肯定心中有數(shù)了,現(xiàn)在就是時(shí)間的問題;在學(xué)生時(shí)代,多花些時(shí)間,把基礎(chǔ)打好,語言熟練的掌握一門就夠了,沉下心來,踏踏實(shí)實(shí)的,好好的專研一陣技術(shù),對(duì)于編程界流傳的那些話,那些是大佬們深有體會(huì)總結(jié)的(大佬的視角站的角度不一樣),其實(shí)對(duì)于現(xiàn)階段的你們,對(duì)我也一樣,沒啥太大的價(jià)值,沒啥有效信息啊,只有你做到了,真正的理解了,在說出來,才有底氣!
在學(xué)生時(shí)代,熟悉一門語言,真的很重要;工作了,就沒有大把的時(shí)間來好好的專研技術(shù)了,對(duì)于現(xiàn)階段,選擇真的很重要,我只是把我的一些想法,思考分享出來,做決定在你自己!
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號(hào)聯(lián)系: 360901061
您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對(duì)您有幫助就好】元
