初學者學習Python好還是Java好
網路上有很多關於語言選擇的問題,其中關於Python和Java的問題大抵如下:
Python和Java該如何選擇 ?
將來Python(Java)會不會替代Java(Python) ?
零基礎應該選擇學習Python還是Java ?
做web開發,用Python好還是Java好呢?
這類問題過一段時間就得來一波,今天就以這個為切入點和大家嘮嘮。
為啥要說這個話題?
Python既是一個大眾化的語言,也是一小搓兒開發者喜歡的語言。怎麼說呢?
每個開發者都應該學學Python這個膠水語言,後端開發者不會Python都不好意思出門和別人打招呼。事實上基本在每個公司都有Python的身影,只不過公司的核心業務、使用者產品很少用Python來做。
國內大一點的、使用Python做基礎設施的公司1隻手就可以數出來:豆瓣、知乎、美團、餓了麼、搜狐(漏掉的歡迎補充)。 公司級別把Python作為核心的公司屈指可數,它更像是一波有「特殊」感情開發者的選擇,這波人品味很挑剔,這個有點難描述,參照Pythonic這個詞希望你成為的開發者吧。
Python在國外環境要好得多,但是在國內一直在緩慢的贏得更多人的心,在我的感覺裡還有點「病態」發展(這個就不展開了),增速是可預期的,不會出現井噴式的增長。
職位就是那麼多,很多人抱怨找不到工作,究其原因,無非是市場冷靜客觀下來優勝劣汰,能力不達標罷了。據我所知,只要你的能力匹配,Python高階工程師是非常受市場青睞的。
造成Python市場不好的原因有哪些?
政治。我們都知道語言通常不是技術瓶頸,那為什麼公司會有很強烈的技術選型因素?這其實是「政治」。BAT出來的人到其他小型公司做高管,他們為了站穩會選擇重構成自己熟悉和喜歡的技術棧,而且重構大部分是為了KPI和晉升。這些有話語權的人往往不會Python,只熟悉傳統的PHP,Java,這就造成一種「惡性」迴圈,其他語言的市場熱度不會降下去,政治正確要比技術正確更重要,Python語言很難在這種環境裡突破重圍。那麼知乎、餓了麼這些公司為什麼選擇Python?嘿嘿,除了創業早期為了顯得逼格高(有時候這是創業營銷的一種需要),他們的高管中有些是豆瓣出去的哦,所以你看到同樣的現象,豆瓣出去的人做技術決策的結果選了Python。
招人難。國內找靠譜的Python工程師實在是太難了。會Python和真的靠它吃飯差別實在太大了,知乎Python話題下大部分充其量算是會用Python寫指令碼的人在強答罷了。你看我的同事或者我瞭解到的Python領域裡面的開發者基本都是不用知乎也不回答Python問題的。我們知道,Python非常適合創業期完成產品快速試錯和迭代,如果一個公司沒有優秀的開發者坐鎮,我還是不太相信用Python能堅持下去的,太多工程問題真的不是學院派能解決的,很多問題Google/SO是找不到的。那麼用人荒造成了想選擇Python為公司技術棧的公司望而卻步,最後惡性迴圈大家都不太敢讓核心系統用Python了。
總有刁民拿效能說事兒。效能問題確實是存在的,但事實上絕大部分公司和產品真的不需要擔心這點,也有人說Python沒有大型網站的頂級的解決方案。其實不然,國內有豆瓣,國外有Instagram、Reddit等等成功的案例,我說了很多遍了,決定網站效能的主要因素是架構,然後是程式碼水平,最後才是語言。 但是很多對Python一知半解的人就被這麼嚇跑了,並且拿著這些槽點去嚇別人。
技術環境不好。PyCON北京場都組織不起來,真的有乾貨的開發者都不出來活動,萬事與Ta無關高高掛起,反觀前端氛圍真的很好。很多新人想入坑,但是沒人帶,沒方向,沒組織,外面盡是壞人,每天看到的都是型別於發爬蟲這種很low級別的技術文章,這種氣氛下,未來真的青黃不接呀。
Python or Java?
終於到了正題了。工作和個人專案中會常用到Python,Golang,Lua,Javascript、CSS,做運維的時候還用過Perl和Ruby。很多年前看《程式設計師修煉之道》,作者建議每年至少學習一門新語言,每季度閱讀一本技術書籍,非常有道理。其實學習語言無非是語法、庫和框架這三者,如果掌握正確的方法一個月就能開始用它寫點東西了,沒什麼必要糾結學那個的問題,開發者的基本素養之一就是整個職業生涯裡面都得不斷學習,除非我不認同某個語言的設計哲學和語法,比如我個人是不喜歡Java的。學的時候可以帶著問題來學,比如A語言和B語言相比有什麼優劣,設計上為什麼不同、它們只能有很麼互相借鑑的地方,為什麼?等以後在工作中可以針對不同的專案特點選擇合適的語言。我愛Python,但是隻在正確的時候用它,而不是一棒子打死無論什麼場景都用某語言,要記住,用語言或 者框架來劃分技術其實很幼稚。
插個題外話,可能有的讀者會問「那怎麼不見你寫/回答Golang、Rust等方面的文章/問題呀」?因為不自信,不想誤人子弟,也不想強答。「自信」是什麼呢?就是使用它的時候不擔心有什麼解決不了的問題,天下我有的感覺,大不了看原始碼,我C學的不好,但是不影響我帶著問題讀CPython的原始碼,不過離貢獻C程式碼就差的很遠了,我現在也沒想著走這一步,所以對C語言的掌握程度好久沒變過了。如果沒有經過4-5年的深入和實踐,我真的不覺得能在某個領域指手畫腳。
說到選擇。如果你沒有強烈的對語言的認可或者不認可,單純為了儘快養家餬口,選Java,因為市場需求量大,應用廣泛,成熟案例多。如果你很理解「人生苦短我用Python」這句話,答案就不言而喻了,不過無論是否選擇Python吃飯,甚至你不是一個純純的開發者,我還是再建議你應該也要學學Python。
之前在知乎看到過大概這樣一句話「只會Python找工作很難」,我是認可的。通過觀察和了解,我身邊的大部分除了Python都能使用其他技術完成工作,比如前端、IOS、安卓等。無論Python還是Java都只是程式語言,工作中還需要具備很多其他的能力,拿Web開發來說(這裡不考慮軟技能和需求分析、溝通協作等方面的事情),HTTP/TCP、Linux、資料庫、Web伺服器、第三方庫和框架、Web基礎(HTML/CSS/JS/ES6) 、訊息佇列、分散式、虛擬化、RPC、快取、搜尋引擎、微服務、上線流程、趁手的開發工具、除錯流程、分散式檔案系統、安全等等,隨便一想就這麼多內容。當然最難的和最有價值的是工作經驗。只會程式語言算什麼?你有什麼競爭力,你給個有點悟性的本科生2個月時間工作起來不會差很多。一定不要放大程式語言對於找工作的重要性。
另外插個話題。應屆生找工作對語言的要求並沒有那麼重要,反而資料結構、演算法、計算機系統、Linux、計算機網路甚至英語這些基礎更重要。希望還沒有畢業的同學能夠抓緊時間多多充電。多看書多時間多刷題。
知識點補充:
Java歷史
Java是一種面向物件的程式語言,由1995年由Sun Microsystems的James Gosling Jr.領導的軟體工程師團隊設計。
其背後的理念是“Write One,Run Anywhere”(WORA),這意味著它可以在支援Java虛擬機器(JVM)的多臺機器和平臺上執行而無需任何程式碼修改。Java程式碼編譯為位元組碼 - 一種直接轉換為本機程式碼的中間語言。
Java的語法大量借鑑了C ++和其他面向物件的語言,如Smalltalk,Ada和Modula-3,因此其強大的輸入影響力。因此,具有C ++和其他語言經驗的程式設計師會發現學習起來非常舒服。
Python歷史
Python是一種動態型別,面向物件的程式語言,由Guido Van Rossum於1991年設計,Python支援多種程式設計範例,包括面向物件,命令式,功能性和程式性。
與Java的位元組碼不同,Python是一種解釋語言,這意味著它使用瞭解釋器。這使得它比Java慢一點。
對於來自C / C ++世界的程式設計師來說,Python的duck-typed語法可能看起來有些奇怪,但大多數程式設計師發現,一旦我們掌握了它,它就會更有趣。
Python在業界獲得了很大的關注,特別是在Web應用程式開發,遊戲開發,資料科學,機器學習和資料分析領域。
如果你以前從未學過程式設計,我通常會推薦Java作為第一語言。Python是一種很好的語言,因為python語法比較開放,但是Python隱藏的語法糖太多,這讓新程式設計師感到困惑。
到此這篇關於初學者學習Python好還是Java好的文章就介紹到這了,更多相關選Python好還是Java好內容請搜尋我們以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援我們!