糾結應該先學Python還是Java?看完就有數了

優達學城Udacity發表於2019-03-04

準備學習程式設計前,你一定會開啟電腦搜尋一下“先學Python還是先學Java?”撲面而來的是海量回答。

如果你問一名Java程式設計師,肯定會建議你先學Java,因為他們認為Python像個乳臭未乾的黃毛小子。但如果你問Python程式設計師,可能會得到一個完全相反的答案,他們認為Java是刻板囉嗦的老大爺,而人生苦短,我用Python

但別擔心,今天我們將會從

  • 語言特色
  • 學習曲線
  • 職業方向
  • 市場需求

等多個方面為你解答“選擇Python還是Java的人生難題”


語言歷史

  • Python:生而為簡

Python是一門擁有簡潔語法的高階程式語言。一個名為Guido van Rossum的荷蘭大佬在1991年設計了它。Rossum設計這門語言的初衷,就是為了讓程式碼讀起來更輕鬆,並且讓程式設計師們比起用其他語言,可以寫更少的程式碼,事半功倍。


  • Java:出生就想當老大

而Jame Gosling在1995年設計了Java。 Java是一門以Class為單位,高度物件導向的高階程式語言。Java的設計初衷是“寫一次程式碼,在哪裡都可以用。” Java可以完成任何規模的任務,所以它也是很多公司在做商業級專案的時候的普遍選擇。


語言本身

  • Python: 語法簡潔,容易上手
  • Java:語法稍微複雜


從語言本身來說,Python是出了名的簡潔,容易上手。一個Python的粉絲曾經寫過一首名為 The Zen of Python (Python之禪)的詩來讚頌這門語言的優雅。以下這首詩的節選翻譯。

優美勝於醜陋(Python 以編寫優美的程式碼為目標)

明瞭勝於晦澀(優美的程式碼應當是明瞭的,命名規範,風格相似)

簡潔勝於複雜(優美的程式碼應當是簡潔的,不要有複雜的內部實現)

複雜勝於凌亂(如果複雜不可避免,那程式碼間也不能有難懂的關係,要保持介面簡潔)

扁平勝於巢狀(優美的程式碼應當是扁平的,不能有太多的巢狀)

間隔勝於緊湊(優美的程式碼有適當的間隔,不要奢望一行程式碼解決問題)

可讀性很重要(優美的程式碼是可讀的)

即便假借特例的實用性之名,也不可違背這些規則(這些規則至高無上)


國外著名科普暴漫xckd也有這樣一張形容Python之酸爽的著名漫畫。

糾結應該先學Python還是Java?看完就有數了

漫畫中提到了學習一門程式語言,如燒香拜佛般必做的一件事:讓螢幕輸出Hello World! 這句話。 在Python中,做這件事只需要寫一行程式碼:print "Hello World!"。 但是相比之下,Java實現這句話就要繁瑣得多,需要至少4行程式碼(不小心就diss了一下Java)。總之,用Python程式設計,比起其他語言,更像是直接在和電腦對話。

public class HelloWorld {

public static void main(String[] args) {

System.out.println("Hello, World");

}

}


如此對比,Python的簡潔明瞭和上手的容易程度就一目瞭然了。當然,這還只是一個例子,很多時候Python一兩行程式碼就能搞定的事情,Java卻需要多達10行,甚至20行。Python省去了像Java一樣死記硬背語法和結構的時間。只需要基本的學習,你就可以讀懂很多程式碼了。正是因為如此簡單平緩的學習曲線,通過Python的學習,你可以很清晰地瞭解程式設計師的思維,更專注地學習程式設計通用的基本概念。在領悟透徹了這些知識以後,學習任何語言都是小菜一碟。許多國外知名大學,如MIT和哈佛,也漸漸地將計算機導論課程語言的選擇,從Java轉變成Python。Python甚至還因此進入了小學計算機教材中。


實際運用

  • Python
    • 通過豐富的Web開發框架,如Django和TurboGears,Python可以用來快速完成一個網站的開發和Web服務。典型如國內的豆瓣、果殼網等
    • 自動化系統網路的執行維護中,大量重複性工作的地方,並需要做管理系統、監控系統、釋出系統等。
    • 人工智慧和資料分析
  • Java
    • 安卓app開發
    • 大型網站的後端
    • 大型的企業級應用
    • 大資料


最近一段時間流行度越來越高的Python,在行業與生活中的運用也十分廣泛。通過豐富的Web開發框架,如Django和TurboGears,Python可以用來快速完成一個網站的開發和Web服務。典型如國內的豆瓣、果殼網等;國外的Google、Dropbox等。在系統網路的執行維護中,有大量重複性工作的地方,並需要做管理系統、監控系統、釋出系統等,將工作自動化起來,提高工作效率,這樣的場景Python是一門非常合適的語言。因為Python的易於維護性,就連谷歌前段時間也將網站後臺的很多程式碼用Python重寫代替。業餘時間,也可以用Python寫寫簡單的網路爬蟲,看看誰拉黑了你的微信,甚至做一個刷票機器人。


當然,說到Python,就不得不提它目前最火熱的運用:人工智慧和資料分析。Python擁有十分完善的資料分析生態系統。Numpy & Scipy、Pandas、matplotlib 是 Python 最基本資料分析的三駕馬車,而 Jupyter notebook 則是分析的最基本互動式環境。只要涉及機器學習,深度學習,神經網路這些高大上的領域,是絕對避不開Python的。甚至看到很多研究者的討論帖子都建議早點把研究工具遷移到 Python 生態系統。最典型的例子就是人工智慧界最牛的老師之一:Andrew Ng教授。再前幾年的關於機器學習的線上課程裡,Andrew Ng不管課上講解還是課下作業,統統一律用MatLab。但是在今年新出的深度學習課程裡,他毫不猶豫地選擇了Python作為課程講解和作業的語言,並且強烈推薦廣大學習者熟練掌握Python。在人工智慧大行其道的今天,Python的運用前景和發展空間絕對是無限的。


雖然說了這麼多Python在難易程度上的優點,相對於Java,它也不是完全沒有缺點。即使使用Python開發的速度和效率比較高,但從執行的速度和效率來說,Java還是略勝一籌。當運算量很大時,Java的獨特平臺設計的好處就顯現了出來。Java使用的虛擬機器架構和獨樹一幟的JIT編譯模式能大大提高它的執行速度。這也是為什麼Java至今仍然是世界上最受歡迎的語言之一。


如果你想知道Java在實際生活中可以幹什麼,其實遠在天邊,近在眼前。如果你有一部安卓手機,幾乎所有App都是用Java寫成的。大型網站的後端,比如電子商務交易平臺阿里巴巴,淘寶,京東也都主要使用Java開發。大型的企業級應用比如大型企業管理系統,CRM系統,ERP系統也可以用Java開發。有關通訊及網路的大型企業,比如移動、聯通、電信、網通,有關金融行的大型企業,所有的銀行、證券公司、網際網路金融和大型管理系統,比如供應鏈,客戶管理系統,物流系統主要的資訊化都和Java息息相關。現在越來越火的大資料,最主流的框架Hadoop的主要開發語言也是Java。所以不難看出,Java還是行業應用不可撼動的老大哥。


薪資

Python

1.美團

糾結應該先學Python還是Java?看完就有數了

薪資:20k~40k


崗位職責: 1. 負責雲資料庫/雲主機控制平面研發工作 2. 加強平臺管理和控制功能,提升資源交付和管理效率


崗位要求:

1. 熟練使用Python,能寫出漂亮的Pythonic的程式碼;

2. 極強的學習能力和動力,對未知技術和領域能快速掌握並實踐;

3. 熟練掌握作業系統原理,Internet網路原理;

4. 有云平臺開發、自動運維平臺開發等大型Python專案經驗者優先;

5. 在開源社群活躍並有積極貢獻者優先。


2.攜程

糾結應該先學Python還是Java?看完就有數了

薪資:15k-25k


Python開發工程師:1. 負責運維平臺設計及開發,實現運維自動化和運維效率的提高 2. 幫助開發團隊改進開發流程和效率 3. 與運維團隊合作,收集需求,改善運維流程,實現各種運維工具,提高執行維護作業水平 4. 負責網站監控系統、資料收集和資料分析等系統的開發 5. 結合虛擬化技術,打造和完善攜程雲平臺


以下是加分項:

6. 熟悉大型網站運維工作,有運維開發經驗者優先;

7. 有CMDB/monitoring system/agent/automation系統設計與開發經驗者優先

8. 熟悉Puppet/Zabbix/Celery/RabbitMQ優先

9. 熟悉Python/Django/Tornaod優先

10. 熟悉前端開發(XHTML/JQuery/CSS)優先

11. 對OpenStack熟悉者優先


同時,資料顯示,2017年在僱主釋出的職位說明中,Python技能需求增速達到174%,居於首位,Spark、Hadoop等大資料技能需求增幅也十分靠前。


Java方面:

1、京東

糾結應該先學Python還是Java?看完就有數了

薪資:15k-30k


需要具備以下技能:

1、熟練掌握Java基礎,熟練掌握多執行緒開發技術,熟悉軟體開發流程;

2、熟悉主流Java開源框架如struts、hibernate、spring;

3、熟練掌握HTML/CSS/Javascript/jquery/Ajax;

4、熟悉Oracle/ SQL Server/MySQL其中的一種,並能熟練編寫SQL和儲存過程;

5、熟悉Linux系統,掌握Linux命令。


2、網易

糾結應該先學Python還是Java?看完就有數了

薪資:15k-30k


必須技能:

1、精通java,熟練運用SpringBoot、SpringMVC、Hibernate、Mybatis、struts、struts2等技術,能練使用JQuery或相關的JS框架,精通物件導向設計;

2、熟悉mysql/sqlserver資料庫,瞭解相關的資料庫維護和效能優化,熟悉Tomcat、weblogic等伺服器的配置與釋出;

3、全面紮實的軟體知識結構(作業系統、軟體工程、設計模式、資料結構、資料庫系統、網路安全等);

4、熟練SQL語句的編寫;思維活躍,具備一定的軟體設計能力及良好的軟體工程思想;


總結:


從語言本身,Python語法簡潔,容易上手,而Java以獨特的架構和較快的速度著稱。


Python作為最近越來越火的語言,是大資料和人工智慧的主力軍,同時也在網頁開發中廣泛運用。而Java則壟斷了企業級應用的開發。兩者工程師的薪資也都十分可觀。


文章到這裡,你還不會選的話,我也幫不了你們了233...


祝程式設計學習愉快。


最後,推薦一下優達學城的Python課程,零基礎入門,銷量繞地球三週(逃~~

Python基礎教程


和 Java課程(打起來打起來

Java入門奈米基石學位


作者:優達學員

來源:知乎

著作權歸作者所有。商業轉載請聯絡作者獲得授權,非商業轉載請註明出處。


相關文章