欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

Python為什么這么厲害

錢浩然2年前20瀏覽0評論

Python為什么這么厲害?

Python的確挺厲害的~但不是生來就那么厲害。

Python是在1991年被創(chuàng)造出來的,但真正開始被廣泛使用是Python 2.6以后的事情了。從2012年開始到現(xiàn)在,Python的熱度持續(xù)累積,成為關(guān)注度增長最快的語言。

有圖有真相:Python如此快的增長,說明了它確實十分神奇

所以說,Python并沒有像Golang等語言那么幸運,生來就備受關(guān)注;而是因為語言本身的設(shè)計特點對生態(tài)環(huán)境有著極強(qiáng)的適應(yīng)能力,同時適時抓住了成長機(jī)遇,從而厚積薄發(fā)。

精妙的設(shè)計哲學(xué)

早期的Python,在Java、PHP、JS、C++等重重包圍下,盡管受眾不廣,但仍舊得以生存,主要因為Python的設(shè)計哲學(xué)使其具備了十足的生命力。

忍不住要分享一下精妙的Python之禪(摘自Python官網(wǎng)),它并非出自Python創(chuàng)始人之手,但已被官方認(rèn)可為編程原則。而精妙之處在于它不僅適用于編程,更適用于人生。原來每一個熱愛代碼的優(yōu)秀編程者都是哲學(xué)家。

The Zen of Python, by Tim PetersBeautiful 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. Although practicality beats purity.Errors should never pass silently. Unless explicitly silenced. In the face of ambiguity, refuse the temptation to guess. There should be one-- and preferably only one --obvious way to do it. Although that way may not be obvious at first unless you're Dutch. Now is better than never. Although never is often better than right now. If the implementation is hard to explain, it's a bad idea. If the implementation is easy to explain, it may be a good idea. Namespaces are one honking great idea -- let's do more of those!

帶著這種哲學(xué),Python逐漸發(fā)展成了一個特別簡明友好、容易上手、功能強(qiáng)大的語言,發(fā)展過程中,Python抓住了三次飛速發(fā)展的機(jī)會。

適時抓住成長機(jī)遇

第一個機(jī)會,Web與敏捷開發(fā)

在受到廣泛關(guān)注之前,Python更多地是作為簡單腳本語言,配合一些系統(tǒng)相關(guān)工作而被運用(主要是跟Perl搶地盤)。Python開始受到廣泛關(guān)注,得益于Google的推動。Google或許不是第一家使用Python的公司,但它是第一家大規(guī)模使用Python進(jìn)行Web相關(guān)開發(fā)的全球著名公司,從而有力地證明了Python能夠很好地完成Web開發(fā)相關(guān)的許多工作。

而此時互聯(lián)網(wǎng)正開始向快速開發(fā)轉(zhuǎn)型,開發(fā)速度對于企業(yè),尤其是初創(chuàng)企業(yè)而言至關(guān)重要,因此Python簡潔便利與高效開發(fā)的特點吸引了眾多企業(yè)和組織,同期衍生出來的社區(qū)環(huán)境又為Python提供了無數(shù)優(yōu)質(zhì)到可以進(jìn)行生產(chǎn)級使用的模塊和包;對比彼時PHP的模板式開發(fā),Java的龐大繁雜,Ruby的語法新奇多變,Python為中小型企業(yè)的快速開發(fā)提供了尤為可能的解決方案,從而使得Python開始小有名氣。

第二個機(jī)會,科學(xué)計算

相較于商業(yè)開發(fā),科學(xué)計算面向更多的是非專業(yè)的編程人員,從這個方向上來說,拋開商業(yè)化軟件不談,Python的競爭對手也是前有Fortran,后有R、Julia語言的存在,雖然歷史積累不如Fortran,抽象形式不及R,現(xiàn)代化和綜合性能不如Julia,但是這些卻仍然沒有妨礙Python在這個領(lǐng)域里大顯身手。

歷史積累不如Fortran?沒關(guān)系!借助C接口把Fortran包包裹起來讓Python用就好;

抽象形式不及R?沒關(guān)系!Python語法簡單庫還多,學(xué)習(xí)起來也不難,效率還高一丟丟,更重要的是借助這些特點能直接做產(chǎn)品,比R更具市場親和力;

現(xiàn)代化不如Julia?沒關(guān)系!Python社區(qū)大,要啥包有啥包。

更讓人們驚喜的是,借助Python的各種模塊和包,能夠十分簡單地實現(xiàn)之前需要折騰很久的繁雜工作,諸如訪問數(shù)據(jù)庫和表格文件,哪怕是在R語言中,仍舊需要從ODBC里一點點拿出數(shù)據(jù);而用Python,以Pandas,一句話就能解決數(shù)據(jù)的讀甚至寫。

并且,隨著計算金融和大數(shù)據(jù)的興起,大量程序員開始投入科學(xué)計算,相較于Fortran的陳腐、R的濃厚統(tǒng)計數(shù)學(xué)意味以及Julia的不發(fā)達(dá)社區(qū),Python自然而然的成了很多人的首選;而經(jīng)驗豐富的程序員又更進(jìn)一步推動了Python社區(qū)的發(fā)展,更多優(yōu)秀的包和模塊得到了迅速推廣:

矩陣、符號、科學(xué)計算?有NumPy、SymPy和SciPy;

統(tǒng)計分析?有Pandas;

可視化?有matplotlib、seaborn;

……

于是,Python很快便在該領(lǐng)域占據(jù)了半壁江山。

第三個機(jī)會,深度學(xué)習(xí)

在較早的很長一段時間里,提到機(jī)器學(xué)習(xí),人們往往會使用C++、Java等作為主要工具。GPGPU的出現(xiàn)使得計算龐雜的機(jī)器學(xué)習(xí)任務(wù)開始由CPU向GPU轉(zhuǎn)變,但研究者直接進(jìn)行GPU編程,在計算復(fù)雜的模型時,不僅需要大量心智來分析算法的設(shè)計,還不得不投入大量精力解決顯卡計算開發(fā)中的工程問題,為研究增添了非常大的難度。

隨著時間的積累,更多的開源庫出現(xiàn),使得機(jī)器學(xué)習(xí)中主要算法實現(xiàn)抽象成了一個個模塊,研究者才得以從繁雜的工程開發(fā)中解放出來。此時,代碼成了模塊的調(diào)用和描述,使用諸如C++或Java這樣繁雜的工程化語言不再是必要選擇,特別是更通用化的深度學(xué)習(xí)出現(xiàn),促使研究者需要一種更加易讀、易分析的描述性語言(DSL)來解決問題。

而Python因此前在科學(xué)計算領(lǐng)域已有廣泛應(yīng)用,加之它能很容易接入現(xiàn)有的C/C++庫,以及良好的可讀性,成為不少框架的必然選擇,如Theano和Caffe。同時,由于AlphaGo亮眼的表現(xiàn)聚焦了眾人的注意力,并隨后開源了以Python為接口Tensorflow,使得由AI熱潮帶來的學(xué)習(xí)者紛紛奔向了Python和Tensorflow。

之后,越來越多的框架都開始提供Python接口——Python能夠容易而清晰地描述模型結(jié)構(gòu),輕松解決計算中的數(shù)據(jù)輸入(無論從硬盤、數(shù)據(jù)庫、網(wǎng)絡(luò)中的任何一種)問題,簡單地實現(xiàn)可視化,并能輕易地設(shè)計為Web服務(wù)。甚至連使用Lua的Torch都實現(xiàn)了以Python為接口的演進(jìn)版本PyTorch。至此,Python幾乎已經(jīng)統(tǒng)治了深度學(xué)習(xí)的模型設(shè)計、訓(xùn)練領(lǐng)域。

Python在深度學(xué)習(xí)上有多神?

正如前文所述,Python極大地減輕了深度學(xué)習(xí)研究者的心智負(fù)擔(dān),使之得以將更多的精力集中在模型的設(shè)計、改進(jìn)上。而當(dāng)深度學(xué)習(xí)的研究可以集中在對模型結(jié)構(gòu)、對優(yōu)化算法等方面的研究上,這個領(lǐng)域的進(jìn)展迅速也就可以被理

不妨看一個簡單的例子,此處使用Keras框架中對MNIST(手寫數(shù)字識別)數(shù)據(jù)集的深度卷積網(wǎng)絡(luò)的實現(xiàn)代碼:

讓我們詳細(xì)看看這段不到70行的代碼:加載標(biāo)準(zhǔn)數(shù)據(jù)集不過僅僅5 行,訓(xùn)練部分也就寥寥數(shù)行,而其中的模型,更是簡單直白:數(shù)據(jù)順序地經(jīng)過若干卷積層(Conv2D)、池化層(MaxPooling2D)、展平(Flatten)和全連接層(Dense)。

加載標(biāo)準(zhǔn)數(shù)據(jù)集僅僅5 行

訓(xùn)練部分寥寥數(shù)行

這樣的一段程序,經(jīng)過訓(xùn)練,對于手寫數(shù)字的識別率可以達(dá)到99.25%,如果你愿意,也可以為此程序接入微信、網(wǎng)站,或包裝成應(yīng)用程序,一切都只需要簡單的幾行代碼即可完成。

更多Python可以做到的事情請參看你都用 Python 來做什么?

所以你看,Python其實是屬于厚積薄發(fā)型選手,與其說它神,倒不如說它早就做好了準(zhǔn)備,一直在尋找爆發(fā)的機(jī)會,Python的語言哲學(xué)值得認(rèn)真品讀一番。

js代碼 css,Python為什么這么厲害