每一种编程语言在设计的时候,其实都是出于一定的需求,为了解决某一个或者某几个方面的问题而出现的。就像是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的应用场景,只能说哪一门语言更适合,更方便。语言只是工具,编程只是手段,大家最终想要得到的其实是最后的结果。