初學(xué)者學(xué)習(xí)Python好還是Java好
網(wǎng)絡(luò)上有很多關(guān)于語言選擇的問題,其中關(guān)于Python和Java的問題大抵如下:
Python和Java該如何選擇 ?
將來Python(Java)會不會替代Java(Python) ?
零基礎(chǔ)應(yīng)該選擇學(xué)習(xí)Python還是Java ?
做web開發(fā),用Python好還是Java好呢?
這類問題過一段時間就得來一波,今天就以這個為切入點和大家嘮嘮。
為啥要說這個話題?
Python既是一個大眾化的語言,也是一小搓兒開發(fā)者喜歡的語言。怎么說呢?
每個開發(fā)者都應(yīng)該學(xué)學(xué)Python這個膠水語言,后端開發(fā)者不會Python都不好意思出門和別人打招呼。事實上基本在每個公司都有Python的身影,只不過公司的核心業(yè)務(wù)、用戶產(chǎn)品很少用Python來做。
國內(nèi)大一點的、使用Python做基礎(chǔ)設(shè)施的公司1只手就可以數(shù)出來:豆瓣、知乎、美團(tuán)、餓了么、搜狐(漏掉的歡迎補充)。 公司級別把Python作為核心的公司屈指可數(shù),它更像是一波有「特殊」感情開發(fā)者的選擇,這波人品味很挑剔,這個有點難描述,參照Pythonic這個詞希望你成為的開發(fā)者吧。
Python在國外環(huán)境要好得多,但是在國內(nèi)一直在緩慢的贏得更多人的心,在我的感覺里還有點「病態(tài)」發(fā)展(這個就不展開了),增速是可預(yù)期的,不會出現(xiàn)井噴式的增長。
職位就是那么多,很多人抱怨找不到工作,究其原因,無非是市場冷靜客觀下來優(yōu)勝劣汰,能力不達(dá)標(biāo)罷了。據(jù)我所知,只要你的能力匹配,Python高級工程師是非常受市場青睞的。
造成Python市場不好的原因有哪些?
政治。我們都知道語言通常不是技術(shù)瓶頸,那為什么公司會有很強(qiáng)烈的技術(shù)選型因素?這其實是「政治」。BAT出來的人到其他小型公司做高管,他們?yōu)榱苏痉€(wěn)會選擇重構(gòu)成自己熟悉和喜歡的技術(shù)棧,而且重構(gòu)大部分是為了KPI和晉升。這些有話語權(quán)的人往往不會Python,只熟悉傳統(tǒng)的PHP,Java,這就造成一種「惡性」循環(huán),其他語言的市場熱度不會降下去,政治正確要比技術(shù)正確更重要,Python語言很難在這種環(huán)境里突破重圍。那么知乎、餓了么這些公司為什么選擇Python?嘿嘿,除了創(chuàng)業(yè)早期為了顯得逼格高(有時候這是創(chuàng)業(yè)營銷的一種需要),他們的高管中有些是豆瓣出去的哦,所以你看到同樣的現(xiàn)象,豆瓣出去的人做技術(shù)決策的結(jié)果選了Python。
招人難。國內(nèi)找靠譜的Python工程師實在是太難了。會Python和真的靠它吃飯差別實在太大了,知乎Python話題下大部分充其量算是會用Python寫腳本的人在強(qiáng)答罷了。你看我的同事或者我了解到的Python領(lǐng)域里面的開發(fā)者基本都是不用知乎也不回答Python問題的。我們知道,Python非常適合創(chuàng)業(yè)期完成產(chǎn)品快速試錯和迭代,如果一個公司沒有優(yōu)秀的開發(fā)者坐鎮(zhèn),我還是不太相信用Python能堅持下去的,太多工程問題真的不是學(xué)院派能解決的,很多問題Google/SO是找不到的。那么用人荒造成了想選擇Python為公司技術(shù)棧的公司望而卻步,最后惡性循環(huán)大家都不太敢讓核心系統(tǒng)用Python了。
總有刁民拿性能說事兒。性能問題確實是存在的,但事實上絕大部分公司和產(chǎn)品真的不需要擔(dān)心這點,也有人說Python沒有大型網(wǎng)站的頂級的解決方案。其實不然,國內(nèi)有豆瓣,國外有Instagram、Reddit等等成功的案例,我說了很多遍了,決定網(wǎng)站性能的主要因素是架構(gòu),然后是代碼水平,最后才是語言。 但是很多對Python一知半解的人就被這么嚇跑了,并且拿著這些槽點去嚇別人。
技術(shù)環(huán)境不好。PyCON北京場都組織不起來,真的有干貨的開發(fā)者都不出來活動,萬事與Ta無關(guān)高高掛起,反觀前端氛圍真的很好。很多新人想入坑,但是沒人帶,沒方向,沒組織,外面盡是壞人,每天看到的都是類型于發(fā)爬蟲這種很low級別的技術(shù)文章,這種氣氛下,未來真的青黃不接呀。
Python or Java?
終于到了正題了。工作和個人項目中會常用到Python,Golang,Lua,Javascript、CSS,做運維的時候還用過Perl和Ruby。很多年前看《程序員修煉之道》,作者建議每年至少學(xué)習(xí)一門新語言,每季度閱讀一本技術(shù)書籍,非常有道理。其實學(xué)習(xí)語言無非是語法、庫和框架這三者,如果掌握正確的方法一個月就能開始用它寫點東西了,沒什么必要糾結(jié)學(xué)那個的問題,開發(fā)者的基本素養(yǎng)之一就是整個職業(yè)生涯里面都得不斷學(xué)習(xí),除非我不認(rèn)同某個語言的設(shè)計哲學(xué)和語法,比如我個人是不喜歡Java的。學(xué)的時候可以帶著問題來學(xué),比如A語言和B語言相比有什么優(yōu)劣,設(shè)計上為什么不同、它們只能有很么互相借鑒的地方,為什么?等以后在工作中可以針對不同的項目特點選擇合適的語言。我愛Python,但是只在正確的時候用它,而不是一棒子打死無論什么場景都用某語言,要記住,用語言或 者框架來劃分技術(shù)其實很幼稚。
插個題外話,可能有的讀者會問「那怎么不見你寫/回答Golang、Rust等方面的文章/問題呀」?因為不自信,不想誤人子弟,也不想強(qiáng)答。「自信」是什么呢?就是使用它的時候不擔(dān)心有什么解決不了的問題,天下我有的感覺,大不了看源碼,我C學(xué)的不好,但是不影響我?guī)е鴨栴}讀CPython的源碼,不過離貢獻(xiàn)C代碼就差的很遠(yuǎn)了,我現(xiàn)在也沒想著走這一步,所以對C語言的掌握程度好久沒變過了。如果沒有經(jīng)過4-5年的深入和實踐,我真的不覺得能在某個領(lǐng)域指手畫腳。
說到選擇。如果你沒有強(qiáng)烈的對語言的認(rèn)可或者不認(rèn)可,單純?yōu)榱吮M快養(yǎng)家糊口,選Java,因為市場需求量大,應(yīng)用廣泛,成熟案例多。如果你很理解「人生苦短我用Python」這句話,答案就不言而喻了,不過無論是否選擇Python吃飯,甚至你不是一個純純的開發(fā)者,我還是再建議你應(yīng)該也要學(xué)學(xué)Python。
之前在知乎看到過大概這樣一句話「只會Python找工作很難」,我是認(rèn)可的。通過觀察和了解,我身邊的大部分除了Python都能使用其他技術(shù)完成工作,比如前端、IOS、安卓等。無論Python還是Java都只是編程語言,工作中還需要具備很多其他的能力,拿Web開發(fā)來說(這里不考慮軟技能和需求分析、溝通協(xié)作等方面的事情),HTTP/TCP、Linux、數(shù)據(jù)庫、Web服務(wù)器、第三方庫和框架、Web基礎(chǔ)(HTML/CSS/JS/ES6) 、消息隊列、分布式、虛擬化、RPC、緩存、搜索引擎、微服務(wù)、上線流程、趁手的開發(fā)工具、調(diào)試流程、分布式文件系統(tǒng)、安全等等,隨便一想就這么多內(nèi)容。當(dāng)然最難的和最有價值的是工作經(jīng)驗。只會編程語言算什么?你有什么競爭力,你給個有點悟性的本科生2個月時間工作起來不會差很多。一定不要放大編程語言對于找工作的重要性。
另外插個話題。應(yīng)屆生找工作對語言的要求并沒有那么重要,反而數(shù)據(jù)結(jié)構(gòu)、算法、計算機(jī)系統(tǒng)、Linux、計算機(jī)網(wǎng)絡(luò)甚至英語這些基礎(chǔ)更重要。希望還沒有畢業(yè)的同學(xué)能夠抓緊時間多多充電。多看書多時間多刷題。
知識點補充:
Java歷史
Java是一種面向?qū)ο蟮木幊陶Z言,由1995年由Sun Microsystems的James Gosling Jr.領(lǐng)導(dǎo)的軟件工程師團(tuán)隊設(shè)計。
其背后的理念是“Write One,Run Anywhere”(WORA),這意味著它可以在支持Java虛擬機(jī)(JVM)的多臺機(jī)器和平臺上運行而無需任何代碼修改。Java代碼編譯為字節(jié)碼 - 一種直接轉(zhuǎn)換為本機(jī)代碼的中間語言。
Java的語法大量借鑒了C ++和其他面向?qū)ο蟮恼Z言,如Smalltalk,Ada和Modula-3,因此其強(qiáng)大的輸入影響力。因此,具有C ++和其他語言經(jīng)驗的程序員會發(fā)現(xiàn)學(xué)習(xí)起來非常舒服。
Python歷史
Python是一種動態(tài)類型,面向?qū)ο蟮木幊陶Z言,由Guido Van Rossum于1991年設(shè)計,Python支持多種編程范例,包括面向?qū)ο?,命令式,功能性和程序性?/p>
與Java的字節(jié)碼不同,Python是一種解釋語言,這意味著它使用了解釋器。這使得它比Java慢一點。
對于來自C / C ++世界的程序員來說,Python的duck-typed語法可能看起來有些奇怪,但大多數(shù)程序員發(fā)現(xiàn),一旦我們掌握了它,它就會更有趣。
Python在業(yè)界獲得了很大的關(guān)注,特別是在Web應(yīng)用程序開發(fā),游戲開發(fā),數(shù)據(jù)科學(xué),機(jī)器學(xué)習(xí)和數(shù)據(jù)分析領(lǐng)域。
如果你以前從未學(xué)過編程,我通常會推薦Java作為第一語言。Python是一種很好的語言,因為python語法比較開放,但是Python隱藏的語法糖太多,這讓新程序員感到困惑。
到此這篇關(guān)于初學(xué)者學(xué)習(xí)Python好還是Java好的文章就介紹到這了,更多相關(guān)選Python好還是Java好內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- golang、python、php、c++、c、java、Nodejs性能對比
- 為什么入門大數(shù)據(jù)選擇Python而不是Java?
- Java與Python兩大幸存者誰更勝一籌呢
- python、java等哪一門編程語言適合人工智能?
- 人工智能最火編程語言 Python大戰(zhàn)Java!
- C、C++、Java到Python,編程入門學(xué)習(xí)什么語言比較好
- 大數(shù)據(jù)分析用java還是Python
- Python和Java的語法對比分析語法簡潔上python的確完美勝出
- python和java哪個學(xué)起來更簡單
- 將來會是Python、Java、Golang三足鼎立的局面嗎
- 開發(fā)者必讀:揭秘Python與Java的性能較量
相關(guān)文章
Python中的正則表達(dá)式與JSON數(shù)據(jù)交換格式
正則表達(dá)式 是一個特殊的字符序列,一個字符串是否與我們所設(shè)定的這樣的字符序列,相匹配快速檢索文本、實現(xiàn)替換文本的操作。這篇文章主要介紹了Python中的正則表達(dá)式與JSON ,需要的朋友可以參考下2019-07-07python、PyTorch圖像讀取與numpy轉(zhuǎn)換實例
今天小編就為大家分享一篇python、PyTorch圖像讀取與numpy轉(zhuǎn)換實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-01-01使用pandas的DataFrame的plot方法繪制圖像的實例
今天小編就為大家分享一篇使用pandas的DataFrame的plot方法繪制圖像的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-05-05利用Python實現(xiàn)簡單的Excel統(tǒng)計函數(shù)
這篇文章主要介紹了利用Python實現(xiàn)簡單的Excel統(tǒng)計函數(shù),文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下2022-07-07