Python 还是 Node.js?你会选择哪种编程语言?

阅读数:7231 2019 年 7 月 10 日

Python 与 Node.js,你究竟会选择哪种编程语言?Python 是业务应用程序、桌面用户界面、教育平台、游戏和科学应用程序的首选语言。Node.js 是开发广告服务、游戏平台或论坛等应用的首选技术。后者擅长处理具有大量同时连接或具有高速和密集 I/O 的应用程序的项目,以及生产力平台(如内容管理系统)、P2P 市场和电子商务平台等应用程序。了解更多详情,请阅读本文。

每个项目都有其规格和要求。当你构建应用程序时,选择正确的技术来编写应用程序是最重要的。在本文中,我们将了解 Python Node.js 的优缺点和用例,以便学习者可以有根据地选择最适合自己的语言。这篇比较 Python 和 Node.JS 的文章最初发布于 Django Stars 博客上。

为什么你的技术堆栈选择很重要?

你可以向你的同行询问关于选择何种技术的建议,或用 Google 搜索答案,或向开发人员询问他们喜欢哪种技术。每个来源会给你不同的意见,但这些选项都不会告诉你哪种技术最适合你的项目。

编程语言和框架旨在实现特定的项目目标,这是你选择的主要标准,不要只看受欢迎程度。例如,某些技术更适合大数据应用(如 Python 和 R),而其他技术更常被用于构建大型桌面应用程序(如 Java 和 C/++/#)。

你应该根据需求与能力来选择技术,例如:

  • 项目类型:业务应用程序、游戏、支付软件
  • 产品类型:动态信使或数据分析平台
  • 应用地理位置:本地、全国或全球
  • 预算:从长远来看,你可以在技术和开发人员的薪资上投资多少金钱来构建、支持你的项目

此列表还可以继续,但在选择用于构建未来产品的技术时,必须考虑该产品的每个功能。通过比较 Python 与 Node.js 在后端开发方面的表现,我将向你展示优秀技术在其优势和应用领域的差异。

Python 的优缺点和用例

Python 虽然是个“老东西“,但是个好东西。此编程语言起源于上世纪 90 年代早期,由于其不断开发的库、优秀的文档和尖端的实现,目前它仍然是最具创新性、灵活性和通用性的技术之一。例如,Python 是数据科学、机器学习和 AI 项目的首选语言。根据 JetBrains 的研究,Python 将在未来五年继续保持这种态势。

Python 还有全球最大的社区之一,该社区始终致力于改进该语言来处理现代编程任务,如下图所示。

来源: Hackerrank 软件开发人员调查

与任何其他技术一样,Python 有其优缺点和特定的应用领域。我已经将 Python 用于许多不同的项目,如监控和支付平台、房地产和安全解决方案、金融科技 (ClearMinds)、旅行(PadiTravel、Diviac),和医疗保健 (Haystack Intelligence) 平台。一次又一次,它都被证明了是一种强大的技术,可以处理客户的所有任务。

1.Python 的优点

Python 具有许多优点,可以帮助从初创公司到大型企业平台的各种项目的开发。以下是一些最突出的优点:

  • 缩短产品上市时间

Python 允许你在有限的时间内开发 MVP 或原型,从而缩短产品上市时间(TTM)。这要归功于 Python 的快速开发方法,它允许你一次维护多个迭代,以及它的 DRY(不要重复)原则,这意味着你可以重用部分代码。

来源: Hackerrank 软件开发人员调查

这些 Python 功能为你的项目提供了很大的灵活性,因为你可以与消费者来回交流、提供解决方案、收集反馈、改进,并将原型扩展为完全成熟的 Web 应用程序

Reddit 用户评论
我在为一家公司的贷款管理部门工作,该部门为大宗采购(如家具、冰箱等)提供资金。我的同事负责管理我们的帐户,我通过数据分析和工作流程自动化为他们以及管理层提供支持。由于我们对生产力十分关注,通常最重要的是交付时间短,在这之前的是“能够节省多少全职员工?”所以我选择了 Python,因为它的灵活性和可以快速编写可用代码的特性。比起使用.NET 、Java 或任何 Windows 脚本实用程序,我可以更快地工作,而且我的工作都不是面向用户的,因此我不需要大量的 GUI 功能。而 Python 非常适合这个利基市场。

  • 语法简单

开发人员非常喜欢 Python 的一个主要原因是它的语法简单,它允许开发人员只用几行代码表达概念,并且更容易解决错误和调试代码。Python 的优势就是代码可读性,它很容易让客户理解,这使得协作更方便。

  • 拥有大量的开发工具和框架

Sublime Text 是一个流行的代码编辑器,支持 Python 开发以及其他编辑功能和语法扩展。强大的 Web 框架简化了流程,使开发人员能够专注于应用程序的逻辑。我们使用 Django,它是一个用于开发各种应用程序(无论简单或复杂)的全栈框架,并且(由于其 DRY 理念)缩短了完成项目所需的时间。

  • 拥有庞大的社区

将 Python 和 Node.js 进行比较,Python 是一种更成熟的开源语言,拥有最大的用户社区之一。它有很多贡献者,从初级到经验丰富的都有。这意味着至少两件事:1. 你很容易找到开发人员;2. 你拥有一个积极的支持社区,人们渴望分享解决方案并改进这门语言。

Reddit 用户评论:
我为 Raspberry Pi 附加组件(通常称为连接在顶部的硬件——HAT)创建了软件库,而且无论好坏,Pi 上的规范语言都是 Python。对于初学者来说,Python 通常被认为是一种相当友好的语言,并且由于整个社区都参与了项目、示例、指南和工具,因此,我没有理由背道而驰。但这并不是说我不喜欢 Python。它很可能是我最不讨厌的编程语言。我刚刚发布了 Python 库来部署字体,用于驱动 LCD、OLED 和 eInk 显示器的示例代码。使用命名空间包和入口点非常有趣,让我解决了字体问题,并且我的方法可以被社区共享使用。

来源: Hackerrank 软件开发人员调查

2.Python 的缺点

Python 非常适合大多数类型的项目,但它确实有一些限制:

  • Python 是单流的

与任何解释语言一样,与编译语言(如 C 或 Swift)相比,Python 的执行速度较慢。对于涉及大量复杂计算的应用程序,或任何将性能、速度作为重要需求的项目(如高频交易),Python 可能不是最佳选择。

  • 移动计算方面的弱点

Python 非常适合开发服务器和桌面平台,但它在移动计算方面被认为很弱。这就是为什么我们很少看到智能手机应用程序是用 Python 编写的。

何时使用 Python

Python 是各种项目的首选语言,无论是小型还是大型、简单还是复杂的项目。它们包括业务应用程序、桌面用户界面、教育平台、游戏和科学应用程序。至于应用领域,Python 主要用于:

  • 数据科学:包括数据分析(Apache Spark)、机器学习(Tensorflow)和数据可视化(Matplotlib): Facebook 的一些系统使用了 Python 的 Pandas 数据分析工具库、面部和语音识别系统、神经网络和深度学习系统
  • Web 开发:Web 开发框架(Django、Flask、CherryPy 和 Bottle)
  • 桌面 GUI:类似 Scribus 和 GIMP 的 2D 图像处理软件;Cinema 4D、Maya 和 Blender 等 3D 动画软件
  • 科学应用:类似 FreeCAD 的 3D 建模软件;类似 Abaqus 的有限元软件
  • 游戏:3D 游戏引擎(PySoy)和现实游戏,如 Civilization-IV 和 Vega Strike
  • 业务应用程序:Reddit 在 2005 年用 Python 重写,Netflix 的引擎也是用 Python 编写的
  • DevOps,系统管理和自动化脚本:用于自动执行简单任务的小型应用程序
  • 解析器、scraper 和爬虫:解析器——用于编译不同网站预测的数据并显示结果
  • 软件测试(包括自动化测试):类似 Pytest 的单元测试工具,或者类似 PAMIE 和 Selenium 的网络测试工具

来源: Hackerrank 软件开发人员调查

Python 是一种简单但功能强大的多功能编程语言,具有高级文档和高级开发框架。它是大数据应用程序的首选语言,也适用于业务解决方案、教育平台、科学和医疗保健应用程序。

Node.js 的优缺点和用例

Node.js 是一个环境,它允许 JavaScript 被用于后端和前端开发以及解决各种兼容性问题。它也可以定义为服务器端脚本语言。Node.js 于 2009 年推出,不久前开始逐渐普及。

来源: Hackerrank 软件开发人员调查

1.Node.js 的优点

在比较 Python 与 Node.js 用于 Web 开发的表现时,Node 有一些可以夸耀的优点:

  • 快速

比较 Node.js 和 Python 的速度,你会发现前者更快。Node.js 基于 Google V8 引擎,这使其适用于开发聊天机器人和类似的实时应用程序。

Reddit 用户评论:
我经营着一家小企业并负责所有的技术工作,包括脚本、服务、内部网络应用程序、api 抓取、数据库管理等。我喜欢使用 Node 进行快速开发。如果我们要扩展任何东西,我可能会采用更成熟和更稳定的技术,但 MEAN 堆栈目前对我们来说是完美的。同样,我也喜欢 Javascript 这种语言。

  • 支持全栈开发

你只需要一个了解 JavaScript 的开发团队,他们便可以完成整个应用程序的前端和后端。这是降低成本的一种方法,因为你很容易找到 JavaScript 开发人员,并且你不需要那么多的开发人员。

  • 非常适合开发实时应用程序

其事件驱动架构允许你开发聊天应用程序和 Web 游戏。

2.Node.js 的缺点

  • Node.js 需要清晰的架构

Node.js 是一个事件驱动的环境,因此它可以一次运行多个事件,但前提是这些事件之间的关系写得很好。

  • 无法维持 CPU 密集型任务

繁重的计算请求将阻止所有其他任务的处理,并减慢使用 Node 编写的应用程序。因此,它不适合基于数据科学的项目。

  • 不够发达的文档

与具有全面和最新文档的 Python 不同,Node.js 文档滞后。此外,Node.js 没有核心库和工具,选择太多,所以用户总是不清楚应该选择哪一个。

何时使用 Node.js

Node.js 是开发广告服务、游戏平台或论坛等应用的首选技术。它擅长处理具有大量同时连接或具有高速和密集 I/O 的应用程序的项目,以及生产力平台(如内容管理系统)、P2P 市场和电子商务平台等应用程序。Node 可用于不同类型的 Web 应用程序,例如:

  • 社交和生产力平台:LinkedIn、Trello
  • 商业应用:eBay、沃尔玛
  • 支付系统:PayPal
  • 娱乐平台:Netflix

看看 Python 与 Node.js 的性能和用例,我们可以看到它们都能满足不同的需求。Node.js 用于通常不应用 Python 的解决方案,如需要更快速的实时应用程序,或者你希望同一团队同时在前端和后端开发中工作的情况。

结论

正如你所看到的,Python 与 Node.js 各有其优缺点,它们用于不同类型的项目。因此,当你在 Node.js 或 Python 之间进行选择时,你需要查看所有优缺点,以确定哪一个最适合你的项目应用程序。

我使用 Python 已经很长一段时间了,多年来,我用它构建各种东西:从高质量的中型 Web 应用程序到复杂的企业级解决方案等。每个项目都让我深信(现在仍然如此)Python 有助于简化开发、减少时间和成本,并使我能够快速、轻松地扩展项目。

原文链接
Python vs Node.Js: Which Programming Language to Choose?

收藏

评论

微博

发表评论

注册/登录 InfoQ 发表评论

最新评论

Geek_wentao 2019 年 07 月 15 日 11:20 0 回复
毫无营养的文章
Kei 2019 年 07 月 10 日 20:02 1 回复
这种半吊子文章就没有必要译了吧,浪费译者时间,仅仅是为了python吗?原文评论看看我就放心了。😄
没有更多了