還有人 認(rèn)為 Python 的優(yōu)勢在于資源豐富,擁有堅(jiān)實(shí)的數(shù)值算法、圖標(biāo)和數(shù)據(jù)處理基礎(chǔ)設(shè)施,建立了非常良好的生態(tài)環(huán)境,吸引了大批科學(xué)家以及各領(lǐng)域的專家使用,從而把雪球越滾越大 。但我覺得這是倒因?yàn)楣槭裁雌?Python 能夠吸引人們使用,建立起這么好的基礎(chǔ)設(shè)施呢?為什么世界上最好的語言 PHP 里頭就沒有 numpy 、NLTK、sk-learn、pandas 和 PyTorch 這樣級別的庫呢?為什么 JavaScript 極度繁榮之后就搞得各種程序庫層次不齊,一地雞毛,而 Python 的各種程序庫既繁榮又有序,能夠保持較高水準(zhǔn)呢?
我認(rèn)為最根本的原因只有一點(diǎn): Python 是眾多主流語言中唯一一個戰(zhàn)略定位明確,而且始終堅(jiān)持原有戰(zhàn)略定位不動搖的語言 。相比之下,太多的語言不斷的用戰(zhàn)術(shù)上無原則的勤奮去侵蝕和模糊自己的戰(zhàn)略定位,最終只能等而下之。
Python 的戰(zhàn)略定位是什么?其實(shí)很簡單, 就是要做一種簡單、易用但專業(yè)、嚴(yán)謹(jǐn)?shù)耐ㄓ媒M合語言 ,或者叫膠水語言,讓普通人也能夠很容易的入門,把各種基本程序元件拼裝在一起,協(xié)調(diào)運(yùn)作。
正是因?yàn)閳?jiān)持這個定位,Python 始終把語言本身的優(yōu)美一致放在奇技妙招前面,始終把開發(fā)者效率放在CPU效率前面,始終把橫向擴(kuò)張能力放在縱向深潛能力之前。長期堅(jiān)持這些戰(zhàn)略選擇,為 Python 帶來了其他語言望塵莫及的豐富生態(tài)。
比如說,任何一個人,只要愿意學(xué)習(xí),可以在幾天的時間里學(xué)會Python基礎(chǔ)部分,然后干很多很多事情,這種投入產(chǎn)出比可能是其他任何語言都無法相比的。再比如說,正是由于 Python 語言本身慢,所以大家在開發(fā)被頻繁使用的核心程序庫時,大量使用 C 語言跟它配合,結(jié)果用 Python 開發(fā)的真實(shí)程序跑起來非???,因?yàn)楹苡锌赡艹^ 80% 的時間系統(tǒng)執(zhí)行的代碼是 C 寫的。相反,如果 Python 不服氣,非要在速度上較勁,那么結(jié)果很可能是裸速提高個幾倍,但這樣就沒人有動力為它開發(fā) C 模塊了,最后的速度遠(yuǎn)不如混合模式,而且很可能語言因此會變得更復(fù)雜,結(jié)果是一個又慢又丑陋的語言。
更重要的是,Python 的包裝能力、可組合性、可嵌入性都很好,可以把各種復(fù)雜性包裝在 Python 模塊里,暴露出漂亮的接口。很多時候,一個程序庫本身是用 C/C++ 寫的,但你會發(fā)現(xiàn),直接使用 C 或者 C++ 去調(diào)用那個程序庫,從環(huán)境配置到接口調(diào)用,都非常麻煩,反而隔著一層,用其python 包裝庫更加清爽整潔,又快又漂亮。這些特點(diǎn)到了 AI 領(lǐng)域中,就成了 Python 的強(qiáng)大優(yōu)勢。Python 也借助 AI 和數(shù)據(jù)科學(xué),攀爬到了編程語言生態(tài)鏈的頂級位置。Python 與 AI綁在一起,對它們來說,無論是電子商務(wù)、搜索引擎、社交網(wǎng)絡(luò)還是智能硬件,未來都只是生態(tài)鏈下游的數(shù)據(jù)奶牛、電子神經(jīng)和執(zhí)行工具,都將聽命于自己。
對編程語言發(fā)展歷史缺乏了解的人可能會覺得,Python 的戰(zhàn)略定位是犬儒主義和缺乏進(jìn)取心的。但事實(shí)證明,能同時做到簡單而嚴(yán)謹(jǐn)、易用而專業(yè),是很難的,而能夠堅(jiān)守膠水語言的定位,更是難上加難。