金源在线客服

在线咨询

QQ在线咨询

QQ咨询

关于pythonPython

Python与JavaScript做比较公平吗?(上)

作者: 更新时间::2023-04-23

在讨论应该使用 Python 还是 JavaScript 构建项目时,一般我们都不会说只使用一种编程语言来构建所有的组件。

在现代软件开发中,如果想构建符合标准的软件,确保在截止日期前完成,或者构建一款可以处理数百万用户的应用程序,那么通常都会使用多种语言、框架、工具和 API。

因此,如果我们想比较 Python 和 JavaScript,那么就应该讨论使用这两种语言来构建软件的核心组件。

1.Python和JavaScript 的快速介绍

在深入探讨细节之前,首先我们来简单地回顾一下 Python 和 JavaScript 的发展经历,以及它们当前在编程世界中的独特地位。

Python发展成为最大的编程语言之一的经过

Python 问世于 1991 年,这是一种通用编程语言,因此可用于解决任何可以用代码量化和描述的问题。

近年来,Python 在科技市场的受欢迎程度大幅上升。在Django 等 Web 开发框架的推波助澜下,Python 声名大噪,此外Python在学术圈也非常流行。之后,Python 又成为了机器学习和数据处理的首选语言,这进一步增加了 Python 的人气。

CSDN付费下载自视觉中国

Python 借助 Django 等 Web 开发框架在网络开发中人气大增,虽然还比不上 JavaScript。在 2020 年的 StackOverflow 开发者调查中,JavaScript 以 67.7% 的使用率位居榜首,而 Python 的使用率为 44.1%。在框架方面,JavaScript 的库和框架 jQuery、React 和 Angular 占据前三位。Django 排在第 10 位。

如今,许多科学家和研究人员都在使用 Python,这些人精通复杂的科学知识,但技术力不是特别强,对他们来说,Python 是一种简单易学的语言。科学家们可以利用 Python 快速制作原型,因此这种语言更具吸引力。

这一切都是因为 Python 是最简单的语言之一,但这种语言入门容易,想要精通却很难。即使你不是程序员,也可以利用 Python 实现简单的自动化,比如抓取网站的数据,或者将数据从一个程序迁移到另一个程序。

此外,如果花费一番心思真正掌握 Python,就可以利用它来构建各种各样的软件。

JavaScript 成为通用编程语言的漫漫长路

JavaScript 于 1995 年首次问世。当时还没有 Web 应用,JavaScript 的目标是让 Web 成为一个真正的应用程序平台。

JavaScript 的发展并非一帆风顺。由于一些设计选择,以及糟糕的营销,JavaScript 被许多开发人员厌弃,而且由于低网速和低带宽的限制,JavaScript的能力也非常有限。另外,很长一段时间以来,跨浏览器的兼容性一直存在问题,这使得开发人员很难构建可以在所有浏览器上运行的网站。

CSDN付费下载自东方IC

多年来,JavaScript 的受欢迎程度一直在稳定增长。于 2006 年发布的 jQuery 是第一个消除跨浏览器兼容性问题的库。在 jQuery 的支持下,网站交互性的实现变得更加容易。后来又出现了一个主流框架 AngularJS,但它后来被 Angular 2+ 取代,如今该框架在企业级解决方案中仍然非常流行。

2011 年~2012 年左右,JavaScript 首次获得了所有主流浏览器的支持,包括Firefox、Chrome、Opera 和 Safari。但即使到现在,JavaScript 仍然未能获得 100% 的支持。这是因为 JavaScript 会定期添加新功能,因此浏览器开发人员必须不断努力改进对 JS 的支持。

2013 年,Facebook 工程团队发布了 React,该框架迅速流行起来,并为巩固 JavaScript 作为最受欢迎的网络技术贡献了重要力量。

当然,上述只是 JavaScript 发展历史的概要,实际上整个发展过程更加漫长,更加复杂。总的来说,JavaScript 经历了重重磨难,才有了如今的地位。

目前,新版 JavaScript 的设计正在朝着成熟通用编程语言的方向迈进。

2.何时使用 Python 和 JavaScript 来构建核心组件

如果核心组件或系统发生故障的时间过长,整个项目就会面临崩溃。因此,我们需要慎重地选择这部分的构建技术。

对于优先级较低的系统,你可以尝试不同的方法,找到最节省成本的方法。然而,在为构建核心组件选择编程语言时,也采用这种态度就会导致项目走向失败。

假设有一款主要用于共享照片和视频应用程序,在全球拥有超过 10 亿用户,那么处理海量内容的服务器就是该应用程序的核心组件。对于这类应用,我第一个想到的就是Instagram,这款应用号称“世界上最大的 Python 网站”。

Instagram 的一位工程师曾表示,“Instagram 的服务器完全由 Python 驱动。”Instagram 服务器的应用程序就是“一个庞大的、包含数百万行代码以及数千个 Django 端点的大型代码库”。Instagram 的每张照片、每个视频都是通过最流行的 Python Web 框架 Django 编写的。

为什么 Instagram 会选用 Python 来编写核心服务器?

Instagram 使用了大量 Facebook 数据中心的服务器。工程师不仅需要管理应用程序的外观、消息流、内容推荐算法,还需要确保服务器的 CPU 不会过热。

这是一项极其艰巨的任务。他们为什么会选择 Python 作为主要语言?

Instagram 的开发者博客公布了答案:“我们最初选择使用 Python,是因为该语言简单且实用,这与我们的理念非常吻合,即从简单的事情入手’。但简单也有一个缺点:效率低。”

简单且实用。Martin Fowler 是一位软件开发大师,拥有数十年的从业经历,还出版了多本书籍,他曾经写道:“任何傻瓜都可以编写计算机可以理解的代码。但只有优秀的程序员可以编写人类可以理解的代码。”

这意味着,虽然你的目标是确保机器不会因每天为数十亿用户提供服务而过热,但实现这一点的方式并不是学习怎样更好地编写机器代码。你必须编写方便其他开发人员理解的代码,这样他们就可以在必要时快速调试代码,或在现有代码之上构建新功能,同时还不会担心破坏现有系统。

Python 非常适合这类应用,因为该语言方便阅读、简洁且易于理解。

Instagram 使用 JavaScript 吗?

虽然 Instagram 的服务器选用了 Python,但界面部分却并非由 Python 负责。Python 负责存储和管理所有数据,但智能手机上的界面是使用原生编程语言构建的,而且还有很大一部分来自 JavaScript。

Instagram 的移动界面是使用 Swift(iOS)和 Java(Android)构建的,但流行的移动前端 JavaScript 框架 React Native 也发挥了重要作用。Instagram 工程师之所以选择该框架,是因为他们希望提高开发速度,这样就能够尽快为应用程序的 iOS 和 Android 版本添加新功能。

React Native 是不二之选,因为工程师只需编写一套代码就可以在不同的系统上发布新功能。他们可以使用 JavaScript 代码在两个系统上创建原生界面。

本来他们可以使用另一种方法,例如利用 Swift 和 Java 构建单独的界面,但他们选择了 React Native。在 React Native 的支持下,维护界面的工作不仅可以节省成本和开发时间,而且也可以减轻开发人员的负担。

3.Python 与 JavaScript:哪种语言的使用更多?

Instagram 代表了当前网络和移动行业的基准。许多流行的应用都采用了与之类似的结构:后端采用 Python,前端采用 JavaScript。

即使是与 Instagram 完全不同的 PayPal,也有类似的技术栈。他们曾在一个非常简单的声明中称使用了 Python 来管理数据,而且还使用 JavaScript 来创建用户界面。

这份声明被极度简单化了,因为了解一下他们所使用编程语言和工具的细节,就会被复杂性所淹没。另外,他们不像 Instagram 那样热衷于与全世界分享技术栈的细节。

还有一篇博文解释说,PayPal 的中间层基础设施(Web服务器和前端)采用了Node.js,因此这样他们就可以只使用 JavaScript 来构建网站了。

但这也不是核心组件。PayPal 的的核心组件隐藏在所有这些界面之下,其中很多是采用 Python(很可能还有其他几种语言)编写的,而且安全性、稳定性和数据管理也是由 Python 负责的。

JavaScript 不适合核心系统的构建。最初,这门语言的设计目标是为网站添加交互性,虽然如今已经发展成为一个强大的工具,但依然受到设计的限制。

另一方面,Python 的设计目标是通用编程语言,因此它的用途远远超出了 Web 开发。如今,Python 还植根于学术界。我们不仅可以利用 Python 构建网站,而且还可以利用这门编程语言来构建人工智能的神经网络。

因此,总的来说,Python 的使用比 JavaScript 更广泛。但是,在几个领域内JavaScript 是不二之选,选择 Python 就不太明智了。

 

 


   

上一篇:为什么学习Python?
下一篇:Python与JavaScript做比较公平吗?(下)