Node.js 与 Python 作为后端服务的编程语言各有什么优劣
Node.js相优于Python的地方:
快:这个快有两方面,第一是V8引擎快,第二是异步执行,Node.js
功能上是一个基于V8引擎的异步网络和IOLibrary,和Python的Twisted很像,不同的是Node.js的event
loop是很底层的深入在语言中的,可以想象成整个文件在执行的时候就在一个很大的eventloop里;
npm:npm可以说是用起来最顺手的packagemanagement了,npm作为Node.js的官方packagemanagement,汇集了整个社区最集中的资源;不像Python经历过easy_Install和pip,还有2to3的问题;
Windows支持:Node.js有微软的加持,Windows基本被视为一等公民来支持,libuv已经可以很好的做到统一跨平台的API;而Python虽然也对Windows有官方的支持,但是总感觉是二等公民,时不时出些问题。
Python优于Node.js的地方:
言:就单纯从语言的角度来说,Python写起来要比Javascript舒服很多;Javascript
设计本身有许多缺陷,毕竟当时设计的时候只是作为在浏览器中做一些简单任务的script,所以代码一旦庞大,维护还是有困难(不过Node.js的
module很大的改善了这个问题),不过用Coffeescript可以很大的改善Javascript,几乎可以和Python等同;
熟:成熟包括语言本身已经成熟,还有Framework和ecosystem也很庞大。Node.js的绝大多数framework都很新,有的API一
直在变,有的感觉已经不在维护,总之没有一个像Django那种百足之虫感觉的framework。Python的主流ORM
SQLalchemy也很成熟。
Python和Node.js很难分高下的地方:
步Style:Node.js的异步Style是CPS,也就是层层callback,基于event,和浏览器中的Javascript很像。CPS好
处是让熟悉浏览器Javascript的人能很快上手,学习难度也不大。缺点是逻辑一复杂,就变得很难维护,基本上需要通过async.js这种
library,或者用promise。Python的异步除了和Node.js很像的Twisted之外,也有基于coroutine的
gevent,coroutine让异步代码维护起来更容易,不过学习曲线陡;
应用场景:如果是一个CRUD的app,
那么想都不想直接是Python,Node.js本身不擅长CRUD的app(绝大多数Node.js都是直接裸在外面的,而不是有一个Nginx在前
面,否则websocket就不能用了,不过新版nginx开始支持websocket),代码又不好维护,而Python的WSGI很适合,成熟的
stack也有很多。如果更偏向于real-time,比如一个chatroom,那么Node.js实现更容易。这两个应用场景还是有差别的。
本回答由提问者推荐
C、Java、Pascal这三种编程语言的优缺点
c是面向过程的,c++和java是面向对象的,java应用领域很广,c++是c的后继,c++比较适合做大型项目软件。
C比较贴近硬件,对内存可以直接控制,可以编写接近底层的程序。但是,C有个明显的不足,就是处理的问题数据结构复杂时,容易出错。C++地面向对象技术可以解决这个不足,但用这种技术会带来程序执行效率的降低。
pascal语法比较简单,比较容易学,但是网上资料比较少。
你可以查一下编程语言排行榜
不过个人觉得c++较强大
那请问Objective-C呢?
Objective-C是扩充C的面向对象编程语言,主要用来编写IOS操作系统(如:iphone、ipodtouch、ipad等苹果移动终端设备)应用程序,与C++不同,但和Java相同,Objective-C只容许对象继承一个类别。
2013年1月份的排行榜上:Object-C停留在第三位。随着手机应用程序市场的继续增长占着主导的地位,预计Java(Android)和C++/C#(WindowsPhone)也将会重获民心,而Objective-C也会继续增长。
C语言有哪些优缺点?
1. c语言的缺点主要是表现在数据的封装性上,这一点使得c在数据的安全性上做的有很大缺陷,这也是c和c++的一大区别。 2. c语言的语法限制不太严格,对变量的类型约束不严格,影响程序的安全性,对数组下标越界不作检查等。从应用的角度,c语言比其他高级语言较难掌握。 [c语言指针] 指针就是c语言的一大特色,可以说c语言优于其它高级语言的一个重要原因就是因为它有指针操作可以直接进行靠近硬件的操作,但是c的指针操作也给它带来了很多不安全的因素。c++在这方面做了很好的改进,在保留了指针操作的同时又增强了安全性。java取消了指针操作,提高了安全性。
如何理性的评价各种编程语言的优劣
想要符合理性评价,那么科学的评价是一种理性的评价。
要科学的评价,只需要建立可重复性的验证或者实验手段就可以了。
以下是一种仅供参考的验证或者实验方法的步骤:
1. 选择一个常见的可编程解决的问题
2. 选择候选编程语言可使用的语言措施、库等等范围
3. 邀请足够多的中等或以上水平程序员的程序员,在约定的范围内编写代码解决这个问题
4. 升级这个问题或者扩展这个问题的应用范围
按以上步骤迭代,统计每次迭代时(也就是问题变化时)解决问题的各语言的代码的变化量。