人妻系列无码专区av在线,国内精品久久久久久婷婷,久草视频在线播放,精品国产线拍大陆久久尤物

當(dāng)前位置:首頁(yè) > 軟件開(kāi)發(fā) > 正文

編程框架有哪幾種,編程框架搭建教程

編程框架有哪幾種,編程框架搭建教程

各位老鐵們,大家好,今天由我來(lái)為大家分享編程框架有哪幾種,以及編程框架搭建教程的相關(guān)問(wèn)題知識(shí),希望對(duì)大家有所幫助。如果可以幫助到大家,還望關(guān)注收藏下本站,您的支持是我們...

各位老鐵們,大家好,今天由我來(lái)為大家分享編程框架有哪幾種,以及編程框架搭建教程的相關(guān)問(wèn)題知識(shí),希望對(duì)大家有所幫助。如果可以幫助到大家,還望關(guān)注收藏下本站,您的支持是我們最大的動(dòng)力,謝謝大家了哈,下面我們開(kāi)始吧!

Python主要學(xué)習(xí)那幾個(gè)主流框架

一、Django:PythonWeb應(yīng)用開(kāi)發(fā)框架

Django是一個(gè)開(kāi)放源代碼的Web應(yīng)用框架,由Python寫(xiě)成。采用了MVC的軟件設(shè)計(jì)模式,即模型M,視圖V和控制器C。它最初是被開(kāi)發(fā)來(lái)用于管理勞倫斯出版集團(tuán)旗下的一些以新聞內(nèi)容為主的網(wǎng)站的,

即是CMS(內(nèi)容管理系統(tǒng))軟件。并于2005年7月在BSD許可證下發(fā)布。這套框架是以比利時(shí)的吉普賽爵士吉他手DjangoReinhardt來(lái)命名的。

Django應(yīng)該是最出名的Python框架,GAE甚至Erlang都有框架受它影響。Django是走大而全的方向,它最出名的是其全自動(dòng)化的管理后臺(tái):只需要使用起ORM,做簡(jiǎn)單的對(duì)象定義,它就能自動(dòng)生成數(shù)據(jù)庫(kù)結(jié)構(gòu)、以及全功能的管理后臺(tái)。

Django提供的方便,也意味著Django內(nèi)置的ORM跟框架內(nèi)的其他模塊耦合程度高。應(yīng)用程序必須使用Django內(nèi)置的ORM,否則就不能享受到框架內(nèi)提供的種種基于其ORM的便利;理論上可以切換掉其ORM模塊,

但這就相當(dāng)于要把裝修完畢的房子拆除重新裝修,倒不如一開(kāi)始就去毛胚房做全新的裝修。Django的賣(mài)點(diǎn)是超高的開(kāi)發(fā)效率,其性能擴(kuò)展有限;采用Django的項(xiàng)目,在流量達(dá)到一定規(guī)模后,都需要對(duì)其進(jìn)行重構(gòu),才能滿足性能的要求。

二、Diesel:基于Greenlet的事件I/O框架

Diesel提供一個(gè)整潔的API來(lái)編寫(xiě)網(wǎng)絡(luò)客戶(hù)端和服務(wù)器。支持TCP和UDP。

你應(yīng)該使用diesel來(lái)編寫(xiě)你的下一個(gè)網(wǎng)絡(luò)應(yīng)用。得益于Python使得diesel語(yǔ)法非常整潔,發(fā)展步伐非常迅速。非阻塞I/O使得diesel非??焖俨⑶胰菀讛U(kuò)展。greenlets使得diesel有了unwind(to(callbacks(no)))。

nose使得測(cè)試變得容易。最后,F(xiàn)lask使得你不需要寫(xiě)一個(gè)新的網(wǎng)絡(luò)框架來(lái)使用diesel。

示例

需要框架項(xiàng)目實(shí)戰(zhàn)視頻+Python學(xué)習(xí)交流643692991

三、Flask:一個(gè)用Python編寫(xiě)的輕量級(jí)Web應(yīng)用框架

Flask是一個(gè)使用Python編寫(xiě)的輕量級(jí)Web應(yīng)用框架?;赪erkzeugWSGI工具箱和Jinja2模板引擎。Flask使用BSD授權(quán)。Flask也被稱(chēng)為“microframework”,因?yàn)樗褂煤?jiǎn)單的核心,用extension增加其他功能。

Flask沒(méi)有默認(rèn)使用的數(shù)據(jù)庫(kù)、窗體驗(yàn)證工具。然而,F(xiàn)lask保留了擴(kuò)增的彈性,可以用Flask-extension加入這些功能:ORM、窗體驗(yàn)證工具、文件上傳、各種開(kāi)放式身份驗(yàn)證技術(shù)。

Flask很有趣

配置簡(jiǎn)單

特性

1、內(nèi)置開(kāi)發(fā)用服務(wù)器和debugger

2、集成單元測(cè)試(unittesting)

3、RESTfulrequestdispatching

4、使用Jinja2模板引擎

5、支持securecookies(clientsidesessions)

6、100%WSGI1.0兼容

7、Unicodebased

8、詳細(xì)的文件、教學(xué)

9、GoogleAppEngine兼容

10、可用Extensions增加其他功能

四、Cubes:輕量級(jí)PythonOLAP框架

Cubes是一個(gè)輕量級(jí)Python框架,包含OLAP、多維數(shù)據(jù)分析和瀏覽聚合數(shù)據(jù)(aggregateddata)等工具

Cubes的主要特性之一是它的邏輯模型,抽象物理數(shù)據(jù)并提供給終端用戶(hù)層。

需要框架項(xiàng)目實(shí)戰(zhàn)視頻+Python學(xué)習(xí)交流643692991

五、Kartograph.py:創(chuàng)造矢量地圖的輕量級(jí)Python框架

Kartograph是一個(gè)Python庫(kù),用來(lái)為ESRI生成SVG地圖。Kartograph.py目前仍處于beta階段,你可以在virtualenv環(huán)境下來(lái)測(cè)試。

六、Pulsar:Python的事件驅(qū)動(dòng)并發(fā)框架

Pulsar是一個(gè)事件驅(qū)動(dòng)的并發(fā)框架,有了pulsar,你可以寫(xiě)出在不同進(jìn)程或線程中運(yùn)行一個(gè)或多個(gè)活動(dòng)的異步服務(wù)器。

應(yīng)用

附帶以下功能

1、Socket服務(wù)器

2、WSGI服務(wù)器

3、JSON-RPC

4、WebSockets

5、任務(wù)隊(duì)列

6、Shell

7、測(cè)試包

8、django集成

示例

對(duì)所有請(qǐng)求都返回“HelloWorld!”作為響應(yīng)

需要框架項(xiàng)目實(shí)戰(zhàn)視頻+Python學(xué)習(xí)交流643692991七、Web2py:全棧式Web框架

Web2py是一個(gè)為Python語(yǔ)言提供的全功能Web應(yīng)用框架,旨在敏捷快速的開(kāi)發(fā)Web應(yīng)用,具有快速、安全以及可移植的數(shù)據(jù)庫(kù)驅(qū)動(dòng)的應(yīng)用,兼容GoogleAppEngine。

Web2py目錄結(jié)構(gòu)

八、Falcon:構(gòu)建云API和網(wǎng)絡(luò)應(yīng)用后端的高性能Python框架

Falcon是一個(gè)構(gòu)建云API的高性能Python框架,它鼓勵(lì)使用REST架構(gòu)風(fēng)格,盡可能以最少的力氣做最多的事情。

特性

1、通過(guò)URI模板和資源類(lèi)的路由

2、通過(guò)請(qǐng)求和響應(yīng)類(lèi)訪問(wèn)headers和bodies

3、通過(guò)異?;?lèi)響應(yīng)HTTP錯(cuò)誤等等

基準(zhǔn)測(cè)試

需要框架項(xiàng)目實(shí)戰(zhàn)視頻+Python學(xué)習(xí)交流643692991

九、Dpark:Python版的Spark

DPark是一個(gè)基于Mesos的集群計(jì)算框架(clustercomputingframework),是Spark的Python實(shí)現(xiàn)版本,類(lèi)似于MapReduce,但是比其更靈活,可以用Python非常方便地進(jìn)行分布式計(jì)算,并且提供了更多的功能以便更好

的進(jìn)行迭代式計(jì)算。DPark的計(jì)算模型是基于兩個(gè)中心思想的:對(duì)分布式數(shù)據(jù)集的并行計(jì)算以及一些有限的可以在計(jì)算過(guò)程中、從不同機(jī)器訪問(wèn)的共享變量類(lèi)型。這個(gè)的目標(biāo)是為了提供一種類(lèi)似于globaladdressspace

programmingmodel的工具,例如OpenMP,但是我們要求共享變量的類(lèi)型必須是那些很容易在分布式系統(tǒng)當(dāng)中實(shí)現(xiàn)的,當(dāng)前支持的共享變量類(lèi)型有只讀的數(shù)據(jù)和支持一種數(shù)據(jù)修改方式的累加器(accumulators)。

DPark具有的一個(gè)很重要的特性:分布式的數(shù)據(jù)集可以在多個(gè)不同的并行循環(huán)當(dāng)中被重復(fù)利用。這個(gè)特性將其與其他數(shù)據(jù)流形式的框架例如Hadoop和Dryad區(qū)分開(kāi)來(lái)。

示例

一個(gè)wordcounting程序

上面的腳本可以無(wú)修改的在Mesos集群上運(yùn)行,只需稍微修改一下命令行參數(shù):

十、Buildbot:基于Python的持續(xù)集成測(cè)試框架

Buildbot是一個(gè)開(kāi)源框架,可以自動(dòng)化軟件構(gòu)建、測(cè)試和發(fā)布等過(guò)程。每當(dāng)代碼有改變,服務(wù)器要求不同平臺(tái)上的客戶(hù)端立即進(jìn)行代碼構(gòu)建和測(cè)試,收集并報(bào)告不同平臺(tái)的構(gòu)建和測(cè)試結(jié)果。

需要框架項(xiàng)目實(shí)戰(zhàn)視頻+Python學(xué)習(xí)交流643692991

十一、Zerorpc:基于ZeroMQ的高性能分布式RPC框架

Zerorpc是一個(gè)基于ZeroMQ和MessagePack開(kāi)發(fā)的遠(yuǎn)程過(guò)程調(diào)用協(xié)議(RPC)實(shí)現(xiàn)。和Zerorpc一起使用的ServiceAPI被稱(chēng)為zeroservice。Zerorpc可以通過(guò)編程或命令行方式調(diào)用。

它允許你:

1、不用修改代碼即可顯露python模塊

2、通過(guò)命令行遠(yuǎn)程調(diào)用這些模塊

如何把你代碼中的對(duì)象暴露為一個(gè)zeroservice?

運(yùn)行以上代碼,在另一個(gè)終端,嘗試連接這個(gè)zeroservice

十二、Bottle:微型PythonWeb框架

Bottle是一個(gè)簡(jiǎn)單高效的遵循WSGI的微型pythonWeb框架。說(shuō)微型,是因?yàn)樗挥幸粋€(gè)文件,除Python標(biāo)準(zhǔn)庫(kù)外,它不依賴(lài)于任何第三方模塊。

特性

1、Routing:把請(qǐng)求映射到函數(shù),建立簡(jiǎn)潔動(dòng)態(tài)的URLs

2、Templates:采用內(nèi)置模板引擎,同時(shí)還支持mako,jinja2,cheetah等第三方模板

3、Utilities:便捷地讀取表單數(shù)據(jù)、上傳文件、cookies、HTTP頭信息和其它HTTP相關(guān)的元數(shù)據(jù)

4、Server:內(nèi)置HTTP開(kāi)發(fā)服務(wù)器,并且支持paste,fapws3,bjoern,GoogleAppEngine,Cherrypy或者其它任何WSGIHTTP服務(wù)器

示例

運(yùn)行上面的代碼,訪問(wèn)http://localhost:8080/hello/bottle試試。

下載和安裝

通過(guò)

或者

安裝最新穩(wěn)定版,或者下載bottle.py(不穩(wěn)定)到你的工程目錄。Bottle運(yùn)行于Python2.5+and3.x環(huán)境下。需要框架項(xiàng)目實(shí)戰(zhàn)視頻+Python學(xué)習(xí)交流643692991

十三、Tornado:異步非阻塞IO的PythonWeb框架

Tornado的全稱(chēng)是ToradoWebServer,從名字上看就可知道它可以用作Web服務(wù)器,但同時(shí)它也是一個(gè)PythonWeb的開(kāi)發(fā)框架。最初是在FriendFeed公司的網(wǎng)站上使用,F(xiàn)aceBook收購(gòu)了之后便開(kāi)源了出來(lái)。

作為Web框架,是一個(gè)輕量級(jí)的Web框架,類(lèi)似于另一個(gè)Pythonweb框架Web.py,其擁有異步非阻塞IO的處理方式。

作為Web服務(wù)器,Tornado有較為出色的抗負(fù)載能力,官方用nginx反向代理的方式部署Tornado和其它Pythonweb應(yīng)用框架進(jìn)行對(duì)比,結(jié)果最大瀏覽量超過(guò)第二名近40%。

此外,它的源代碼也是Python開(kāi)發(fā)者學(xué)習(xí)與研究的絕佳材料。

以下是Tornado的HelloWorld示例程序。

十四、webpy:輕量級(jí)的PythonWeb框架

webpy的設(shè)計(jì)理念力求精簡(jiǎn)(Keepitsimpleandpowerful),源碼很簡(jiǎn)短,只提供一個(gè)框架所必須的東西,不依賴(lài)大量的第三方模塊,它沒(méi)有URL路由、沒(méi)有模板也沒(méi)有數(shù)據(jù)庫(kù)的訪問(wèn)。這樣的優(yōu)點(diǎn)是,

框架給開(kāi)發(fā)帶來(lái)的限制少,可以根據(jù)自己的需求進(jìn)行定制。缺點(diǎn)就是,很多東西都需要自己親自動(dòng)手開(kāi)發(fā)。

雖然webpy的作者AaronH.Swartz,一位偉大的程序員在2013年1月11日自殺身亡,結(jié)束了短暫的26年生命。但是,作為一個(gè)開(kāi)源項(xiàng)目,目前還是有很多開(kāi)發(fā)者在持續(xù)更新。

webpy非常的簡(jiǎn)單,語(yǔ)法幾乎跟Python一樣,以下是一個(gè)簡(jiǎn)單的示例:

需要框架項(xiàng)目實(shí)戰(zhàn)視頻+Python學(xué)習(xí)交流643692991

十五、Scrapy:Python的爬蟲(chóng)框架

網(wǎng)絡(luò)爬蟲(chóng),是在網(wǎng)上進(jìn)行數(shù)據(jù)抓取的程序,使用它能夠抓取特定網(wǎng)頁(yè)的HTML數(shù)據(jù)。雖然我們利用一些庫(kù)開(kāi)發(fā)一個(gè)爬蟲(chóng)程序,但是使用框架可以大大提高效率,縮短開(kāi)發(fā)時(shí)間。Scrapy是一個(gè)使用Python編寫(xiě)的,

輕量級(jí)的,簡(jiǎn)單輕巧,并且使用起來(lái)非常的方便。

Scrapy使用了Twisted異步網(wǎng)絡(luò)庫(kù)來(lái)處理網(wǎng)絡(luò)通訊。整體架構(gòu)大致如下(注:圖片來(lái)自互聯(lián)網(wǎng)):

Scrapy主要包括了以下組件:

1、引擎,用來(lái)處理整個(gè)系統(tǒng)的數(shù)據(jù)流處理,觸發(fā)事務(wù)。

2、調(diào)度器,用來(lái)接受引擎發(fā)過(guò)來(lái)的請(qǐng)求,壓入隊(duì)列中,并在引擎再次請(qǐng)求的時(shí)候返回。

3、下載器,用于下載網(wǎng)頁(yè)內(nèi)容,并將網(wǎng)頁(yè)內(nèi)容返回給蜘蛛。

4、蜘蛛,蜘蛛是主要干活的,用它來(lái)制訂特定域名或網(wǎng)頁(yè)的解析規(guī)則。

5、項(xiàng)目管道,負(fù)責(zé)處理有蜘蛛從網(wǎng)頁(yè)中抽取的項(xiàng)目,他的主要任務(wù)是清晰、驗(yàn)證和存儲(chǔ)數(shù)據(jù)。當(dāng)頁(yè)面被蜘蛛解析后,將被發(fā)送到項(xiàng)目管道,并經(jīng)過(guò)幾個(gè)特定的次序處理數(shù)據(jù)。

6、下載器中間件,位于Scrapy引擎和下載器之間的鉤子框架,主要是處理Scrapy引擎與下載器之間的請(qǐng)求及響應(yīng)。

7、蜘蛛中間件,介于Scrapy引擎和蜘蛛之間的鉤子框架,主要工作是處理蜘蛛的響應(yīng)輸入和請(qǐng)求輸出。

8、調(diào)度中間件,介于Scrapy引擎和調(diào)度之間的中間件,從Scrapy引擎發(fā)送到調(diào)度的請(qǐng)求和響應(yīng)。

使用Scrapy可以很方便的完成網(wǎng)上數(shù)據(jù)的采集工作,它為我們完成了大量的工作,而不需要自己費(fèi)大力氣去開(kāi)發(fā)。

python框架是什么

框架就是一個(gè)基本架構(gòu),別人已經(jīng)替你搭建好了基本結(jié)構(gòu),你只需要按自己需求,添加內(nèi)容就行,不需要反復(fù)的造輪子,可以明顯提高開(kāi)發(fā)效率,節(jié)約時(shí)間,python的框架很多,目前來(lái)說(shuō)有web框架,爬蟲(chóng)框架,機(jī)器學(xué)習(xí)框架等,下面我簡(jiǎn)單介紹一下這3種基本框架,主要內(nèi)容如下:

1.web框架,這個(gè)就很多了,目前來(lái)說(shuō),比較流行的有3種,分別是Django,Tornado和Flask,下面簡(jiǎn)單介紹一下這3個(gè)框架:

Django:這是一個(gè)成熟、穩(wěn)重的python框架,基于MVC模式(又說(shuō)MTV,本質(zhì)一樣),最初是作為一個(gè)內(nèi)容管理系統(tǒng)來(lái)開(kāi)發(fā)的,后期隨著不斷的完善、改進(jìn),就成了一個(gè)功能強(qiáng)大web框架,提供數(shù)據(jù)庫(kù)功能、后臺(tái)功能、網(wǎng)址匹配、系統(tǒng)緩存等功能,易擴(kuò)展的模版系統(tǒng),幾行代碼就可使你的網(wǎng)站擁有強(qiáng)大的后臺(tái),管理你的內(nèi)容。

Tornado:這是一個(gè)非阻塞式的服務(wù)器,運(yùn)行速度非常開(kāi),每秒可以處理數(shù)以千計(jì)的連接,相比較Django來(lái)說(shuō),比較小、靈活,許多東西都可能都需要自己構(gòu)建。

Flask:這是python的一個(gè)輕量級(jí)web框架,靈活、可擴(kuò)展性強(qiáng),其WSGI工具箱采用Werkzeug,模板引擎則使用JinJa2,社區(qū)插件比較多,如果想開(kāi)發(fā)一個(gè)中小型web網(wǎng)站的話,可以考慮一下這個(gè)框架。

2.爬蟲(chóng)框架,這個(gè)也很多,目前來(lái)說(shuō),比較流行的是scarpy,當(dāng)然還有pyspider,newspaper等,下面我簡(jiǎn)單介紹一下:

scrapy:這是一個(gè)比較流行的python爬蟲(chóng)框架,定制型比較高,也比較靈活,可以根據(jù)自己需求快速的構(gòu)建爬蟲(chóng),爬取數(shù)據(jù),可以應(yīng)用在數(shù)據(jù)挖掘、監(jiān)測(cè)等方面。

pyspider:這是一個(gè)功能強(qiáng)大的網(wǎng)絡(luò)爬蟲(chóng)框架,能在瀏覽器界面上進(jìn)行腳本的編寫(xiě),實(shí)時(shí)查看爬取的結(jié)果,后端使用數(shù)據(jù)庫(kù)存儲(chǔ)數(shù)據(jù)。

newspaper:這是一個(gè)專(zhuān)門(mén)用于新聞、文章提取和內(nèi)容分析的框架。

3.機(jī)器學(xué)習(xí)框架,這個(gè)也有很多,最著名的就是tensorflow了,其次還有theano,keras,scikit-learn等,下面我簡(jiǎn)單介紹一下:

tesorflow:這是一個(gè)開(kāi)源的機(jī)器學(xué)習(xí)框架,采用數(shù)據(jù)流圖用于數(shù)據(jù)計(jì)算,可以在多種平臺(tái)上展開(kāi)計(jì)算,包括CPU,GPU等,由谷歌研發(fā)、開(kāi)源,主要用于機(jī)器學(xué)習(xí)和神經(jīng)網(wǎng)絡(luò)的研究。

scikit-learn:這是python的一個(gè)機(jī)器學(xué)習(xí)包,包括常用的機(jī)器學(xué)習(xí)算法,像分類(lèi)、回歸、聚類(lèi)、降維等,對(duì)于機(jī)器學(xué)習(xí)感興趣的讀者,可以研究一下。

theano,keras基于tensorflow構(gòu)建,在神經(jīng)網(wǎng)絡(luò)、深度學(xué)習(xí)方面應(yīng)用的比較多,感興趣的可以搜一下相關(guān)資料,網(wǎng)上的資料很多。

目前就介紹這幾種框架吧,后面還有測(cè)試框架什么的,感興趣的可以自己搜一下,希望以上分享的內(nèi)容能對(duì)你有所幫助吧。

為什么Qt框架不是很流行

Qt框架非常強(qiáng)大,但是,代碼書(shū)寫(xiě)太麻煩,不適合新手。

目前有Pyqt5和pyside2是用python的代碼書(shū)寫(xiě)制作GUI,雖然很強(qiáng)大,但是也只是適合老程序員,新手也還是覺(jué)得太麻煩,流行不起來(lái)。

如果只是制作簡(jiǎn)單的GUI目前有很多其他簡(jiǎn)單的工具,就python就有很多種方法制作小工具的GUI

程序框圖主要由哪幾類(lèi)對(duì)象構(gòu)成,分別起什么作用

1、文件名App.h(cpp)應(yīng)用程序類(lèi)CMyApp的基類(lèi)是CWinApp,而CWinApp的基類(lèi)又是CWinThread,CWinThread類(lèi)是用來(lái)完成對(duì)線程(見(jiàn)后面的名詞解釋?zhuān)┑目刂?,包括?duì)線程的創(chuàng)建、運(yùn)行、終止和掛起等。它實(shí)際上是Windows首先運(yùn)行的內(nèi)容,當(dāng)這個(gè)程序開(kāi)始時(shí),它將會(huì)把主窗口放在屏幕上。C或C++是從main()主函數(shù)開(kāi)始執(zhí)行,而VC++是從WinMain()函數(shù)開(kāi)始執(zhí)行,且WinMain()函數(shù)就是隱含在此應(yīng)用程序中2、CMainFrm.h(cpp)主框架類(lèi)CMainFrm的基類(lèi)是CFrameWnd,該類(lèi)是顯示主窗口,是我們找到菜單欄、窗口的標(biāo)題欄以及工具欄的地方,主窗口對(duì)象負(fù)責(zé)窗口中出現(xiàn)的、圍繞操作領(lǐng)域的一切,如:圖畫(huà)、文本和其它圖形,這個(gè)區(qū)域稱(chēng)為窗口中的客戶(hù)區(qū)。它用于管理應(yīng)用程序窗口顯示如:標(biāo)題欄、菜單欄、工具欄、狀態(tài)欄、控制菜單、控制按鈕等,它是所有MDI(多文檔)和SDI(單文檔)子窗口的包容器。3、文件名View.h(cpp)視圖類(lèi)CMyView的基類(lèi)是CView,處理客戶(hù)區(qū),是我們?cè)诔绦蛑性O(shè)置數(shù)據(jù)格式及顯示數(shù)據(jù)的位置,如我們?cè)趧?chuàng)建一個(gè)字處理程序時(shí)正在編輯的文本,事實(shí)上,視圖對(duì)象是出現(xiàn)在客戶(hù)區(qū)頂部的窗口本身,用于讓用戶(hù)通過(guò)窗口來(lái)訪問(wèn)文檔、視圖類(lèi)。4、CMyDoc.h(cpp)文檔類(lèi)CMyDoc.h(cpp)的基類(lèi)是CDocument,為程序存儲(chǔ)數(shù)據(jù),將所有數(shù)據(jù)存在文檔中,而在視圖對(duì)象中處理并顯示。它包含了應(yīng)用程序在運(yùn)行期間所用到的數(shù)據(jù)文檔。

編程語(yǔ)言有哪些

一場(chǎng)編程語(yǔ)言之戰(zhàn)

@Author:Runsen

本人懂一點(diǎn)Python,Java,根據(jù)自己想法而來(lái),純屬虛構(gòu)。

現(xiàn)狀

進(jìn)入2020年3月,新的編程語(yǔ)言排行榜新鮮出爐,TIOBE最新發(fā)布了3月編程語(yǔ)言排行榜。

從榜單中我們可以看到,前三名分別為Java、C、Python。相較于上個(gè)月,Python繼續(xù)以1.85%上升至10.11%,以10.11%的份額穩(wěn)居第三。

我們先了解下比較常見(jiàn)的編程語(yǔ)言的,如Java,Python,JavaScript,C/C++,Go,C#各編程語(yǔ)言的用途。

“眾口難調(diào)”,面對(duì)多種多樣的編程語(yǔ)言,大家眾說(shuō)紛紜,每種編程語(yǔ)言都有其存在的意義,編程之戰(zhàn)從未停止,“戰(zhàn)火”一觸即發(fā)。

家庭內(nèi)戰(zhàn)

最近,編程語(yǔ)言家族開(kāi)了一場(chǎng)“家庭聚會(huì)”,都是在討論自己的排名。

下面是家庭成員的對(duì)話。

老三Py:最近,我可厲害了。從2015年,人工智能的開(kāi)始,人人學(xué)我,基本上我成為最無(wú)敵的大佬。

老四C++:可不是嘛,老三,你的爬蟲(chóng),數(shù)據(jù)分析,機(jī)器學(xué)習(xí),深度學(xué)習(xí),自然語(yǔ)言處理再加上你的Django,flask等Web開(kāi)發(fā)等,就連你的PyQt也想占領(lǐng)我的QT圖形界面市場(chǎng),都是你這個(gè)流氓,害得我從老三變成老四。

老三Py:那都是你太難寫(xiě)了,學(xué)我就是幾分鐘就能入門(mén)的,誰(shuí)叫你這么難懂,什么面向?qū)ο?,你的一百行代碼,我十幾行就搞定了,誰(shuí)還會(huì)學(xué)你,很快,我就是老大,你就是我的小弟。

老四C++對(duì)老大Java說(shuō):大哥,有人想謀權(quán)篡位。

老大Java:現(xiàn)在,確實(shí)是老三的時(shí)代,現(xiàn)在個(gè)個(gè)數(shù)據(jù)分析師只會(huì)Python,都喊出了:人生苦短,我用Python。要怪就怪?jǐn)?shù)據(jù)分析人員編程水平太低了,寫(xiě)來(lái)寫(xiě)去就是py代碼,完全學(xué)不會(huì)其他語(yǔ)言。

老二C鄙視的說(shuō):就算寫(xiě)Python太厲害,也最多就是一個(gè)導(dǎo)包俠,沒(méi)有什么了不起的。老三,話說(shuō)你有什么本事當(dāng)老大,我都不敢謀權(quán)篡位。

老三Py:不如我們比一比,看看現(xiàn)在開(kāi)發(fā)者需要我多些還是老大多先。

老大Java:好,比就比。誰(shuí)怕誰(shuí),我到底看看你有什么本事。

老三Py:我代碼簡(jiǎn)單,寫(xiě)起來(lái)輕松易懂,比如我打印一句HelloWorld,就是一個(gè),就是這么簡(jiǎn)單。就問(wèn)你們服不服?

老大Java:打印一個(gè)HelloWorld,我確實(shí)需要好幾行代碼,還要聲明一個(gè)HelloWorld對(duì)象。

老二C:我還要定義一個(gè)main的主函數(shù),打印一個(gè)HelloWorld確實(shí)有點(diǎn)多。

老四C++:我是抄老二的,寫(xiě)個(gè)HelloWorld比老二還要多。

老三Py:看見(jiàn)沒(méi)有,這就是差距,誰(shuí)會(huì)寫(xiě)那么多代碼,直接簡(jiǎn)單粗暴我就是一個(gè)打印HelloWorld。

老大Java:老三,你這樣不行啊,萬(wàn)物都是對(duì)象,寫(xiě)一行代碼,我覺(jué)得都要聲明一個(gè)對(duì)象。

老三Py:什么對(duì)象,我能打印出來(lái)就Ok了。

其他人:確實(shí)老三寫(xiě)的代碼太簡(jiǎn)單了,連小學(xué)生基本都能學(xué)會(huì),我們自愧不如,老三,你還要什么本事嗎?

老三Py:要說(shuō)我牛逼莫過(guò)我的第三方庫(kù),超過(guò)上萬(wàn)個(gè),安裝也簡(jiǎn)單,一個(gè)就輕松搞定,還給人看到安裝進(jìn)度條,你們說(shuō)我牛不牛逼。

老大Java:這我可不服,你去的maven倉(cāng)庫(kù)看看

我的jar包任何一種場(chǎng)景都有,我的生態(tài)系早就完善,怎么不如你老三?

老三Py:你在pom.xml安裝什么任何信息告訴別人,而且你的dependency鬼死那么長(zhǎng),人家愿意寫(xiě)嗎?

老二C和老四C++:我們gcc和cmake添加第三方庫(kù)還要編譯才可以。

老三Py:我的requests,selenium,beautifulsoup,pyquery,lxml,Scrapy,Crawley,Pyspider等一系列爬蟲(chóng)庫(kù)和爬蟲(chóng)框架厲害到爆,幾乎所有爬蟲(chóng)都是我來(lái)編寫(xiě)的,你們的爬蟲(chóng)市場(chǎng)早沒(méi)有你們的份了。

老大Java:我的WebMagic,Nutch,Heritrix,Jsoup,SeimiCrawler,JLiteSpider爬蟲(chóng)編寫(xiě)的代碼確實(shí)比你多了好幾倍,以前爬蟲(chóng)的市場(chǎng)都是基本用我,現(xiàn)在給你占去,悲哀。

老二C老四C++:爬蟲(chóng),小心爬進(jìn)監(jiān)獄,現(xiàn)在首例爬蟲(chóng)禁令,禁止爬取微信公眾號(hào),都是老三你的爬蟲(chóng)造成多少假流量,造成多少網(wǎng)站奔潰,就說(shuō)12306有盡20%以上都是爬蟲(chóng)訪問(wèn)流量,有多少人搶票,再提價(jià)出售,官方發(fā)票,又被他們搶了,你以前讓多少人搶不票,這背后引發(fā)了一系列的骯臟的資產(chǎn)鏈。

老三Py:這關(guān)我毛事,現(xiàn)在的百度蜘蛛爬取,多少網(wǎng)站雙手叫好,這都是他們的問(wèn)題。

其他人:你除了爬蟲(chóng),還有什么?

老三Py:我的數(shù)據(jù)分析三劍客numpy,pandas,matplotlib,在加上Seaborn,Scipy,StatModels,Pyecharts,Bokeh,Blaze,Plotly,NetWorkX,Biopython,SymPy和gwpy等數(shù)據(jù)科學(xué)庫(kù)簡(jiǎn)直無(wú)敵,都喊出了,從excel學(xué)Python了。

老大Java:數(shù)據(jù)分析我雖然也有jar提供,但是我派了我的兒子scala去幫我完善。

老二C老四C++:這東西不是SPSS,stata,tableau,powerbi,excel,Echart,F(xiàn)ineReport等強(qiáng)大的數(shù)據(jù)分析工具就可以解決了,都是用我們和老大開(kāi)發(fā)的,干嘛還要寫(xiě)代碼。

老三Py:我一把屠龍劍Pycharm,一把倚天劍anaconda,一個(gè)開(kāi)發(fā),一個(gè)數(shù)據(jù)分析,雙劍合并,威力無(wú)敵。

老大Java:比IDE開(kāi)發(fā)工具,我可不怕,我有Eclipse,MyEclipse,IntellijIDEA,NetBeans功能厲害到爆。

老二C老四C++:Dev-C++,C-free,CLion,Code::Blocks,CodeLite,C++Builder,我們覺(jué)得同樣沒(méi)問(wèn)題。

老三Py:我的Web開(kāi)發(fā)Django社區(qū)非常龐大,江湖上,Python有兩條腿跑,一腿就是我的django,因?yàn)閮扇f(wàn)個(gè)包,一萬(wàn)以上都是我的Django,再加上了其他兒子flask,tornado,我開(kāi)發(fā)了國(guó)內(nèi)的豆瓣、知乎,國(guó)外:Instagram、Disqus、NationalGeographic、NASA

老大Java:Web開(kāi)發(fā),你還敢比,我就拿出一個(gè)Spring家族就夠了,SpringMVC,SpringBoot,SpringCloud,再說(shuō)了我還有自己的Tomcat,Jetty應(yīng)用服務(wù)器,微服務(wù)的架構(gòu)早就深化人心。如果以前的網(wǎng)站不是用php開(kāi)發(fā),那基本就是我以前的Servlet,jsp開(kāi)發(fā)的(雖然落后了,但基本都在維護(hù)),現(xiàn)在網(wǎng)站開(kāi)發(fā)首選我的Spring家族。

老二C老四C++:雖然在網(wǎng)站開(kāi)發(fā)我們幾乎沒(méi)有市場(chǎng),但是軟件開(kāi)發(fā)都是采用我們的,比如早期的QQ,微信,支付寶等大部分軟件都是我們開(kāi)發(fā)的。

老三Py:有本事比一比現(xiàn)在最火的人工智能,我的機(jī)器學(xué)習(xí)sklearn,深度學(xué)習(xí)keras,Pytorch,tensorflow,Caffe,PaddlePaddle,哪個(gè)不知道,哪個(gè)不用?就是因?yàn)檫@個(gè),我才算最近的王者。

老大Java:你是不是想王者榮耀想多了,王者榮耀的客戶(hù)端應(yīng)該是C#(Unity3D)開(kāi)發(fā)的,核心后端服務(wù)是C++開(kāi)發(fā),可沒(méi)有你的份。人工智能,我怎么實(shí)現(xiàn)不了,我的深度學(xué)習(xí)庫(kù)——DL4J、ND4J以及Deeplearning4j,深度學(xué)習(xí)框架就是因?yàn)閿?shù)據(jù)分析者只會(huì)用Python,才讓你火到現(xiàn)在。

老四C++:CPP-Call-Tensorflow,Caffe2C++API,PyTorch-CPP,我的性能比你的好不知道多少倍。對(duì)了,說(shuō)說(shuō)性能,老三,你這不怎么行。

老大Java補(bǔ)刀:連數(shù)據(jù)都沒(méi)有,老三你做什么人工智能,看看得我的apache社區(qū)的大數(shù)據(jù)框架ApacheHadoop,ApacheHive,ApacheHbase,ApacheSqoop,ApacheFlume,ApacheSpark,ApacheBeam,ApacheFlink,ApacheStorm,SparkStreaming,ApacheOozie還有CloudersManager(CDH)都是我開(kāi)發(fā)出來(lái),大數(shù)據(jù)平臺(tái)都是我干的,沒(méi)有了數(shù)據(jù),你做什么Ai,你是不是猴子請(qǐng)來(lái)的逗逼?

老三Py:游戲方面,我可以有我的Pygame,性能方面,我承認(rèn)比較低效,大數(shù)據(jù)不是還有我的pyspark?

老五C#:你的Pygame就是小孩子過(guò)家家的,游戲市場(chǎng)我已經(jīng)占領(lǐng),老三你可不要來(lái)。

老大Java笑道:spark是我的兒子scala開(kāi)發(fā)的,spark就是為了你們這些數(shù)據(jù)分析的人不會(huì)我(Java)和我兒子(scala),你們的壓力下,不好意思的開(kāi)發(fā)了pyspark,對(duì)Python提供了APi,再說(shuō)了我們也給R提供了Rspark。話說(shuō),老R從前十掉下到了十一。

老R:就是你老三一直打擊我,害得現(xiàn)在數(shù)據(jù)分析的人員不學(xué)習(xí)R了,都以為學(xué)你,就天下無(wú)敵了。

老四C++:就是明明每個(gè)人占領(lǐng)一種市場(chǎng)就夠了,現(xiàn)在提出了”人生苦短,我學(xué)Python“口號(hào)。

老三Py:就是要”人生苦短,我學(xué)Python“。

老大Java:就是因?yàn)槟?,害得所有人的編程水平只降下?lái)。Java開(kāi)發(fā)人員學(xué)習(xí)Python,就是分分鐘的事情。

老二C:不要說(shuō),大學(xué)我敢保證所有人都必須學(xué)習(xí)我開(kāi)始。

老四C++:有本事你讓學(xué)Python的來(lái)學(xué)我或者老大,我不信他能學(xué)得了。學(xué)我的人基本被我折磨死了,學(xué)你py就是分分鐘的事情,有本事繼續(xù)聊性能,我好像記得知乎得推薦系統(tǒng)用go重寫(xiě)了,還不是因?yàn)槟愕男省?/p>

老十go:今天我難得上了前十,什么”人生苦短,我學(xué)Python“,明明就是”2020年,我們一起學(xué)go“。

老三Py:我去你的,你老十有什么資格說(shuō)話?再說(shuō)了我有cpython,Numba提高運(yùn)行速度不就可以了嗎?

老大Java:那你老三有什么資格在我面前說(shuō)話,你連多線程和并發(fā)都處理不好,還不如提出我的口號(hào)”O(jiān)nceWrite,RunAnywhere“,一次編寫(xiě),到處運(yùn)行,我的強(qiáng)大的JVM,你老三有嗎?

老三Py:我可以用Pyinstall打成exe,到處運(yùn)行,不就是”一次編寫(xiě),到處運(yùn)行“,

老大Java:我的強(qiáng)大,你不知道,你還是在mac和liunx運(yùn)行你的exe吧。我還有一個(gè)兒子Kotlin和我占領(lǐng)APP市場(chǎng),你有APP市場(chǎng)嗎,還想當(dāng)大佬,這日子是不是有點(diǎn)早了。

老三Py:我有kivy開(kāi)發(fā)APP。

老二C老四C++:老三,你怎么不說(shuō)用flutter開(kāi)發(fā)APP?

老三Py:那是Google開(kāi)源的UI工具包,關(guān)我毛事。

老二C老四C++:flutter的底層是基于我們的開(kāi)發(fā)的。

老三Py:我不管,反正現(xiàn)在人人學(xué)Py,我的市場(chǎng)就是慢慢變大,我就是當(dāng)老大。

老二C:我從1972年誕生,可以說(shuō)我是老三你的長(zhǎng)輩。Java可是運(yùn)行在全球的三十億設(shè)備上的,我都沒(méi)有把握當(dāng)老大,你哪里來(lái)的勇氣?

老三Py:我是從1991年出生,Java可是1995年出生,這樣我不就是老大的長(zhǎng)輩嗎?

老大Java:老三說(shuō)得沒(méi)錯(cuò),老三要當(dāng)老大,他膨脹了,要先超越老二你了。

老二C:什么?老三,他連編譯器都沒(méi)有,一個(gè)解釋器基于我的編譯器,竟然敢叫囂超越我,用我編譯器,底層封裝我的代碼,沒(méi)有我,哪里來(lái)你,腳本就是腳本,動(dòng)態(tài)語(yǔ)言就是動(dòng)態(tài)語(yǔ)言,老大,老四和我哪個(gè)不是靜態(tài)語(yǔ)言,哪個(gè)沒(méi)有自己的編譯器?信不信我不給你用我的編譯器,讓你從前十消失。

老三Py:臥槽,爸爸,我錯(cuò)了,別讓我從前十消失啊。

一聲不吭的老八php叫道:php才是最好的語(yǔ)言。

我想說(shuō)的

Python這語(yǔ)言,只適合作為加分項(xiàng),不適合作為技術(shù)支撐。因?yàn)樗鼘?xiě)不了復(fù)雜邏輯。只適合寫(xiě)一個(gè)爬蟲(chóng),計(jì)算器,記事本,Qt之類(lèi)的小程序。Python超越了Java和C,那是不可能的。Python從老四超越了C++,已經(jīng)是一個(gè)很震驚的大事了。

說(shuō)這個(gè)也許有人不服,憑什么Python就寫(xiě)不了復(fù)雜邏輯?豆瓣和知乎不是用Python寫(xiě)的嗎?

先聲明,豆瓣的后端,已經(jīng)廢棄了絕大部分的Python代碼,重新寫(xiě)過(guò)了。youtube也正在重寫(xiě)中。目前以Python為主的網(wǎng)站,就只有知乎這么個(gè)獨(dú)苗,而且知乎的推薦算法已經(jīng)用go重寫(xiě)了。

為什么?不是因?yàn)镻ython的性能慢,而是因?yàn)镻ython的語(yǔ)法太悲劇了。也許Python的語(yǔ)法簡(jiǎn)潔,在初學(xué)者看來(lái)是優(yōu)點(diǎn)。因?yàn)槌鯇W(xué)者一般練手,都只寫(xiě)1000行以下的小玩意,Python的語(yǔ)法簡(jiǎn)直爽翻了,真沒(méi)任何缺點(diǎn)。

但如果你真的嘗試用Python封裝幾十個(gè)類(lèi),去寫(xiě)個(gè)一萬(wàn)行以上的東西,自然就明白它的語(yǔ)法問(wèn)題有多嚴(yán)重了。不只是難受,而是根本寫(xiě)不下,去維護(hù)成本太大了。沒(méi)有靜態(tài)類(lèi)型檢查是主要原因。能解決么?也能,好的模塊設(shè)計(jì)還有codereview能回避掉一些,不過(guò)這樣一來(lái)也就抵消掉一些Python能帶來(lái)的快速開(kāi)發(fā)的優(yōu)勢(shì)了。

還是江湖那句話,動(dòng)態(tài)一時(shí)爽,重構(gòu)火葬場(chǎng)。并不適合大項(xiàng)目,Python還是適合原型,前期項(xiàng)目。

搞it要想混得好,如果哪能只會(huì)一樣?xùn)|西呢,除非你不想混好,拼得就是綜合素質(zhì),除非你Python登峰造極的程度,python五分鐘都能入門(mén),Python的語(yǔ)法和英語(yǔ)完全一樣。學(xué)Python的人,去學(xué)Java,真的覺(jué)得很難。

如果按難度評(píng)分0-5的話,Python沒(méi)有難度指數(shù)0,php難度指數(shù)1,go難度指數(shù)2,Java難度指數(shù)3,C++/C難度指數(shù)4。靜態(tài)語(yǔ)言的難度是比動(dòng)態(tài)腳本難的,如果你是編程零基礎(chǔ),建議從學(xué)習(xí)Python,再深入到Java。一手Python,一手Java基本在市場(chǎng)屬于比較靠前的水平。

阿里基本Java的天下,騰訊的前世是靠C/C++出生,華為主要業(yè)務(wù)是在硬件方面,也需要C/C++的編程基礎(chǔ)。百度,字節(jié)相反用的Python,go,ruby比較多。

不過(guò)如果自己想要有更長(zhǎng)遠(yuǎn)的發(fā)展,只學(xué)python肯定是不夠的,個(gè)人覺(jué)得Java、Python這二門(mén)語(yǔ)言都熟練掌握最好。如果想成為大神,那就補(bǔ)充一個(gè)C++,你就是無(wú)敵的存在。

@Author:Runsen公眾號(hào):潤(rùn)森筆記

關(guān)于編程框架有哪幾種到此分享完畢,希望能幫助到您。