NVIDIA 初创加速计划,免费加速您的创业启动 了解详情
写点什么

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:4415650
用户头像

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

关注

评论 2 条评论

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

你都工作两年半了,还不会RabbitMQ?

做梦都在改BUG

Java RabbitMQ 消息队列 消息中间件

java编程培训学习好吗

小谷哥

2022评分最高十大信创解决方案出炉!

饿鱼

除 svn、Testlink 外,还有哪些不错的测试用例管理工具?

PingCode

项目管理 管理工具 测试用例管理平台

老马闲评数字化【1】数字化转型,不转得死,转了也未必活?

行云创新

云原生 数字化转型 企业数字化

移动开发平台真的能提升App开发效率吗?

Onegun

移动应用开发 移动端开发

Github霸榜!竟是阿里技术官的微服务分布式项目实战笔记总结

程序知音

Java 分布式 微服务 java架构 后端技术

2023年重庆市等保测评机构名单汇总

行云管家

等保 等保测评 等保2.0

通过应用场景深度理解监控宝在业务中的实践价值

云智慧AIOps社区

监控 监控系统 监控宝 云智慧 监控软件

大数据程序员培训好还是自学好?

小谷哥

武汉前端线下培训的就业前景怎么样

小谷哥

iMazing2023免费版iOS设备管理软件

茶色酒

iOS设备管理软件

行云洞见|为什么说云端IDE代表未来趋势?

行云创新

程序员 云原生 CloudIDE 集成开发环境 云端IDE

软件测试/测试开发 | app自动化测试(Android)--元素定位方式与隐式等待

测试人

软件测试 自动化测试 测试开发 appium

尚硅谷Spring6发布视频教程

小谷哥

运维实践 | OpenMLDB 跨机房容灾方案

第四范式开发者社区

人工智能 机器学习 数据库 开源 特征

阿里国际站用户增长技术探索与实践

阿里技术

全球化 用户增长 跨境贸易

数字化转型的本质:一把手工程

MavenTalker

数字化转型 数字化管理 一把手工程

2022年中国跨境支付行业年度专题分析

易观分析

金融 跨境支付 市场

HA能否用于备份数据库或审计日志?

行云管家

高可用 ha 高可用软件

大数据培训学习软件工程师机构靠谱吗

小谷哥

企业号 2 月 PK 榜,火热开启!

InfoQ写作社区官方

热门活动 企业号

老马闲评数字化【2】您的企业是否应该急于数字化转型?

行云创新

云原生 数字化转型 企业数字化 老马闲评数字化 行云创新

带你熟悉3种AQS的线程并发工具的用法

华为云开发者联盟

后端 开发 华为云 企业号 1 月 PK 榜 华为云开发者联盟

阿里内部Spring Cloud Alibaba全彩手册来袭,手把手教你掌握阿里巴巴微服务架构核心技术

架构师之道

Java 编程 微服务 架构师

Python从零到壹丨图像增强及运算:图像掩膜直方图和HS直方图

华为云开发者联盟

Python 人工智能 华为云 企业号 1 月 PK 榜

由浅入深,聊聊 LeackCanary 的那些事

Petterp

android 内存泄漏 LeakCanary

软件测试/测试开发 | app自动化测试(Android)--App 控件定位

测试人

软件测试 自动化测试 测试开发 appium

如何通过Java代码向Word文档添加文档属性

在下毛毛雨

Java word文档 属性 文档属性

老马闲评数字化【3】业务说了算还是技术说了算?

行云创新

云原生 数字化转型 企业数字化 老马闲评数字化 行云创新

Domino的数据迁移方案

饿鱼

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