python為什么突然火起來?
一、python這些年在編程語言排行榜上名次一直在上升,這個并不是偶然。python發(fā)展了幾十年,中間好長一段時間無人問津,現(xiàn)在已經(jīng)發(fā)展很成熟了,像新的語言go很多需要的包都沒有,而python上各種包很多,用戶開發(fā)不可能自己慢慢寫包,直接調(diào)用包,快得多,有立桿見影的效果。
二、python可以工作的領(lǐng)域很多,一開始只是在linux上代替腳本使用,后來發(fā)現(xiàn)python可以做數(shù)據(jù)分析,后來又有人搞了web開發(fā)包,pyqt桌面開發(fā)包,數(shù)據(jù)庫驅(qū)動,再后來發(fā)展出了人工智能,深度學(xué)習(xí),gpu加速,這樣python可以應(yīng)用的范圍就很廣了,特別在服務(wù)器上,不像客戶端那樣需要安裝,很多l(xiāng)inux都內(nèi)置了python。這樣在服務(wù)器上python可以作用很大,性能不夠時,可以用顯卡等加速措施。
三、python是開源,像java,c#主要用于商業(yè)軟件開發(fā),大家都看不到其他人開發(fā)的源碼,開發(fā)文檔更是沒有,而python天生就是開源運(yùn)行代碼,可按需修改,這樣大家一共享,在市場上有n多包可以使用,形成了開源包文化,大家相互受益。這樣學(xué)習(xí)時,可以調(diào)用大量的成熟的開源包,對開發(fā)就省事了很多,開源文化的共享,為python快速發(fā)展提供了基礎(chǔ)。
四、python在工人智能領(lǐng)域,特別方便,很多開源的人工智能框架,都優(yōu)先使用python,人工智能的學(xué)習(xí)成本很高,python剛好可以簡化編程,像你學(xué)習(xí)用c++開發(fā)tensorflow會特別累,而用python的keras來開發(fā)tensorflow程序?qū)懙么a量很少,在初學(xué)級段,這很重要,必竟人工智能這幾年才開始發(fā)展,發(fā)展速度很快,很多人需要學(xué)習(xí)這方面的入門技術(shù)。
五、歐美學(xué)習(xí)python歷史悠久,以前中國把qbasic(vb),這類語言做為計算機(jī)考級語言,這完全是害了大家,如果當(dāng)年你學(xué)python,基于python的開源原因,基本上可以用一輩子,而qbasic,vb這種商業(yè)語言微軟都打算放棄了。這樣國家為了未來著想,也讓人們學(xué)習(xí)python,而c語言太復(fù)雜,學(xué)會了基本語言,還需要學(xué)習(xí)計算機(jī)原理和操作系統(tǒng)知識,學(xué)習(xí)周期太長了,不適合做為大面積普及的編程語言。
六、python簡學(xué)難精,入門容易精通難,編程語言都是這樣,這樣低手需要學(xué)習(xí),高手也需要學(xué)習(xí),大家都學(xué),導(dǎo)致比較容易受到關(guān)注,如低手學(xué)基本語法,高手學(xué)機(jī)器學(xué)習(xí),領(lǐng)域算法,可以學(xué)習(xí)的部分很多,這個語言的有很深的行業(yè)積累。python適合開發(fā)代碼量并不大的程序,像工程化應(yīng)用,功能復(fù)雜模塊多,建議用java這種帶靜態(tài)檢查的程序,很多代碼問題能第一時間發(fā)展,通過模塊化開發(fā),可以隔離復(fù)雜度在整個系統(tǒng)中不擴(kuò)散,如果用python組成團(tuán)隊(duì)開發(fā)大規(guī)模程序,像java那樣,也是需要學(xué)習(xí)大量軟件工程,計算機(jī)編程領(lǐng)域的各種技巧,實(shí)現(xiàn)分層,分模塊,按協(xié)議標(biāo)準(zhǔn)開發(fā)。
七、python是很多領(lǐng)域的嵌入語言,如maya的腳本就是開源的,你做動畫,可以用腳本來做很多工作,python可以方便植入到其他系統(tǒng)中,可以通過調(diào)用c/c++編譯的動態(tài)鏈接庫,來實(shí)現(xiàn)各種調(diào)用,也可以使用消息隊(duì)列、通信、數(shù)據(jù)庫等方法,很方便地和其他系統(tǒng)交互,如python可以和java一道工作在linux服務(wù)器上,這樣需要學(xué)習(xí)的需求量增長了很多。
八、python運(yùn)行速度是要慢一些,但現(xiàn)在的計算機(jī)性能過剩,運(yùn)行常規(guī)程序你幾時看到你的cpu跑滿過(如果你的cpu經(jīng)常跑滿,趕緊看看是不是中毒或被挖礦了),運(yùn)行python基本上不會有性能問題,就算有性能問題一般也是卡在io輸入輸出的速度上,也有的是算法本身設(shè)計的有問題,如果做計算密集型程序,可以使用gpu加速來實(shí)現(xiàn),像深度學(xué)習(xí)的卷積神經(jīng)網(wǎng)絡(luò),就是用的gpu加速來實(shí)現(xiàn),這樣python的速度就能提升上來了,你用c++幸苦寫個算法,可能還沒有python開啟個gpu加速快,如果一個gpu不行,還有分布式集群gpu,這個是很多語言也很難實(shí)現(xiàn)的,用c++也可以實(shí)現(xiàn),但是c++的開發(fā)成本特別高,根本不劃算。
九、很超級實(shí)用的python包,導(dǎo)致了python的繁榮,python中像opencv的調(diào)用非常簡單,像信號處理算法的調(diào)用類似matlab,而買個matlab很貴,像互聯(lián)網(wǎng)公司,數(shù)據(jù)處理是在服務(wù)器,服務(wù)器都是開源linux的不要交版權(quán)費(fèi),python可以很方便地運(yùn)行自動化運(yùn)維工具,很多公司的云計算背后的膠水語言用的就是python。很多科學(xué)家,用python研究科學(xué),如引力波程序就是python寫的,像分析基因的很多程序也是python寫的,這些科學(xué)家寫程序主要是解決業(yè)務(wù)領(lǐng)域的問題,對計算機(jī)的原理并不想了解太多,而python的開箱即用,剛好滿足他們的需求,發(fā)展出了科學(xué)分析,科學(xué)計算大量的包。
十、python語言以前是學(xué)校不教的,現(xiàn)在是開始全民學(xué)習(xí)python。由于科技發(fā)展的重要性與連續(xù)性,國家為了發(fā)展移動互聯(lián)網(wǎng),大數(shù)據(jù),人工智能產(chǎn)業(yè),在小學(xué)都編寫了教材,實(shí)現(xiàn)人人編程,學(xué)習(xí)編程,這樣可以更加深刻理解電腦,包括移動互聯(lián)網(wǎng)的各個方面的技術(shù)也是基于電腦技術(shù),未來各個產(chǎn)業(yè)需要信息化,網(wǎng)絡(luò)化,對計算機(jī)的知識只會越來越高。而教育大眾,python的簡單入門就是很大優(yōu)點(diǎn),小孩子都能入門學(xué)習(xí)。如果你學(xué)會了編程,很多電腦知識學(xué)起來了就很容易了,根本不需要記憶具體內(nèi)容,因?yàn)榫幊坛鰜淼能浖疾畈欢啵憧淳幊谈呤值挠嬎銠C(jī)知識肯定比常人要高,這樣對信息化的理解也是高于常人的。
十一、python不需要知識產(chǎn)權(quán)費(fèi),是開放源代碼的,美國現(xiàn)在開始對中國封鎖科技,中國未來只有依靠開源軟件才能突破重圍,開源軟件不屬于某個國家,雖然開發(fā)人員可能某個國家占多數(shù),但別人完全可以再換個名稱來繼續(xù)使用,如果你用封源軟件,那天美國一封鎖,你可能連安全補(bǔ)丁都打不了,像俄羅斯在gov,安全部門都是使用自己的操作系統(tǒng),自己的cpu,這樣美國一點(diǎn)辦法都沒有,安全性也大大加強(qiáng),他們的操作系統(tǒng)是linux開源的修改版,這個源碼是人人都可以修改的,軟件一旦開源了,源碼復(fù)制就非常簡單,雖然在美國有軟件專利一說,但在中國并沒有軟件專利相關(guān)申請,很多軟件專利在國內(nèi)并不認(rèn)可,國內(nèi)申請軟件專利都是附帶硬件申請的,未來盡量使用開源軟件,就能避開這些陷阱,可能你那天成立個商業(yè)公司,有點(diǎn)規(guī)模(這些公司的名言是,羊要養(yǎng)肥了再宰),你使用商業(yè)軟件可能別人就要找上門來問你要授權(quán)費(fèi)(國內(nèi)已經(jīng)有很多家公司收到過這樣的律師涵或電話摧要),這個可能是個定時炸彈,有的小公司就是這樣倒閉的,便宜的軟件每套要好幾千上萬,高級軟件授權(quán)可能達(dá)到幾百萬上千萬,很多公司利潤很低根本沒有這么多除錢來交這些,像國內(nèi)互聯(lián)網(wǎng)公司,他們都知道這些陷阱,所以清一色使用linux,全面使用開源軟件,這樣商業(yè)化使用能省下很多錢,省錢實(shí)際就是掙錢。如果全面使用開源軟件,那么整個經(jīng)濟(jì)每年就要少交很多授權(quán)費(fèi),就能減少了整個經(jīng)濟(jì)運(yùn)行的摩擦力,對個人可以促進(jìn)就業(yè),對公司有利于降低成本。