今天是大年初七,是上班的第一天,也是匯智動(dòng)力年后開(kāi)課的第一天,我們有幸請(qǐng)到忙碌的趙福貴老師為我們介紹一下計(jì)算機(jī)語(yǔ)言中的python語(yǔ)言,這個(gè)被程序員們戲稱“人生苦短,我用Python”的語(yǔ)言到底有何魔力!

福貴哥作為一個(gè)多年在IT界摸爬滾打的老兵,因項(xiàng)目需要,在工作過(guò)程中使用過(guò)多種計(jì)算機(jī)語(yǔ)言,也一直關(guān)注著計(jì)算機(jī)語(yǔ)言的發(fā)展和變化。無(wú)論是開(kāi)發(fā)人員還是測(cè)試人員,掌握一兩門主流語(yǔ)言,都是必須的。這計(jì)算機(jī)語(yǔ)言可是我們IT屌絲的屠龍刀、倚天劍,更是找老婆、養(yǎng)家糊口、升職加薪的必備利器。語(yǔ)言不熟,根本就沒(méi)法在這個(gè)圈子里生存和發(fā)展,足見(jiàn)計(jì)算機(jī)語(yǔ)言對(duì)于程序猿們來(lái)說(shuō),何等重要!

先容福貴哥用那么一丟丟版面介紹下自己的計(jì)算機(jī)語(yǔ)言使用史,咋和Python語(yǔ)言結(jié)緣的。最早出道使用的是Dephi和C++語(yǔ)言,因?yàn)轫?xiàng)目開(kāi)發(fā)使用的C++語(yǔ)言,所以當(dāng)時(shí)做單元測(cè)試需要使用這門語(yǔ)言,但是福貴哥對(duì)當(dāng)時(shí)的Dephi語(yǔ)言還是有著滿滿的激情啊!

Dephi作為一門快速開(kāi)發(fā)的語(yǔ)言,開(kāi)發(fā)界面程序簡(jiǎn)單、高效,用起來(lái)真的是灰常灰常的安逸呢!2005年左右公司開(kāi)發(fā)平臺(tái)調(diào)整為Java,所以又忙著到處找資料,看開(kāi)發(fā)人員項(xiàng)目代碼學(xué)習(xí)Java語(yǔ)言。學(xué)了一陣子對(duì)Java語(yǔ)言沒(méi)啥好感(請(qǐng)?jiān)徫耶?dāng)時(shí)的年少無(wú)知),估計(jì)是因?yàn)橛昧?xí)慣了Dephi,感覺(jué)Java語(yǔ)言開(kāi)發(fā)界面程序真滴是又慢又丑陋,用起來(lái)很不爽。

后來(lái)偶然接觸到了C#語(yǔ)言,頓時(shí)被C#吸引到了,強(qiáng)大的顏值,超高的Visual Studio IDE(按現(xiàn)在的話講就是十足的顏值控啊,哈哈),快速的開(kāi)發(fā)能力,寫軟件測(cè)試工具快,界面隨便拖拖就出來(lái)了,程序界面也好看得很,后邊涉及到界面的開(kāi)發(fā)就都使用C#了。

直到2008年,我們測(cè)試總監(jiān)給了我一個(gè)艱巨任務(wù),讓我寫一些服務(wù)器、模擬器和接口自動(dòng)化測(cè)試框架,聽(tīng)了任務(wù)之后,當(dāng)時(shí)心里默默地問(wèn)候了下我的總監(jiān)。當(dāng)時(shí)我覺(jué)得,要么是領(lǐng)導(dǎo)很重視我,要么是要我走人??!

信念

福貴哥工作以來(lái)一直有一個(gè)信念,就是只要努力沒(méi)有完不成的任務(wù),不管領(lǐng)導(dǎo)啥心思,必須要把任務(wù)搞定!于是開(kāi)始研究、找資料,當(dāng)時(shí)的Google、Baidu、圖書與之相關(guān)的內(nèi)容真的是非常匱乏!沒(méi)辦法,后來(lái)去找了我們部門大牛老陳,老陳對(duì)我的技術(shù)提升真的是幫助很大的一個(gè)人。聽(tīng)了我的困難,老陳慢條斯理的跟我說(shuō),你可以考慮用Python去做,不難!“牌神”是什么東東,我就是“牌神”啊,昨晚還整到下半夜呢!老陳于是大概給我介紹了下“Python”和相關(guān)案例,我聽(tīng)了真的跟打了雞血一樣,一個(gè)是感嘆我們的牛人老陳知道得多,另外是因?yàn)榘l(fā)現(xiàn)了一個(gè)新大陸。從此富貴哥就開(kāi)始踏上了研究Python之路。

真是“皇天不負(fù)有心人”,很快我就使用Python 和Twisted框架實(shí)現(xiàn)了協(xié)議的封裝和服務(wù)器的開(kāi)發(fā),使用“數(shù)據(jù)驅(qū)動(dòng)”模式實(shí)現(xiàn)了接口自動(dòng)化框架的程序研發(fā)。那感覺(jué)真是Perfect!從此與Python相戀,已不知Java、C#是誰(shuí)?心中只有Python!

寫這篇文章,我又翻了額(我)的大硬盤,找到當(dāng)年寫的代碼,10多年了,古董啊!必須發(fā)出來(lái)給大家看看。

福貴哥就是講信用的人,只用了上面一丟丟篇幅講了下自己的語(yǔ)言使用史。嗯嗯,容我再補(bǔ)充兩句?。ù颂帒?yīng)該有雞蛋等禮品奉上)以上內(nèi)容主要是給大家借鑒下,讓年輕人多了解下歷史,哈哈哈!

言歸正傳,計(jì)算機(jī)語(yǔ)言分為編譯型語(yǔ)言和解釋型語(yǔ)言。

編譯型語(yǔ)言主要代表如:Java、C、C++、C#(Java和C#嚴(yán)格來(lái)說(shuō)不能算純粹的編譯型語(yǔ)言),編譯型語(yǔ)言具備語(yǔ)法嚴(yán)謹(jǐn),速度快、靈活等特點(diǎn)。

解釋型語(yǔ)言主要代表:Python、Ruby、Go等語(yǔ)言,解釋型語(yǔ)言具備簡(jiǎn)單,開(kāi)發(fā)高效等特點(diǎn)。但是解釋型語(yǔ)言前些年,一直因?yàn)樾阅芷?,開(kāi)發(fā)靈活性差所受人詬病。隨著近些年硬件條件的極大改善,解釋型語(yǔ)言自身的不斷完善,解釋型語(yǔ)言終于實(shí)現(xiàn)了發(fā)展大跨越,一騎絕塵,成功上位。

計(jì)算機(jī)語(yǔ)言目前的格局簡(jiǎn)單概括一下就是:老兵老當(dāng)益壯、新人異軍突起。Tiobe公布了12月份的編程語(yǔ)言排行榜,傳統(tǒng)老兵Java、C、C++、VB還是在前五強(qiáng)占據(jù)了四個(gè)席位。新人Python超越C++排名第三。

而在另外一份 PYPL 榜單上,Python 在今年 5 月以 22.8% 的份額,首次超越 Java占據(jù)榜首位置。隨后幾個(gè)月 Python 保持上漲趨勢(shì)以 23.59% 的份額甩開(kāi) Java ,排名第一,正逐漸與 Java 拉開(kāi)差距。最新榜單如下:

Python上位如此之快,得萬(wàn)千寵愛(ài)于一身,Why?Why?Why?為什么 Python 發(fā)展得這么快?

我們先來(lái)了解下Python語(yǔ)言的特點(diǎn):

Ø 簡(jiǎn)單易學(xué)

Ø 免費(fèi)、開(kāi)源

Ø 面向?qū)ο?/span>

Ø 豐富的庫(kù)

Ø 可擴(kuò)展性強(qiáng)

Ø 移植性好

Python語(yǔ)言最突出的特點(diǎn)就是簡(jiǎn)單易學(xué)。

大學(xué)目前非計(jì)算機(jī)專業(yè)大多都是以C語(yǔ)言進(jìn)行教學(xué),C語(yǔ)言在企業(yè)里多用于底層研發(fā),難度偏大,C語(yǔ)言課成了多少學(xué)子的噩夢(mèng)。

簡(jiǎn)單

去年浙江省信息技術(shù)新教材,在2017年9月入學(xué)高中新生中開(kāi)始使用Python語(yǔ)言,而且Python也在很多少兒編程中得到了應(yīng)用,Python語(yǔ)言已經(jīng)進(jìn)入了少兒、初中高中階段的學(xué)習(xí)內(nèi)容,足以體現(xiàn)它簡(jiǎn)單易學(xué)的一面。所以強(qiáng)烈建議大學(xué)非計(jì)算機(jī)專業(yè)所學(xué)的計(jì)算機(jī)語(yǔ)言調(diào)整為Python,可以讓大家在學(xué)習(xí)語(yǔ)言的同時(shí)感受其無(wú)窮的樂(lè)趣及魅力。

Python不僅簡(jiǎn)單易學(xué),且非常強(qiáng)大。

Python有兩個(gè)外號(hào),分別為:“內(nèi)置電池”,“膠水語(yǔ)言”。前者的意思是,Python官方本身提供了非常完善的標(biāo)準(zhǔn)代碼庫(kù),包括針對(duì)網(wǎng)絡(luò)編程、輸入輸出、文件系統(tǒng)、圖形處理、數(shù)據(jù)庫(kù)、文本處理等。代碼庫(kù)相當(dāng)于已經(jīng)編寫完成打包供開(kāi)發(fā)者使用的代碼集合,程序員只需通過(guò)加載、調(diào)用等操作手段即可實(shí)現(xiàn)對(duì)庫(kù)中函數(shù)、功能的利用,從而省去了自己編寫大量代碼的過(guò)程,讓編程工作看起來(lái)更像是在“搭積木”。除了內(nèi)置庫(kù),開(kāi)源社區(qū)和獨(dú)立開(kāi)發(fā)者長(zhǎng)期為Python貢獻(xiàn)了豐富的第三方庫(kù),其數(shù)量遠(yuǎn)超其他主流編程語(yǔ)言,可見(jiàn)Python的語(yǔ)言生態(tài)已然相當(dāng)壯大。

比如,完成同一個(gè)任務(wù),C語(yǔ)言要寫1000行代碼,Java只需要寫100行,而Python可能只要20行。言外之意,Python集成度更高,用時(shí)更少,就可以實(shí)現(xiàn)以前所實(shí)現(xiàn)的功能。

“膠水語(yǔ)言”是Python的另一個(gè)亮點(diǎn)。Python本身被設(shè)計(jì)成具有可擴(kuò)展性,它提供了豐富的API和工具,以便開(kāi)發(fā)者能夠輕松使用包括C、C++等主流編程語(yǔ)言編寫的模塊來(lái)擴(kuò)充程序。就像使用膠水一樣把其他編程語(yǔ)言編寫的模塊粘合過(guò)來(lái),讓整個(gè)程序同時(shí)兼?zhèn)淦渌Z(yǔ)言的優(yōu)點(diǎn),起到了黏合劑的作用。

正是這種多面手的角色讓Python近幾年在開(kāi)發(fā)者世界中名聲鵲起,因?yàn)榛ヂ?lián)網(wǎng)與移動(dòng)互聯(lián)時(shí)代的需求量急速倍增,大量開(kāi)發(fā)者亟需一種極速、敏捷的工具來(lái)助其處理與日俱增的工作,Python發(fā)展至今的形態(tài)正好滿足了他們的愿望。

我之前寫過(guò)的一些基于私有協(xié)議的Socket通信服務(wù)器模擬器,可以支持多線程的異步通信,也就幾十行代碼就搞定了,這是在之前難以想象的。另外早在2009年左右,我服務(wù)的公司就使用Python開(kāi)發(fā)了一款游戲服務(wù)器,游戲服務(wù)器性能、穩(wěn)定性非常的出色。一款語(yǔ)言,簡(jiǎn)單易學(xué),開(kāi)發(fā)效率如此之高,請(qǐng)問(wèn)哪個(gè)程序員、哪個(gè)老板、哪個(gè)公司不愛(ài)呢?所以“人生苦短,我用Python”絕對(duì)不是一句戲言。

我們可以再看看Python語(yǔ)言應(yīng)用的領(lǐng)域,目前Python主要應(yīng)用方向:

1、常規(guī)軟件的開(kāi)發(fā)。Python支持函數(shù)式編程和OOP面向?qū)ο缶幊?,因此常?guī)的軟件開(kāi)發(fā)、腳本編寫、網(wǎng)絡(luò)編程等都屬于標(biāo)配能力。

2、桌面軟件開(kāi)發(fā)。Python結(jié)合PIL、Tkinter等圖形庫(kù)支持,可以輕松的進(jìn)行圖形處理、可視化的展示。

3、網(wǎng)站服務(wù)器開(kāi)發(fā)。目前Python應(yīng)用比較多的Django框架、Flask框架、Tornado框架用于網(wǎng)站服務(wù)器的開(kāi)發(fā)。

4、數(shù)據(jù)爬蟲開(kāi)發(fā)。目前使用較多的是Requests、Scrapy等框架,進(jìn)行遍歷爬行網(wǎng)站、分解獲取數(shù)據(jù)。

5、大數(shù)據(jù)分析、挖掘和深度學(xué)習(xí)。Python結(jié)合NumPy、Pandas、Matplotlib、statsmodels、scikit-learn、NLTK、TensorFlow等模塊,進(jìn)行數(shù)據(jù)清洗、數(shù)據(jù)分析、數(shù)據(jù)建模、機(jī)器學(xué)習(xí)等應(yīng)用。數(shù)據(jù)分析特別在金融領(lǐng)域、電商領(lǐng)域應(yīng)用非常成熟。

6、自動(dòng)化運(yùn)維。Python結(jié)合Paramiko、Fabric、Saltstack、Ansible、Func等模塊實(shí)現(xiàn)自動(dòng)化運(yùn)維,提升系統(tǒng)維護(hù)效率。

7、軟件測(cè)試應(yīng)用。Python在軟件測(cè)試領(lǐng)域常用于測(cè)試工具開(kāi)發(fā)、自動(dòng)化腳本編寫、測(cè)試數(shù)據(jù)構(gòu)造、軟件滲透性測(cè)試等方面。

8、游戲服務(wù)器。很多游戲C++編寫圖形顯示等高性能模塊,而使用Python編寫游戲的邏輯、服務(wù)器。Python編寫的功能更簡(jiǎn)單、體積更小、開(kāi)發(fā)效率更高。

9、云計(jì)算。目前很火的云計(jì)算框架OpenStack就是由Python開(kāi)發(fā)的,如果想要深入學(xué)習(xí)并進(jìn)行二次開(kāi)發(fā),就需要具備Python的技能。

以上是Python目前主要應(yīng)用領(lǐng)域,Python簡(jiǎn)直就是“全群體、全領(lǐng)域、能上天、能入地、無(wú)所不能、無(wú)處不在……”的全能戰(zhàn)士,總之一句話“矮油,看好你喔”。

人年齡大了,情到深處,話就多了起來(lái),哈哈!今天就寫這么多吧。我的老師教我寫文章一定要多引用名人名言,否則沒(méi)有說(shuō)服力。還是要按常理出牌,最后援引開(kāi)源運(yùn)動(dòng)的領(lǐng)袖人物Eric Raymond的一句話:“Python語(yǔ)言非常干凈,設(shè)計(jì)優(yōu)雅,具有出色的模塊化特性。其最出色的地方在于,鼓勵(lì)清晰易讀的代碼,特別適合以漸進(jìn)開(kāi)發(fā)的方式構(gòu)造項(xiàng)目”。