红帽白皮书新鲜出炉!点击获取,让你的云战略更胜一筹! 了解详情
写点什么

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

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

关注

评论 2 条评论

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

【浅谈黑客与学习思路】黑客的种类和行为,初学者应该怎样学习

H

黑客 网络安全 信息安全

毕业10年才懂,会升层思考,工作有多轻松?

阿里技术

技术管理 技术人生 内容合集

优秀工程师必备的一项技能,你解锁了吗?

阿里技术

技术管理 技术人生 内容合集

Python代码阅读(第71篇):检测一个平坦列表中是否有重复元素

Felix

Python List 编程 阅读代码 Python初学者

拍乐云发布“融合语音通话”产品,实现多场景下VoIP和PSTN互通

拍乐云Pano

RTC PSTN VoIP 融合语音通话

如何成为优秀的技术主管?你要做到这三点

阿里技术

技术管理 技术人生 内容合集

在阿里,我如何做好技术项目管理?

阿里技术

技术管理 技术人生 内容合集

面对复杂业务,if-else coder 如何升级?

阿里技术

技术人生 内容合集

CSS之变量(四)悬浮跟踪按钮

Augus

CSS 12月日更

Typora + picGo实现插入图片上传gitee图床

zdd

短视频如何有效去重?vivo 短视频分享去重实践

Zilliz

数据库 Milvus Zilliz

华为超大云数据中心落地贵州,这些硬核技术有利支撑“东数西算”

华为云开发者联盟

服务器 数据中心 华为云 东数西算 云数据中心

揭开神秘面纱,如何组织一次分布式压测

博睿数据

一周信创舆情观察(12.13~12.19)

统小信uos

关于写文章的一点经验

阿里技术

技术管理 技术人生 内容合集

一文带你了解什么是GitOps

华为云开发者联盟

DevOps 运维 测试 软件开发 gitops

Linux云计算有那么难学吗?Linux入门篇。系统常用函数的调用方法大全

学神来啦

MySQL nginx Linux Shell linux云计算

在阿里做了五年技术主管,我有话想说

阿里技术

技术人生 内容合集

OPPO大数据离线任务调度系统OFLOW

安第斯智能云

后端 数据

RPA的定义

金小K

RPA 自动化 自动化平台 自动化运维

如何提高一个研发团队的“代码速度”?

阿里技术

技术管理 技术人生 内容合集

MySQL从入门到入魔之数据库连接池(04)

海拥(haiyong.site)

MySQL 数据库 28天写作 12月日更

为什么大部分人做不了架构师?这2点是关键

阿里技术

技术人生 内容合集

EasyRecovery的高级设置如何使用

淋雨

数据恢复 EasyRecovery

Linux环境变量配置

恒生LIGHT云社区

Linux 运维 环境配置 环境变量

架构实战-模块七-作业

无名

架构实战营 「架构实战营」

在高并发环境下该如何构建应用级缓存

华为云开发者联盟

缓存 高并发 负载 应用级缓存 缓存命中率

自用学习资料,Linux内核之【内存管理】的一些分享

奔着腾讯去

内存泄露 C/C++ Linux内核 内存映射 内存池

7 个建议让 Code Review 高效又高质

阿里技术

技术管理 技术人生 内容合集

互联网时代,谁来保护我们的个人隐私信息?

郑州埃文科技

数据库 App IP 个人信息

为企业创建完美CRM系统策略

低代码小观

企业管理 CRM 客户关系管理 CRM系统 客户关系管理系统

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