为什么我从 Python 转战到 Node.js
| 2016-05-17 18:51 评论: 12 收藏: 3
老生常谈?这些日子谁不是切换到Node呢?我就是其中之一,下面是我的理由。
Python 2,抑或是Python 3?
Python版本之间缺乏重点和运转是一个巨大的阵痛。是的,我知道很多库正在被转换或已经被转换过了。但是,一个接一个地缺乏重点以及明确的方向使得我对它的信任降到历史最低。我知道这和不想移动的社区有很大的关系,但开发人员对此不买账,尽管是社区驱动项目。
Unicode支持
你有没有试过在Python中使用Unicode?TMD真心太痛苦了。是的,关于这个主题有很多这方面的文档,因此它不应该那么令人费解。Python 3是一个进步。当然我并没有说Node和JavaScript在这方面非常突出,但它们绝对有更佳的选项。
循环导入
循环导入是任何Python程序员的痛苦之源,并且在我看来是这个语言非常破的一个架构选择。我知道在大多数情况下,循环导入是模块设计被破坏的一个标志。但是,如果你是一个有经验的开发人员,那么可能你会将更多的时间花在将Python硬塞到高级模式中。好吧,对此我只想说祝你好运。Node.js允许我导入模块到任何地方。
旁注:显然Go也有这个限制。这太让我伤心了:(
NPM VS PIP
Python有PIP,这真的很棒。不过,我在NPM上经常能发现更多最新的现代化模块。随着NPM上其他共享的内容也出现了废话,因而你得对此提防。我一直认为在PIP上共享烦人,而在NPM上真心易如反掌。我的第一个模块共享只用了总共5分钟。
效率=更多钱!
这是毫无疑问的。当涉及到硬件(如果编写正确的话)的时候,Node比Python更精简。能够真正利用低端硬件并产生可接受结果是一个重要优势。很多优势都可以归结为Node的异步特性。是的,我知道Twisted和类似的库。你有没有在其中实际写过一个异步app?在构建一个产品时,开发速度很重要,但保持低的开销成本也很重要。我们可以运行相同的Node项目在Python所需的一半硬件上。
团队熟悉度
这总是一个值得探讨的话题,但是我更喜欢整个团队都能有一个基本的JavaScript水平。这意味着他们可以查看Node代码,并理解是怎么回事。如果团队里面有前端开发人员,那意味着连接到API端点或处理意见非常容易。这对我而言也意味着在帮助他们时受到的干扰更少。太棒了!
MongoDB和JSON
我们喜爱MongoDB和JSON。Node不假思索地使用它俩。当然,显然这也可以用其他语言来完成,但是它的便捷性有着致命的吸引力,使得我不得不提到它。
它就是JavaScript
如果你像我这样热爱JavaScript,那么这是一个额外的优势。如果你不喜欢JavaScript,那么这个优势可能也不是很大。我认为JavaScript之所以有趣是因为它善于表达。它提供了很多做事的方法,这在应用特定策略来解决关键问题时非常棒。这也滋生了一些愚蠢的辩论,例如“添加分号VS不要分号”。在此郑重声明,我赞同使用分号。
结论
需要说明的是,我依然深爱着Python。它已经陪伴了我好多年,并且我用Python写了好几个产品app(见Postach.io和QuoteRobot),然后经常用于快速服务器脚本。Node.js本来并非我的第一选择,但是我想要一些现代化的东西,并且做一些新颖的Web设计。PHP,Python和Ruby显然不符合要求。我的第一个选择是去学习Go(golang),但是由于时间限制和团队技能集让我与之无缘。初创企业对工作玩命,你懂的!Node折中了这些方面,允许我们立刻上手。
你对于现代语言有什么想法?你更喜欢Python抑或其他?为什么?欢迎分享任何有关于Node方面的“陷阱”。
- [1]来自广东广州的 Firefox 46.0|Ubuntu 用户 发表于 2016-05-17 19:07 的评论:php是最好的语言[2]来自陕西西安的 Chrome 39.0|GNU/Linux 用户 发表于 2016-05-19 17:57 的评论:你好大的胆子,你想引发世界大战吗?
- robin [Chrome 47.0|Mac 10.9] 2016-05-24 16:41 3 赞 回复
- 支持php是最好的语言哈哈
- [1]来自北京的 Chrome 50.0|Windows 7 用户 发表于 2016-05-19 20:29 的评论:js坑多,写起来不是很爽。python比较友好,缺点是2和 3不兼容,动态语言一时爽,代码重构火葬场。不过npm上的包确实相当丰富了,轮子多[2]robin [Chrome 47.0|Mac 10.9] 发表于 2016-05-24 16:39 的评论:我最近也在学习python,很难理解为什么python2\3居然不兼容,为什么,为什么,为什么
- robin [Chrome 47.0|Mac 10.9] 2016-05-24 16:40 2 赞 回复
- 发现从2.7换到3.5的成本太大了。。。
- [1]来自广东惠州的 Chrome 49.0|Windows 7 用户 发表于 2016-05-20 22:49 的评论:作者竟然喜欢循环引用,后面留言的人建议看《重构》去了。
- linux [Chrome 50.0|Mac 10.11] 2016-05-22 08:49 3 赞 回复
- 所以作者后来又回来了。。。
- [1]来自广东广州的 Maxthon 1.0|Arch Linux 用户 发表于 2016-05-18 21:11 的评论:学什么go,nodejs,学scheme,从此世界再无语言。
- linux [Chrome 50.0|Mac 10.11] 2016-05-20 19:06 2 赞 回复
- 纯古典学派~
- 9ishell.com [Chrome 48.0|Windows 10] 2016-05-19 10:07 2 赞 回复
- 只学谷歌官方语言
- korora [Chromium 50.0|Ubuntu 15.10] 2016-05-17 19:47 2 赞 回复
- 这届python不行?