為什么入門(mén)大數(shù)據(jù)選擇Python而不是Java?
馬云說(shuō):“未來(lái)最大的資源就是數(shù)據(jù),不參與大數(shù)據(jù)十年后一定會(huì)后悔。”畢竟出自wuli馬大大之口,今年二月份我開(kāi)始了學(xué)習(xí)大數(shù)據(jù)的道路,直到現(xiàn)在對(duì)大數(shù)據(jù)的學(xué)習(xí)脈絡(luò)和方法也漸漸清晰。今天我們就來(lái)談?wù)剬W(xué)習(xí)大數(shù)據(jù)入門(mén)語(yǔ)言的選擇。當(dāng)然并不只是我個(gè)人之見(jiàn),此外我搜集了各路大神的見(jiàn)解綜合起來(lái)跟大家做個(gè)討論。
java和python的區(qū)別到底在哪里?
官方解釋:Java是一門(mén)面向?qū)ο缶幊陶Z(yǔ)言,不僅吸收了C++語(yǔ)言的各種優(yōu)點(diǎn),還摒棄了C++里難以理解的多繼承、指針等概念,因此Java語(yǔ)言具有功能強(qiáng)大和簡(jiǎn)單易用兩個(gè)特征。Java語(yǔ)言作為靜態(tài)面向?qū)ο缶幊陶Z(yǔ)言的代表,極好地實(shí)現(xiàn)了面向?qū)ο罄碚?,允許程序員以優(yōu)雅的思維方式進(jìn)行復(fù)雜的編程。Java具有簡(jiǎn)單性、面向?qū)ο?、分布式、健壯性、安全性、平臺(tái)獨(dú)立與可移植性、多線程、動(dòng)態(tài)性等特點(diǎn) 。Java可以編寫(xiě)桌面應(yīng)用程序、Web應(yīng)用程序、分布式系統(tǒng)和嵌入式系統(tǒng)應(yīng)用程序等。
Python是一種面向?qū)ο蟮慕忉屝陀?jì)算機(jī)程序設(shè)計(jì)語(yǔ)言,Python是純粹的自由軟件, 源代碼和解釋器CPython遵循 GPL(GNU General Public License)協(xié)議。Python語(yǔ)法簡(jiǎn)潔清晰,特色之一是強(qiáng)制用空白符(white space)作為語(yǔ)句縮進(jìn)。Python具有豐富和強(qiáng)大的庫(kù)。它常被昵稱為膠水語(yǔ)言,能夠把用其他語(yǔ)言制作的各種模塊(尤其是C/C++)很輕松地聯(lián)結(jié)在一起。7月20日,IEEE發(fā)布2017年編程語(yǔ)言排行榜:Python高居首位。
java和python,都可以運(yùn)行于linux操作系統(tǒng),但很多l(xiāng)inux可以原生支持python,java需要自行安裝。java和python強(qiáng)于c#的原因大于支持linux,支持osx,支持unix,支持arm。java和python比c++受歡迎的原因在于不需要指針。
不少想學(xué)習(xí)大數(shù)據(jù)的零基礎(chǔ)學(xué)員都知道,學(xué)大數(shù)據(jù)部分課程之前要先學(xué)習(xí)一種計(jì)算機(jī)編程語(yǔ)言。大數(shù)據(jù)開(kāi)發(fā)需要編程語(yǔ)言的基礎(chǔ),因?yàn)榇髷?shù)據(jù)的開(kāi)發(fā)基于一些常用的高級(jí)語(yǔ)言,比如Java和python。不論是大數(shù)據(jù)生態(tài)架構(gòu),還是數(shù)據(jù)挖掘,都需要有高級(jí)編程語(yǔ)言的基礎(chǔ)。因此,如果想學(xué)習(xí)大數(shù)據(jù)開(kāi)發(fā),還是需要著手學(xué)習(xí)一門(mén)高級(jí)語(yǔ)言。
那學(xué)習(xí)大數(shù)據(jù)我們到底該選擇什么?
咱們?cè)賮?lái)說(shuō)下大數(shù)據(jù)。目前國(guó)內(nèi)很多人在說(shuō)大數(shù)據(jù)的時(shí)候,實(shí)際上是把大數(shù)據(jù)技術(shù)和數(shù)據(jù)科學(xué)(含數(shù)據(jù)分析、數(shù)據(jù)挖掘、機(jī)器學(xué)習(xí))混在一起的,許多討論和爭(zhēng)辯其實(shí)源于大家說(shuō)的不是一個(gè)事情。 目前高等學(xué)校已經(jīng)有了大數(shù)據(jù)相關(guān)的專業(yè),名字起得也很好,叫《數(shù)據(jù)科學(xué)和大數(shù)據(jù)技術(shù)》,就是把大數(shù)據(jù)分成兩個(gè)方向來(lái)看待的。數(shù)據(jù)科學(xué)側(cè)重?cái)?shù)學(xué)抽象和軟件工具的使用,對(duì)數(shù)學(xué)和編程要求較高;而大數(shù)據(jù)技術(shù)側(cè)重軟件工程實(shí)施,對(duì)計(jì)算機(jī)和編程要求較高。雖然兩個(gè)方向都強(qiáng)調(diào)編程,但數(shù)據(jù)科學(xué)的編程是泛編程,可以簡(jiǎn)單理解為以使用腳本語(yǔ)言或需要編程的軟件工具(如Matlab、SAS、R),而大數(shù)據(jù)技術(shù)的講的編程是計(jì)算機(jī)通用編程語(yǔ)言(如Java/C/Python),職位也更接近我們所說(shuō)的程序員或者說(shuō)“碼農(nóng)”。
根據(jù)我在知乎、簡(jiǎn)書(shū)、CNDS等等論壇上關(guān)于兩者語(yǔ)言的討論綜合得出以下結(jié)論:
java主要用于商業(yè)邏輯強(qiáng)的領(lǐng)域,如商城系統(tǒng),erp,oa,金融,保險(xiǎn)等傳統(tǒng)數(shù)據(jù)庫(kù)事務(wù)領(lǐng)域,通過(guò)類似ssh框架事務(wù)代碼,對(duì)商業(yè)數(shù)據(jù)庫(kù),如oralce,db2,sql server等支持較好,軟件工程理念較強(qiáng),適合軟件工程式的多人開(kāi)發(fā)模式。python主要用于web數(shù)據(jù)分析,科學(xué)計(jì)算,金融分析,信號(hào)分析,圖像算法,數(shù)學(xué)計(jì)算,統(tǒng)計(jì)分析,算法建模,服務(wù)器運(yùn)維,自動(dòng)化操作,快速開(kāi)發(fā)理念強(qiáng),適合快速開(kāi)發(fā)團(tuán)隊(duì)或個(gè)人敏捷模式。
Python既是一種面向?qū)ο蟮木幊陶Z(yǔ)言又因?yàn)槠浜?jiǎn)單、易學(xué)、開(kāi)源、腳本語(yǔ)言范兒的“人設(shè)”,是一種既適合數(shù)據(jù)科學(xué)又適合大數(shù)技術(shù)從業(yè)者學(xué)習(xí)的語(yǔ)言。
如果你想學(xué)一門(mén)語(yǔ)言,可以從語(yǔ)言的適用性、學(xué)習(xí)的難易程度、企業(yè)主的要求幾個(gè)方面考慮,從這幾個(gè)角度看,學(xué)習(xí)Python都沒(méi)有什么可挑剔的。
從語(yǔ)言的適用性看,Python有個(gè)外號(hào)叫“膠水語(yǔ)言”,就是說(shuō)Python可以隨意地組合它和其它程序,它可以作為一個(gè)中間處理模塊的代碼把其他代碼“粘合”在一個(gè)工程里面,從而快速的部署和實(shí)施。
除了在大數(shù)據(jù)和數(shù)據(jù)科學(xué)領(lǐng)域,它在web前端開(kāi)發(fā)等領(lǐng)域也有廣泛應(yīng)用。從學(xué)習(xí)難易度來(lái)看,作為一個(gè)為“優(yōu)雅”而生的語(yǔ)言,Python語(yǔ)法簡(jiǎn)捷而清晰,對(duì)底層做了很好的封裝,是一種很容易上手的高級(jí)語(yǔ)言。
在一些習(xí)慣于底層程序開(kāi)發(fā)的“硬核”程序員眼里,Python簡(jiǎn)直就是一種“偽代碼”。 從企業(yè)主來(lái)看,隨便打開(kāi)一個(gè)大數(shù)據(jù)開(kāi)發(fā)的招聘JD,你就會(huì)發(fā)現(xiàn)不少企業(yè)招聘大數(shù)據(jù)開(kāi)發(fā)工程師時(shí),對(duì)具體編程語(yǔ)言的要求已經(jīng)不再嚴(yán)苛,一般情況下你只要熟練掌握J(rèn)ava/C/Python中的其中一個(gè)即可以,畢竟軟件工程師的的核心能力不是語(yǔ)言本身而是邏輯思考能力,況且現(xiàn)在中間件這么多,各種語(yǔ)言之間的適配和轉(zhuǎn)換也越來(lái)越容易,企業(yè)需要的是解決問(wèn)題,而Python was born for it. 就大數(shù)據(jù)技術(shù)而言,Java在PaaS和SaaS層都有非常多的實(shí)踐和應(yīng)用,如果你有Java的基礎(chǔ),可以繼續(xù)學(xué)好Java。
如果你沒(méi)有Java基礎(chǔ),又想往大數(shù)據(jù)技術(shù)方向發(fā)展,那么你或許可以考慮把Python作為你的First language。 在數(shù)據(jù)科學(xué)領(lǐng)域,尤其是在深度學(xué)習(xí)領(lǐng)域,Python是當(dāng)仁不二的選擇。
當(dāng)然,任何語(yǔ)言都不是完美的,如果你是一個(gè)擁抱變化,未來(lái)希望在數(shù)據(jù)工程和軟件工程領(lǐng)域都有發(fā)展機(jī)遇的話,那么我建議你毫不猶豫的擁抱Python,并不斷的嘗試新的工具和技術(shù)。在實(shí)際使用的python入門(mén)簡(jiǎn)單,但要學(xué)會(huì)用python干活,需要再學(xué)習(xí)python各種庫(kù),pyhton的強(qiáng)大在于庫(kù),為什么python的庫(kù)強(qiáng)大,原因是python的庫(kù)可以用python,c語(yǔ)言,c++等設(shè)計(jì),再提供給python使用,所以無(wú)論gpu運(yùn)行,神經(jīng)網(wǎng)絡(luò),智能算法,數(shù)據(jù)分析,圖像處理,科學(xué)計(jì)算,各式各樣的庫(kù)在等著你用。
而java沒(méi)有python那么多的開(kāi)源庫(kù),很多庫(kù)是商業(yè)公司內(nèi)部使用,或發(fā)布出來(lái)只是一個(gè)jar包,看不到原始代碼。python虛擬機(jī)因?yàn)榫幾g性沒(méi)有java的支持的好(或者說(shuō)故意這么設(shè)計(jì)的),一般直接使用源碼(linux),或源碼簡(jiǎn)單打個(gè)包(如pyexe)。
小媛建議
對(duì)于初學(xué)者,尤其是沒(méi)有接觸過(guò)語(yǔ)言的人想入門(mén)大數(shù)據(jù),個(gè)人覺(jué)得先學(xué)python,后學(xué)java。首先python作為一門(mén)腳本語(yǔ)言,很容易入門(mén)。編程并不是說(shuō)掌握一門(mén)或幾門(mén)語(yǔ)言就足夠了,重在提高思維能力。而python容易入門(mén),工具多,短短數(shù)行代碼就可以實(shí)現(xiàn)一個(gè)強(qiáng)大的功能,增強(qiáng)初學(xué)者的信心,另一方面讓初學(xué)者有一個(gè)對(duì)編程思維的初步理解。
在這之后再學(xué)習(xí)java,首先語(yǔ)法很容易入門(mén),再者對(duì)編程有一定理解后,才更能體會(huì)到類,繼承,接口,甚至之后接觸各種框架,這些內(nèi)容對(duì)于大型項(xiàng)目帶來(lái)的優(yōu)勢(shì)。
轉(zhuǎn)載聲明:本文轉(zhuǎn)載自「程序媛不是程序猿」
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
python實(shí)現(xiàn)微信小程序用戶登錄、模板推送
這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)微信小程序用戶登錄、模板推送,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-08-08python用opencv完成圖像分割并進(jìn)行目標(biāo)物的提取
這篇文章主要介紹了python用opencv完成圖像分割并進(jìn)行目標(biāo)物的提取,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-05-05pytorch加載語(yǔ)音類自定義數(shù)據(jù)集的方法教程
這篇文章主要給大家介紹了關(guān)于pytorch加載語(yǔ)音類自定義數(shù)據(jù)集的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-11-11python神經(jīng)網(wǎng)絡(luò)slim常用函數(shù)訓(xùn)練保存模型
這篇文章主要為大家介紹了python神經(jīng)網(wǎng)絡(luò)使用slim函數(shù)進(jìn)行模型的訓(xùn)練及保存模型示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-05-05Numpy?三維數(shù)組索引與切片的實(shí)現(xiàn)
本文主要介紹了Numpy?三維數(shù)組索引與切片,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-03-03Python?的counter()函數(shù)解析與示例詳解
在?Python?中,?collections?模塊提供了?Counter?類,用于計(jì)算可迭代對(duì)象中元素的數(shù)量,?Counter?是一個(gè)字典的子類,它以元素作為鍵,以元素出現(xiàn)的次數(shù)作為值進(jìn)行計(jì)數(shù),本文給大家介紹Python?的counter()函數(shù),感興趣的朋友一起看看吧2023-08-08