自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

大數(shù)據(jù)全棧式開(kāi)發(fā)語(yǔ)言 – Python

開(kāi)發(fā) 后端 大數(shù)據(jù)
前段時(shí)間,ThoughtWorks 在深圳舉辦一次社區(qū)活動(dòng)上,有一個(gè)演講主題叫做“Fullstack JavaScript”,是關(guān)于用 JavaScript 進(jìn)行前端、服務(wù)器端,甚至數(shù)據(jù)庫(kù)(MongoDB)開(kāi)發(fā),一個(gè) Web 應(yīng)用開(kāi)發(fā)人員,只需要學(xué)會(huì)一門語(yǔ)言,就可以實(shí)現(xiàn)整個(gè)應(yīng)用。

718-佟達(dá)-全棧開(kāi)發(fā)語(yǔ)言Python

前 段時(shí)間,ThoughtWorks在深圳舉辦一次社區(qū)活動(dòng)上,有一個(gè)演講主題叫做“Fullstack JavaScript”,是關(guān)于用JavaScript進(jìn)行前端、服務(wù)器端,甚至數(shù)據(jù)庫(kù)(MongoDB)開(kāi)發(fā),一個(gè)Web應(yīng)用開(kāi)發(fā)人員,只需要學(xué)會(huì)一門 語(yǔ)言,就可以實(shí)現(xiàn)整個(gè)應(yīng)用。

受此啟發(fā),我發(fā)現(xiàn)Python可以稱為大數(shù)據(jù)全棧式開(kāi)發(fā)語(yǔ)言。因?yàn)镻ython在云基礎(chǔ)設(shè)施,DevOps,大數(shù)據(jù)處理等領(lǐng)域都是炙手可熱的語(yǔ)言。

領(lǐng)域

流行語(yǔ)言

云基礎(chǔ)設(shè)施

Python, Java, Go

DevOps

Python, Shell, Ruby, Go

網(wǎng)絡(luò)爬蟲(chóng)

Python, PHP, C++

數(shù)據(jù)處理

Python, R, Scala

就像只要會(huì)JavaScript就可以寫(xiě)出完整的Web應(yīng)用,只要會(huì)Python,就可以實(shí)現(xiàn)一個(gè)完整的大數(shù)據(jù)處理平臺(tái)。

云基礎(chǔ)設(shè)施

這年頭,不支持云平臺(tái),不支持海量數(shù)據(jù),不支持動(dòng)態(tài)伸縮,根本不敢說(shuō)自己是做大數(shù)據(jù)的,頂多也就敢跟人說(shuō)是做商業(yè)智能(BI)。

云平臺(tái)分為私有云和公有云。私有云平臺(tái)如日中天的OpenStack, 就是Python寫(xiě)的。曾經(jīng)的追趕者CloudStack,在剛推出時(shí)大肆強(qiáng)調(diào)自己是Java寫(xiě)的,比Python有優(yōu)勢(shì)。結(jié)果,搬石砸腳,2015年 初,CloudStack的發(fā)起人Citrix宣布加入OpenStack基金會(huì),CloudStack眼看著就要壽終正寢。

如果嫌麻煩不想自己搭建私有云,用公有云,不論是AWS,GCE,Azure,還是阿里云,青云,在都提供了Python SDK,其中GCE只提供Python和JavaScript的SDK,而青云只提供Python SDK??梢?jiàn)各家云平臺(tái)對(duì)Python的重視。

提 到基礎(chǔ)設(shè)施搭建,不得不提Hadoop,在今天,Hadoop因?yàn)槠銶apReduce數(shù)據(jù)處理速度不夠快,已經(jīng)不再作為大數(shù)據(jù)處理的***,但是HDFS 和Yarn——Hadoop的兩個(gè)組件——倒是越來(lái)越受歡迎。Hadoop的開(kāi)發(fā)語(yǔ)言是Java,沒(méi)有官方提供Python支持,不過(guò)有很多第三方庫(kù)封裝 了Hadoop的API接口(pydoop,hadoopy等等)。

Hadoop MapReduce的替代者,是號(hào)稱快上100倍的Spark,其開(kāi)發(fā)語(yǔ)言是Scala,但是提供了Scala,Java,Python的開(kāi)發(fā)接口,想要討好那么多用Python開(kāi)發(fā)的數(shù)據(jù)科學(xué)家,不支持Python,真是說(shuō)不過(guò)去。HDFS的替代品,比如GlusterFS,Ceph等,都是直接提供Python支持。Yarn的替代者,Mesos是C++實(shí)現(xiàn),除C++外,提供了Java和Python的支持包。

DevOps

DevOps有個(gè)中文名字,叫做開(kāi)發(fā)自運(yùn)維?;ヂ?lián)網(wǎng)時(shí)代,只有能夠快速試驗(yàn)新想法,并在***時(shí)間,安全、可靠的交付業(yè)務(wù)價(jià)值,才能保持競(jìng)爭(zhēng)力。DevOps推崇的自動(dòng)化構(gòu)建/測(cè)試/部署,以及系統(tǒng)度量等技術(shù)實(shí)踐,是互聯(lián)網(wǎng)時(shí)代必不可少的。

自 動(dòng)化構(gòu)建是因應(yīng)用而易的,如果是Python應(yīng)用,因?yàn)橛衧etuptools, pip, virtualenv, tox, flake8等工具的存在,自動(dòng)化構(gòu)建非常簡(jiǎn)單。而且,因?yàn)閹缀跛蠰inux系統(tǒng)都內(nèi)置Python解釋器,所以用Python做自動(dòng)化,不需要系統(tǒng)預(yù) 安裝什么軟件。

自動(dòng)化測(cè)試方面,基于Python的Robot Framework企業(yè)級(jí)應(yīng)用最喜歡的自動(dòng)化測(cè)試框架,而且和語(yǔ)言無(wú)關(guān)。Cucumber也有很多支持者,Python對(duì)應(yīng)的Lettuce可以做到完全一樣的事情。Locust在自動(dòng)化性能測(cè)試方面也開(kāi)始受到越來(lái)越多的關(guān)注。

自動(dòng)化配置管理工具,老牌的如Chef和Puppet,是Ruby開(kāi)發(fā),目前仍保持著強(qiáng)勁的勢(shì)頭。不過(guò),新生代AnsibleSaltStack——均為Python開(kāi)發(fā)——因?yàn)檩^前兩者設(shè)計(jì)更為輕量化,受到越來(lái)越多開(kāi)發(fā)這的歡迎,已經(jīng)開(kāi)始給前輩們制造了不少的壓力。

在系統(tǒng)監(jiān)控與度量方面,傳統(tǒng)的Nagios逐漸沒(méi)落,新貴如Sensu大受好評(píng),云服務(wù)形式的New Relic已經(jīng)成為創(chuàng)業(yè)公司的標(biāo)配,這些都不是直接通過(guò)Python實(shí)現(xiàn)的,不過(guò)Python要接入這些工具,并不困難。

除了上述這些工具,基于Python,提供完整DevOps功能的PaaS平臺(tái),如CloudifyDeis,雖未成氣候,但已經(jīng)得到大量關(guān)注。

網(wǎng)絡(luò)爬蟲(chóng)

大數(shù)據(jù)的數(shù)據(jù)從哪里來(lái)?除了部分企業(yè)有能力自己產(chǎn)生大量的數(shù)據(jù),大部分時(shí)候,是需要靠爬蟲(chóng)來(lái)抓取互聯(lián)網(wǎng)數(shù)據(jù)來(lái)做分析。

網(wǎng)絡(luò)爬蟲(chóng)是Python的傳統(tǒng)強(qiáng)勢(shì)領(lǐng)域,***的爬蟲(chóng)框架Scrapy,HTTP工具包urlib2,HTML解析工具beautifulsoup,XML解析器lxml,等等,都是能夠獨(dú)當(dāng)一面的類庫(kù)。

不 過(guò),網(wǎng)絡(luò)爬蟲(chóng)并不僅僅是打開(kāi)網(wǎng)頁(yè),解析HTML這么簡(jiǎn)單。高效的爬蟲(chóng)要能夠支持大量靈活的并發(fā)操作,常常要能夠同時(shí)幾千甚至上萬(wàn)個(gè)網(wǎng)頁(yè)同時(shí)抓取,傳統(tǒng)的線 程池方式資源浪費(fèi)比較大,線程數(shù)上千之后系統(tǒng)資源基本上就全浪費(fèi)在線程調(diào)度上了。Python由于能夠很好的支持協(xié)程(Coroutine)操作,基于此發(fā)展起來(lái)很多并發(fā)庫(kù),如Gevent,Eventlet,還有Celery之類的分布式任務(wù)框架。被認(rèn)為是比AMQP更高效的ZeroMQ也是最早就提供了Python版本。有了對(duì)高并發(fā)的支持,網(wǎng)絡(luò)爬蟲(chóng)才真正可以達(dá)到大數(shù)據(jù)規(guī)模。

抓取下來(lái)的數(shù)據(jù),需要做分詞處理,Python在這方面也不遜色,著名的自然語(yǔ)言處理程序包NLTK,還有專門做中文分詞的Jieba,都是做分詞的利器。

數(shù)據(jù)處理

萬(wàn)事俱備,只欠東風(fēng)。這東風(fēng),就是數(shù)據(jù)處理算法。從統(tǒng)計(jì)理論,到數(shù)據(jù)挖掘,機(jī)器學(xué)習(xí),再到最近幾年提出來(lái)的深度學(xué)習(xí)理論,數(shù)據(jù)科學(xué)正處于百花齊放的時(shí)代。數(shù)據(jù)科學(xué)家們都用什么編程?

如 果是在理論研究領(lǐng)域,R語(yǔ)言也許是最受數(shù)據(jù)科學(xué)家歡迎的,但是R語(yǔ)言的問(wèn)題也很明顯,因?yàn)槭墙y(tǒng)計(jì)學(xué)家們創(chuàng)建了R語(yǔ)言,所以其語(yǔ)法略顯怪異。而且R語(yǔ)言要想 實(shí)現(xiàn)大規(guī)模分布式系統(tǒng),還需要很長(zhǎng)一段時(shí)間的工程之路要走。所以很多公司使用R語(yǔ)言做原型試驗(yàn),算法確定之后,再翻譯成工程語(yǔ)言。

Python 也是數(shù)據(jù)科學(xué)家最喜歡的語(yǔ)言之一。和R語(yǔ)言不同,Python本身就是一門工程性語(yǔ)言,數(shù)據(jù)科學(xué)家用Python實(shí)現(xiàn)的算法,可以直接用在產(chǎn)品中,這對(duì)于 大數(shù)據(jù)初創(chuàng)公司節(jié)省成本是非常有幫助的。正式因?yàn)閿?shù)據(jù)科學(xué)家對(duì)Python和R的熱愛(ài),Spark為了討好數(shù)據(jù)科學(xué)家,對(duì)這兩種語(yǔ)言提供了非常好的支持。

Python的數(shù)據(jù)處理相關(guān)類庫(kù)非常多。高性能的科學(xué)計(jì)算類庫(kù)NumPy和SciPy,給其他高級(jí)算法打了非常好的基礎(chǔ),matploglib讓Python畫(huà)圖變得像Matlab一樣簡(jiǎn)單。Scikit-learn和Milk實(shí)現(xiàn)了很多機(jī)器學(xué)習(xí)算法,基于這兩個(gè)庫(kù)實(shí)現(xiàn)的Pylearn2,是深度學(xué)習(xí)領(lǐng)域的重要成員。Theano利用GPU加速,實(shí)現(xiàn)了高性能數(shù)學(xué)符號(hào)計(jì)算和多維矩陣計(jì)算。當(dāng)然,還有Pandas,一個(gè)在工程領(lǐng)域已經(jīng)廣泛使用的大數(shù)據(jù)處理類庫(kù),其DataFrame的設(shè)計(jì)借鑒自R語(yǔ)言,后來(lái)又啟發(fā)了Spark項(xiàng)目實(shí)現(xiàn)了類似機(jī)制。

對(duì)了,還有iPython,這個(gè)工具如此有用,以至于我差點(diǎn)把他當(dāng)成標(biāo)準(zhǔn)庫(kù)而忘了介紹。iPython是一個(gè)交互式Python運(yùn)行環(huán)境,能夠?qū)崟r(shí)看到每一段Python代碼的結(jié)果。默認(rèn)情況下,iPython運(yùn)行在命令行,可以執(zhí)行ipython notebook在網(wǎng)頁(yè)中運(yùn)行。用matplotlib繪制的圖可以直接嵌入式的顯示在iPython Notebook中。
iPython Notebook的筆記本文件可以共享給其他人,這樣其他人就可以在自己的環(huán)境中重現(xiàn)你的工作成果;如果對(duì)方?jīng)]有運(yùn)行環(huán)境,還可以直接轉(zhuǎn)換成HTML或者PDF。

pastedImage_0

為什么是Python

正是因?yàn)閼?yīng)用開(kāi)發(fā)工程師、運(yùn)維工程師、數(shù)據(jù)科學(xué)家都喜歡Python,才使得Python成為大數(shù)據(jù)系統(tǒng)的全棧式開(kāi)發(fā)語(yǔ)言。

對(duì)于開(kāi)發(fā)工程師而言,Python的優(yōu)雅和簡(jiǎn)潔無(wú)疑是***的吸引力,在Python交互式環(huán)境中,執(zhí)行import this, 讀一讀Python之禪,你就明白Python為什么如此吸引人。Python社區(qū)一直非常有活力,和NodeJS社區(qū)軟件包爆炸式增長(zhǎng)不 同,Python的軟件包增長(zhǎng)速度一直比較穩(wěn)定,同時(shí)軟件包的質(zhì)量也相對(duì)較高。有很多人詬病Python對(duì)于空格的要求過(guò)于苛刻,但正是因?yàn)檫@個(gè)要求,才 使得Python在做大型項(xiàng)目時(shí)比其他語(yǔ)言有優(yōu)勢(shì)。OpenStack項(xiàng)目總共超過(guò)200萬(wàn)行代碼,證明了這一點(diǎn)。

對(duì)于運(yùn)維工程師而言,Python的***優(yōu)勢(shì)在于,幾乎所有Linux發(fā)行版都內(nèi)置了Python解釋器。Shell雖然功能強(qiáng)大,但畢竟語(yǔ)法不夠優(yōu)雅,寫(xiě)比較復(fù)雜的任務(wù)會(huì)很痛苦。用Python替代Shell,做一些復(fù)雜的任務(wù),對(duì)運(yùn)維人員來(lái)說(shuō),是一次解放。

對(duì)于數(shù)據(jù)科學(xué)家而言,Python 簡(jiǎn)單又不失強(qiáng)大。和C/C++相比,不用做很多的底層工作,可以快速進(jìn)行模型驗(yàn)證;和Java相比,Python語(yǔ)法簡(jiǎn)潔,表達(dá)能力強(qiáng),同樣的工作只需要 1/3代碼;和Matlab,Octave相比,Python的工程成熟度更高。不止一個(gè)編程大牛表達(dá)過(guò),Python是最適合作為大學(xué)計(jì)算機(jī)科學(xué)編程課 程使用的語(yǔ)言——MIT的計(jì)算機(jī)入門課程就是使用的Python——因?yàn)镻ython能夠讓人學(xué)到編程最重要的東西——如何解決問(wèn)題。

順便提一句,微軟參加2015年P(guān)yCon,高調(diào)宣布提高Python在Windows上的編程體驗(yàn),包括Visual Studio支持Python,優(yōu)化Python的C擴(kuò)展在Windows上的編譯等等。腦補(bǔ)下未來(lái)Python作為Windows默認(rèn)組件的場(chǎng)景。

責(zé)任編輯:王雪燕 來(lái)源: TW洞見(jiàn)
相關(guān)推薦

2013-12-09 09:42:50

JavaScript全棧式

2022-05-25 23:25:17

低代碼數(shù)字化軟件

2021-06-01 07:16:21

C語(yǔ)言基礎(chǔ)代碼

2024-07-25 08:43:35

2021-10-06 05:04:47

監(jiān)控

2014-02-20 13:46:30

C++JavaScript

2022-04-13 08:00:00

Hilla開(kāi)發(fā)Java

2021-08-11 08:41:20

全棧開(kāi)發(fā)技術(shù)架構(gòu)前端

2023-08-21 09:51:57

全棧軟件開(kāi)發(fā)

2017-04-12 14:45:20

數(shù)據(jù)架構(gòu)數(shù)據(jù)源

2014-04-18 10:04:15

NodeJS前后端分離

2020-11-24 09:50:22

大數(shù)據(jù)語(yǔ)言go

2024-05-09 09:01:03

2021-02-26 10:51:15

大數(shù)據(jù)

2015-08-28 09:22:07

數(shù)據(jù)科學(xué)

2015-05-04 09:23:38

JavaScript全棧開(kāi)發(fā)員云計(jì)算

2024-12-30 14:40:20

2019-07-31 14:51:21

HBase數(shù)據(jù)庫(kù)數(shù)據(jù)模型

2017-06-13 08:55:29

Log日志MySQL

2020-07-20 08:23:04

Redis分布式系統(tǒng)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)