有奖征文 | 火山引擎开发者社区联合 InfoQ 写作社区第四届征文大赛来袭! 了解详情
写点什么

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

  • 2019-07-10
  • 本文字数:4134 字

    阅读完需:约 14 分钟

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

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


每个项目都有其规格和要求。当你构建应用程序时,选择正确的技术来编写应用程序是最重要的。在本文中,我们将了解PythonNode.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?


2019-07-10 14:4415562
用户头像

发布了 34 篇内容, 共 18.3 次阅读, 收获喜欢 46 次。

关注

评论 2 条评论

发布
用户头像
毫无营养的文章
2019-07-15 11:20
回复
用户头像
这种半吊子文章就没有必要译了吧,浪费译者时间,仅仅是为了python吗?原文评论看看我就放心了。😄
2019-07-10 20:02
回复
没有更多了
发现更多内容

28天写作挑战——坚持28天,每天500字

TGO鲲鹏会

28天写作 热门活动

深入分析单例设计模式

Andy

自学编程的4大误区,你中招了吗?

田维常

程序员

HTTP 请求流程

double U

大前端 浏览器 HTTP

换个角度,聊聊全链路压测

老张

性能测试 系统稳定性 全链路压测

一周信创舆情观察(2020.12.28~2021.1.3)

统小信uos

比易宝betBEB平台获278万美元约合1807万元融资

DT极客

架构师训练营第十三周

我是谁

架构师训练营第 1 期

可用性、可维护性、可靠性有什么区别?

禅道项目管理

DevOps 可用性 质量保障 可靠性

IoT爆发前夕,企业架构要面对哪些变革?

京东科技开发者

物联网

VoltDB成功入选CNCF Landscape云原生数据库全景图

VoltDB

云原生 cncf VoltDB 分布式内存数据库

探索压测奥妙

ninetyhe

微服务 分布式系统 压力测试 性能调试

腾讯高工亲授“MySQL学习方法”【思维导图+学习笔记+实战文档+面试题库】让你站在数据库领域的顶峰 笑傲江湖!

比伯

Java 编程 架构 面试 计算机

AMD台式CPU市场份额距离英特尔还有多远?刚到四分之一

E科讯

云算力挖矿系统APP开发|云算力挖矿软件开发

系统开发

ROMA Compose:ROMA的新武器

华为云开发者联盟

数据 API ROMA

架构师训练营-第二周作业

Mark

年底了,你的数据库密码安全吗

Simon

MySQL 数据库

软件测试---BUG的生命周期

测试人生路

软件测试

Uniswap去中心化交易所系统开发

W13902449729

去中心化交易所系统开发 uniswap

再见 2020!Apache RocketMQ 发布 4.8.0,DLedger 模式全面提升!

阿里巴巴云原生

阿里云 开发者 云原生 存储 消息中间件

加密数字货币钱包系统软件开发|加密数字货币钱包APP开发

系统开发

如何在 OpenShift 中运行 Collabora Office

东风微鸣

openshift

Java多线程并发控制工具CountDownLatch,实现原理及案例

码农架构

Java 并发编程 后端

零基础也能看得懂!Android面试心得必备技能储备详解,Android面试题及解析

欢喜学安卓

android 程序员 面试 移动开发

算法学习手册

田维常

算法

使用PG_SHOW_PLANS监控PostgreSQL执行计划

PostgreSQLChina

数据库 postgresql 开源

Java多线程并发控制工具信号量Semaphore,实现原理及案例

码农架构

Java Java并发 并发编程 后端

Vue 3 组件开发:搭建基于SpreadJS的表格编辑系统(功能拓展)

葡萄城技术团队

做运维,送你7个常用的服务器资源监控工具

华为云开发者联盟

工具 监控 内存 服务器 系统

Filebeat同步写位点文件引发的磁盘IO问题

秦宝齐

Python还是Node.js?你会选择哪种编程语言?_编程语言_Michael Yarbrough_InfoQ精选文章