程序員界裏,天天都會有無數史詩級別的部落衝突上演,大到編程工具的使用,小到是該用空格仍是Tab。其中編程語言的選擇,可謂是歷史最悠久,最有爭議的問題之一。特別對於初學者來講,在作選擇時,常常想送本身一首《涼涼》。前端
對於初學者,最頻繁地聽到的兩種語言莫非Python與Java了。若是你問一名Java程序員,確定會建議你先學Java,由於他們認爲Python像個乳臭未乾的黃毛小子。java
但若是你問Python程序員,可能會獲得一個徹底相反的答案,他們認爲Java是刻板囉嗦的老大爺,而人生苦短,我用Python。mysql
一邊是全世界使用最普遍的Java,一邊是用過的人都會以爲是最好的語言的Python,到底如何選擇,的確很讓人糾結。jquery
但別擔憂,本文將會從程序員
語言特點web
學習曲線spring
職業方向sql
市場需求數據庫
等多個方面爲你解答「選擇Python仍是Java的人生難題」編程
01人生苦短,我用Python
Python是一門擁有簡潔語法的高級編程語言。一個名爲Guido van Rossum的荷蘭大佬在1991年設計了它。設計這門語言的初衷,就是爲了讓代碼讀起來更輕鬆,而且讓程序員們比起用其餘語言,能夠寫更少的代碼,事半功倍。
從語言自己來講,Python是出了名的簡潔,容易上手。一個Python的粉絲曾經寫過一首名爲The Zen of Python (Python之禪)的詩來讚頌這門語言的優雅。如下這首詩的節選和翻譯。
《The Zen of Python》
Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
Flat is better than nested.
Sparse is better than dense.
Readability counts.
Special cases aren't special enough to break the rules.
優美勝於醜陋(Python 以編寫優美的代碼爲目標)
明瞭勝於晦澀(優美的代碼應當是明瞭的,命名規範,風格類似)
簡潔勝於複雜(優美的代碼應當是簡潔的,不要有複雜的內部實現)
複雜勝於凌亂(若是複雜不可避免,那代碼間也不能有難懂的關係,要保持接口簡潔)
扁平勝於嵌套(優美的代碼應當是扁平的,不能有太多的嵌套)
間隔勝於緊湊(優美的代碼有適當的間隔,不要奢望一行代碼解決問題)
可讀性很重要(優美的代碼是可讀的)
即使假借特例的實用性之名,也不可違背這些規則(這些規則至高無上)
國外著名科普暴漫xckd也有這樣一張形容Python之酸爽的著名漫畫。
漫畫中提到了學習一門編程語言,如燒香拜佛般必作的一件事:讓屏幕輸出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服務。典型如國內的豆瓣、果殼網等;國外的Google、Dropbox等。在系統網絡的運行維護中,有大量重複性工做的地方,並須要作管理系統、監控系統、發佈系統等,將工做自動化起來,提升工做效率,這樣的場景Python是一門很是合適的語言。
由於Python的易於維護性,就連谷歌前段時間也將網站後臺的不少代碼用Python重寫代替。業餘時間,也能夠用Python寫寫簡單的網絡爬蟲,看看誰拉黑了你的微信,甚至作一個刷票機器人。
固然,說到Python,就不得不提它目前最火熱的運用:人工智能和數據分析。Python擁有十分完善的數據分析生態系統。Numpy & Scipy、Pandas、matplotlib 是 Python 最基本數據分析的三駕馬車,而 Jupyter notebook 則是分析的最基本交互式環境。只要涉及機器學習,深度學習,神經網絡這些高大上的領域,是絕對避不開Python的。
甚至看到不少研究者的討論帖子都建議早點把研究工具遷移到 Python 生態系統。再前幾年的關於機器學習的在線課程裏,Andrew Ng無論課上講解仍是課下做業,通通一概用MatLab。可是在今年新出的深度學習課程裏,他堅決果斷地選擇了Python做爲課程講解和做業的語言,而且強烈推薦廣大學習者熟練掌握Python。在人工智能大行其道的今天,Python的運用前景和發展空間絕對是無限的。
02喝咖啡補充Java代碼
雖說了這麼多Python在難易程度上的優勢,相對於Java,它也不是徹底沒有缺點。即使Python開發的速度和效率比較高,但從運行的速度和效率來講,Java仍是略勝一籌。
當運算量很大時,Java的獨特平臺設計的好處就顯現了出來。Java使用的虛擬機架構和獨樹一幟的JIT編譯模式能大大提升它的運行速度。這也是爲何Java至今仍然是世界上最受歡迎的語言之一。
早在1995年,Jame Gosling就設計出了Java。 Java是一門以Class爲單位,高度面向對象的高級編程語言。設計初衷是「寫一次代碼,在哪裏均可以用。」 它能夠完成任何規模的任務,因此它也是不少公司在作商業級項目的時候的廣泛選擇。
若是你想知道Java在實際生活中能夠幹什麼,其實遠在天邊,近在眼前。若是你有一部安卓手機,幾乎全部App都是用Java寫成的。大型網站的後端,好比電子商務交易平臺阿里巴巴,淘寶,京東也都主要使用Java開發。大型的企業級應用好比大型企業管理系統,CRM系統,ERP系統也能夠用Java開發。有關通訊及網絡的大型企業,好比移動、聯通、電信、網通,有關金融行的大型企業,全部的銀行、證券公司、互聯網金融和大型管理系統,好比供應鏈,客戶管理系統,物流系統主要的信息化都和Java息息相關。
如今愈來愈火的大數據,最主流的框架Hadoop的主要開發語言也是Java。因此不難看出,Java仍是行業應用不可撼動的老大哥。
03兩種語言的「錢途」如何?
最後,來談談你們最關心的部分:薪資。咱們來看看最受程序員歡迎的一些互聯網公司都招什麼Python崗位:
1.美團
薪資:20k~40k
崗位職責: 1. 負責雲數據庫/雲主機控制平面研發工做 2. 增強平臺管理和控制功能,提高資源交付和管理效率
崗位要求:
1. 熟練使用Python,能寫出漂亮的Pythonic的代碼;
2. 極強的學習能力和動力,對未知技術和領域能快速掌握並實踐;
3. 熟練掌握操做系統原理,Internet網絡原理;
4. 有云平臺開發、自動運維平臺開發等大型Python項目經驗者優先;
5. 在開源社羣活躍並有積極貢獻者優先。
2.攜程
薪資: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方面:
一、京東
薪資:15k-30k
須要具有如下技能:
一、熟練掌握Java基礎,熟練掌握多線程開發技術,熟悉軟件開發流程;
二、熟悉主流Java開源框架如struts、hibernate、spring;
三、熟練掌握HTML/CSS/Javascript/jquery/Ajax;
四、熟悉Oracle/ SQL Server/MySQL其中的一種,並能熟練編寫SQL和存儲過程;
五、熟悉Linux系統,掌握Linux命令。
二、網易
薪資:15k-30k
必須技能:
一、精通java,熟練運用SpringBoot、SpringMVC、Hibernate、Mybatis、struts、struts2等技術,能練使用JQuery或相關的JS框架,精通面向對象設計;
二、熟悉mysql/sqlserver數據庫,瞭解相關的數據庫維護和性能優化,熟悉Tomcat、weblogic等服務器的配置與發佈;
三、全面紮實的軟件知識結構(操做系統、軟件工程、設計模式、數據結構、數據庫系統、網絡安全等);
四、熟練SQL語句的編寫;思惟活躍,具有必定的軟件設計能力及良好的軟件工程思想;
04兩種語言綜合比對
敲黑板,劃重點!
從語言自己,Python語法簡潔,容易上手,而Java以獨特的架構和較快的速度著稱。
Python做爲最近愈來愈火的語言,是大數據和人工智能的主力軍,同時也在網頁開發中普遍運用。而Java則壟斷了企業級應用的開發。二者工程師的薪資也都十分可觀。
大連好的男科醫院 http://mobile.nk0411.com/