JavaScript是否正在蠶食Python適用的場景?
每一種編程語言在設計的時候,其實都是出于一定的需求,為了解決某一個或者某幾個方面的問題而出現的。就像是C語言這樣強大的語言,也不是適合所有的生產環境。那么對于這個題目,首先我持有的觀點是否定的。
JavaScript最早是隨著前端網站開發的需求應運而生的,隨著計算機編程技術的發展,這門語言也在發展中。我個人認為它最大的兩個里程碑,一個是Node.js的出現,另外一個就是目前脫穎而出的三大JavaScript框架,Angular / Vue / React。
兩者共同的應用場景眾所周知,JavaScript主要作為前端的腳本語言來使用,結合HTML和CSS,來實現功能更加豐富的網站。因為它的學習曲線平緩,入門容易,受到了廣大程序員的青睞。NodeJS就是將JavaScript作為外層語言,實現了利用JavaScript就可以開發出后端服務器程序的運行時環境。配合其他基于nodjs的框架,比如express,koa,hapi等,能夠更加快捷方便的提高web server的開發效率。Python其實也同樣可以開發web server程序,目前兩大主流的框架是Django和Flask,都可以利用Python滿足與node.js相同的開發要求,要說不同的地方,那就是部署的方式和過程的不同而已。而且用這兩門語言開發出來的程序在運行速度方面差別不大。具體用JavaScript還是Python,也就是一個選擇的問題了。所以在web程序開發方面,不存在誰蠶食誰的情況。
兩者不同的應用場景不同的應用場景,很明顯,在開發網站的時候,HTML+CSS+JavaScript仍然是無可撼動的三劍客組合。這并不是我這篇文章要討論的。JavaScript和Python的不同場景,其實在于目前發展迅速的人工智能領域。大家都知道,Python已經成為了人工智能開發的首選語言,但并不是唯一選擇的語言。目前的一些主流AI框架,比如TensorFlow、Pytorch、MXNet等,除了首推Python語言的版本外,其實也有JavaScript、C++、Java等其他語言的版本。但是應用最廣泛的,仍然是Python版本。這種現象其實與Python的特點有關。Python有著非常強大和豐富的語法特點,我在日常教學工作中,就曾經舉過這樣的例子,計算 1 到 100 的累加和。
這是JavaScript的版本
var result = 0;
for (var i=1; i<=100; i++) {
result += i;
}
這是Python的版本
sum( range(1, 101) )
因為人工智能要依賴于很多的數據,在前期做的大量工作其實是進行數據的分析和處理。用JavaScript和用Python實現相同的數據處理效果,顯然Python的代碼量會少很多。對使用者來說,Python可能更具吸引力。
另外,數據分析和人工智能的計算,需要非常巨大的算力,而JavaScript主要是運行在前端,比如瀏覽器。結合Node.js,JavaScript也可以運行在服務器上。而Python主要運行在服務器上。而服務器的硬件配置,利用Python實現分布式部署和多線程技術,就可以提供成倍的算力來應付AI程序。但是利用JavaScript進行多機聯合運行程序的難度可能會比Python高。
AI技術的發展,人工智能 / 深度學習的重點,并不在編程,而在算法的優化和優質的數據。所以為了更加方便的處理好數據,更加快速的驗證算法,就需要簡化程序的編程難度,降低代碼量,那么Python無疑可以滿足這樣的要求。所以涉及到人工智能的研究和開發,Python就成為了首選。
---------------------------
所以并不存在JavaScript蠶食或者替代Python的應用場景,只能說哪一門語言更適合,更方便。語言只是工具,編程只是手段,大家最終想要得到的其實是最后的結果。