Python和Java二選一該學啥?這個問題是很多初學者都在糾結的。如果你問一名Java程序員,千鋒武漢小編肯定會建議你先學Java,因為他們認為Python像個乳臭未干的黃毛小子。但如果你問Python程序員,可能會得到一個完全相反的答案,他們認為Java是刻板啰嗦的老大爺,而人生苦短,我用Python。
但別擔心,小編將會從語言特色、學習本身、實際應用、就業(yè)薪資等多個方面為你解答“選擇python還是Java的人生難題”。
一、語言歷史
Python:生而為簡
Python是一門擁有簡潔語法的高級編程語言。一個名為Guido van Rossum的荷蘭大佬在1991年設計了它。Rossum設計這門語言的初衷,就是為了讓代碼讀起來更輕松,并且讓程序員們比起用其他語言,可以寫更少的代碼,事半功倍。
Java:出生就想當老大
而Jame Gosling在1995年設計了Java。Java是一門以Class為單位,高度面向?qū)ο蟮母呒壘幊陶Z言。Java的設計初衷是“寫一次代碼,在哪里都可以用。” Java可以完成任何規(guī)模的任務,所以它也是很多公司在做商業(yè)級項目的時候的普遍選擇。
二、語言本身
Python: 語法簡潔,容易上手
Java:語法稍微復雜
從語言本身來說,Python是出了名的簡潔,容易上手。一個Python的粉絲曾經(jīng)寫過一首名為 The Zen of Python (Python之禪)的詩來贊頌這門語言的優(yōu)雅。
以下這首詩的節(jié)選翻譯。
優(yōu)美勝于丑陋(Python 以編寫優(yōu)美的代碼為目標)
明了勝于晦澀(優(yōu)美的代碼應當是明了的,命名規(guī)范,風格相似)
簡潔勝于復雜(優(yōu)美的代碼應當是簡潔的,不要有復雜的內(nèi)部實現(xiàn))
復雜勝于凌亂(如果復雜不可避免,那代碼間也不能有難懂的關系,要保持接口簡潔)
扁平勝于嵌套(優(yōu)美的代碼應當是扁平的,不能有太多的嵌套)
間隔勝于緊湊(優(yōu)美的代碼有適當?shù)拈g隔,不要奢望一行代碼解決問題)
可讀性很重要(優(yōu)美的代碼是可讀的)
即便假借特例的實用性之名,也不可違背這些規(guī)則(這些規(guī)則至高無上)
國外著名科普暴漫xckd也有這樣一張形容Python之酸爽的著名漫畫。
漫畫中提到了學習一門編程語言,如燒香拜佛般必做的一件事:讓屏幕輸出Hello World! 這句話。
在Python中,做這件事只需要寫一行代碼:print "Hello World!"。但是相比之下,Java實現(xiàn)這句話就要繁瑣得多,需要至少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轉(zhuǎn)變成Python。Python甚至還因此進入了小學計算機教材中。
三、實際運用
Python
通過豐富的Web開發(fā)框架,如Django和TurboGears,Python可以用來快速完成一個網(wǎng)站的開發(fā)和Web服務。典型如國內(nèi)的豆瓣、果殼網(wǎng)等
自動化系統(tǒng)網(wǎng)絡的運行維護中,大量重復性工作的地方,并需要做管理系統(tǒng)、監(jiān)控系統(tǒng)、發(fā)布系統(tǒng)等。
人工智能和數(shù)據(jù)分析
Java
安卓app開發(fā)
大型網(wǎng)站的后端
大型的企業(yè)級應用
大數(shù)據(jù)
最近一段時間流行度越來越高的Python,在行業(yè)與生活中的運用也十分廣泛。通過豐富的Web開發(fā)框架,如Django和TurboGears,Python可以用來快速完成一個網(wǎng)站的開發(fā)和Web服務。
典型如國內(nèi)的豆瓣、果殼網(wǎng)等;國外的Google、Dropbox等。在系統(tǒng)網(wǎng)絡的運行維護中,有大量重復性工作的地方,并需要做管理系統(tǒng)、監(jiān)控系統(tǒng)、發(fā)布系統(tǒng)等,將工作自動化起來,提高工作效率,這樣的場景Python是一門非常合適的語言。
因為Python的易于維護性,就連谷歌前段時間也將網(wǎng)站后臺的很多代碼用Python重寫代替。業(yè)余時間,也可以用Python寫寫簡單的網(wǎng)絡爬蟲,看看誰拉黑了你的微信,甚至做一個刷票機器人。
當然,說到Python,就不得不提它目前最火熱的運用:人工智能和數(shù)據(jù)分析。Python擁有十分完善的數(shù)據(jù)分析生態(tài)系統(tǒng)。Numpy & Scipy、Pandas、matplotlib 是 Python 最基本數(shù)據(jù)分析的三駕馬車,而 Jupyter notebook 則是分析的最基本交互式環(huán)境。
只要涉及機器學習,深度學習,神經(jīng)網(wǎng)絡這些高大上的領域,是絕對避不開Python的。在人工智能大行其道的今天,Python的運用前景和發(fā)展空間絕對是無限的。
雖然說了這么多Python在難易程度上的優(yōu)點,相對于Java,它也不是完全沒有缺點。即使使用Python開發(fā)的速度和效率比較高,但從運行的速度和效率來說,Java還是略勝一籌。當運算量很大時,Java的獨特平臺設計的好處就顯現(xiàn)了出來。Java使用的虛擬機架構和獨樹一幟的JIT編譯模式能大大提高它的運行速度。這也是為什么Java至今仍然是世界上最受歡迎的語言之一。
如果你想知道Java在實際生活中可以干什么,其實遠在天邊,近在眼前。如果你有一部安卓手機,幾乎所有App都是用Java寫成的。大型網(wǎng)站的后端,比如電子商務交易平臺阿里巴巴,淘寶,京東也都主要使用Java開發(fā)。大型的企業(yè)級應用比如大型企業(yè)管理系統(tǒng),CRM系統(tǒng),ERP系統(tǒng)也可以用Java開發(fā)。
有關通信及網(wǎng)絡的大型企業(yè),比如移動、聯(lián)通、電信、網(wǎng)通,有關金融行的大型企業(yè),所有的銀行、證券公司、互聯(lián)網(wǎng)金融和大型管理系統(tǒng),比如供應鏈,客戶管理系統(tǒng),物流系統(tǒng)主要的信息化都和Java息息相關。現(xiàn)在越來越火的大數(shù)據(jù),最主流的框架Hadoop的主要開發(fā)語言也是Java。所以不難看出,Java還是行業(yè)應用不可撼動的老大哥。
四、就業(yè)薪資
Python
1.美團
薪資:20k~40k
崗位職責:
1. 負責云數(shù)據(jù)庫/云主機控制平面研發(fā)工作 2. 加強平臺管理和控制功能,提升資源交付和管理效率
崗位要求:
1. 熟練使用Python,能寫出漂亮的Pythonic的代碼;
2. 極強的學習能力和動力,對未知技術和領域能快速掌握并實踐;
3. 熟練掌握操作系統(tǒng)原理,Internet網(wǎng)絡原理;
4. 有云平臺開發(fā)、自動運維平臺開發(fā)等大型Python項目經(jīng)驗者優(yōu)先;
5. 在開源社群活躍并有積極貢獻者優(yōu)先。
2.攜程
薪資:15k-25k
Python開發(fā)工程師:
1. 負責運維平臺設計及開發(fā),實現(xiàn)運維自動化和運維效率的提高
2. 幫助開發(fā)團隊改進開發(fā)流程和效率
3. 與運維團隊合作,收集需求,改善運維流程,實現(xiàn)各種運維工具,提高運行維護作業(yè)水平
4. 負責網(wǎng)站監(jiān)控系統(tǒng)、數(shù)據(jù)收集和數(shù)據(jù)分析等系統(tǒng)的開發(fā)
5. 結合虛擬化技術,打造和完善攜程云平臺
以下是加分項:
6. 熟悉大型網(wǎng)站運維工作,有運維開發(fā)經(jīng)驗者優(yōu)先;
7. 有CMDB/monitoring system/agent/automation系統(tǒng)設計與開發(fā)經(jīng)驗者優(yōu)先
8. 熟悉Puppet/Zabbix/Celery/RabbitMQ優(yōu)先
9. 熟悉Python/Django/Tornaod優(yōu)先
10. 熟悉前端開發(fā)(XHTML/JQuery/CSS)優(yōu)先
11. 對OpenStack熟悉者優(yōu)先
Java方面:
1、京東
薪資:15k-30k
需要具備以下技能:
1、熟練掌握Java基礎,熟練掌握多線程開發(fā)技術,熟悉軟件開發(fā)流程;
2、熟悉主流Java開源框架如struts、hibernate、spring;
3、熟練掌握HTML/CSS/Javascript/jquery/Ajax;
4、熟悉Oracle/ SQL Server/MySQL其中的一種,并能熟練編寫SQL和存儲過程;
5、熟悉Linux系統(tǒng),掌握Linux命令。
2、網(wǎng)易
薪資:15k-30k
必須技能:
1、精通java,熟練運用SpringBoot、SpringMVC、Hibernate、Mybatis、struts、struts2等技術,能練使用JQuery或相關的JS框架,精通面向?qū)ο笤O計;
2、熟悉mysql/sqlserver數(shù)據(jù)庫,了解相關的數(shù)據(jù)庫維護和性能優(yōu)化,熟悉Tomcat、weblogic等服務器的配置與發(fā)布;
3、全面扎實的軟件知識結構(操作系統(tǒng)、軟件工程、設計模式、數(shù)據(jù)結構、數(shù)據(jù)庫系統(tǒng)、網(wǎng)絡安全等);
4、熟練SQL語句的編寫;思維活躍,具備一定的軟件設計能力及良好的軟件工程思想;
如果你在學習Python的過程當中有遇見任何問題,可以加入python交流學企鵝群:【611+530+101】,多多交流問題,互幫互助,群里有不錯的學習教程和開發(fā)工具。學習python有任何問題(學習方法,學習效率,如何就業(yè)),可以隨時來咨詢我
五、總結
從語言本身,Python語法簡潔,容易上手,而Java以獨特的架構和較快的速度著稱。
Python作為最近越來越火的語言,是大數(shù)據(jù)和人工智能的主力軍,同時也在網(wǎng)頁開發(fā)中廣泛運用。而Java則壟斷了企業(yè)級應用的開發(fā)。兩者工程師的薪資也都十分可觀。
文章到這里,你還不會選的話,可以來參加千鋒的免費試聽課程,通過試聽課程和專業(yè)老師的詳細介紹,找到適合你學習的編程語言。千鋒武漢IT培訓課程采用100%全程面授教學,拒絕視頻同步授課,拒絕雙元視頻班教學,拒絕直播授課,教師一對一指導學員做項目,全新打造“主流技術+前沿技術+企業(yè)級聯(lián)動”教學課程,采用最新版本技術開展教學,致力于為學員打造最牛的、最新的技術,助力學員拿下BAT級企業(yè)Offer。