隨著互聯(lián)網(wǎng)產(chǎn)品的日漸飽和,移動(dòng)互聯(lián)網(wǎng)也已進(jìn)入下半場(chǎng),市場(chǎng)已經(jīng)從時(shí)代逐漸進(jìn)入一個(gè)相對(duì)平穩(wěn)的發(fā)展階段,互聯(lián)網(wǎng)人口滲透率已經(jīng)超過(guò)了50%。人工智能掀起了新的一波世界科技浪潮,互聯(lián)網(wǎng)巨頭公司BAT、近年來(lái)崛起的人工智能企業(yè)粵嵌科技、Face++、Video++都在不斷增大人工智能領(lǐng)域的投入。
自從2017年國(guó)務(wù)院印發(fā)《新一代人工智能發(fā)展規(guī)劃》中明確指出在中小學(xué)階段設(shè)置人工智能課程之后,python一路逆襲成為人工智能時(shí)代合適的語(yǔ)言,并借此為未來(lái)國(guó)家和社會(huì)發(fā)展奠定了人工智能的人才培養(yǎng)基礎(chǔ),甚至被眾多程序員譽(yù)為“宇宙的編程語(yǔ)言”。
但人工智能的核心算法主要還是依賴于C/C++的。
因?yàn)槭怯?jì)算密集型,需要非常精細(xì)的優(yōu)化,還需要GPU、專用硬件之類的接口,這些都只有C/C++能做到,所以某種意義上來(lái)說(shuō),其實(shí)C/C++才是人工智能領(lǐng)域重要的語(yǔ)言。
Python是APIbinding,使用Python是因?yàn)镃Python的膠水語(yǔ)言特性,能夠把用其他語(yǔ)言制作的各種模塊很輕松的連接在一起,比如3D游戲中的圖形渲染,性能要求特別高就可以用C/C++重寫(xiě),而后封裝為Python可以調(diào)用的擴(kuò)展類庫(kù)。所以說(shuō)要開(kāi)發(fā)一個(gè)其他語(yǔ)言到C/C++的跨語(yǔ)言接口,Python是容易的,比其他語(yǔ)言的ffi門(mén)檻要低很多,尤其是使用Cython的時(shí)候,其他語(yǔ)言的ffi許多都只能導(dǎo)入C的函數(shù)入口點(diǎn),復(fù)雜的數(shù)據(jù)結(jié)構(gòu)大多只能手工用byte數(shù)組接起來(lái),如果還需要回調(diào)函數(shù)輸入那就無(wú)計(jì)可施了。
而Cpython的CAPI是雙向融合的,可以直接對(duì)外暴露封裝過(guò)的Python對(duì)象,還可以允許用戶通過(guò)繼承這些自定義對(duì)象來(lái)引入新特性,在一定條件限制下甚至可以從C代碼當(dāng)中再調(diào)用Python的函數(shù)。不過(guò)這也是PyPy這樣的JIT解釋器的一個(gè)障礙。而且Python歷史上也一直都是科學(xué)計(jì)算和數(shù)據(jù)分析的重要工具,有numpy這樣的底子,因?yàn)樾袠I(yè)近似所以選擇APIbinding語(yǔ)言的時(shí)候會(huì)Python,同時(shí)復(fù)用numpy這樣的基礎(chǔ)庫(kù)既減少了開(kāi)發(fā)工作量,也方便從業(yè)人員上手。
機(jī)器學(xué)習(xí)作為人工智能的一個(gè)分支,它是讓機(jī)器能具備擺脫對(duì)人工指令的依賴,能按照一定的算法開(kāi)展自主學(xué)習(xí)的能力,它的出現(xiàn)才真正讓“人工智能”不枉智能二字。在當(dāng)下興起的人工智能以及大數(shù)據(jù)運(yùn)用上,Python的優(yōu)勢(shì)可以被廣泛運(yùn)用到許多領(lǐng)域和重要的日常軟件功能當(dāng)中,人臉識(shí)別、會(huì)話接口、商業(yè)智能等領(lǐng)域,Python都證明了它的實(shí)用性。自動(dòng)化的司法調(diào)查、安全檢查、網(wǎng)頁(yè)分析等都有可能使用Python來(lái)實(shí)現(xiàn)。但未來(lái)5到10年,整個(gè)人工智能會(huì)往什么方向發(fā)展?Python和C/C++誰(shuí)能成為核心算法,值得我們的期待。