ttp://www.newsmth.net/nForum/#!article/Python/125347?p=4

标  题: JavaScript真的要一统江湖了 
发信站: 水木社区 (Fri Sep 25 16:13:31 2015), 转信 
  
我out了,刚看到ECMAScript6标准的新特性。 
  
感觉ES6出来以后,JavaScript才真的算是一门合格的语言了。 
  
之前通过函数对象和原型实现的一系列类的属性操作以及继承多态等总是不适应,特别 
是对于C++/Java出身的人来说。这下好了,ES6带来了类(class)关键词,一样的构造,一 
样的操作。 
还有很好用的 生成函数(在Python, C#这样的语言中广泛使用),处理函数内部状态保 
存以及恢复的操作,不用再对this迷惑不解了。还有配合Promise更方便的处理异步编 
程。 
跟C#, Java8类似的lambda表达式,感觉比Python的lambda关键词还是要易读一些。 
跟python一样, 支持列表的拆包操作。 
还有跟python很像的import模块导入机制。支持对模块的重命名,支持全部导入。 
还有很多改动,不过改得越来越好了。 
  
语言层面说完了,下面说说应用层面: 
前端不用说,已经是事实上的标准了。  
后端有node.js,相当强大,几乎无所不包。npm中建站数不胜数的子模块比django为代 
表的模块的还要多得多,整个小网站跟玩似的,特别是mongo+koa+angularjs+node,看 
了一下傻眼了。 
桌面有nw.js,自带跨平台。异常强大,速度已经不是问题了,大家可以体验一下那些 
node-webkit写的程序,比如atom,除了内存占用稍大,速度已经很快了。 
移动端目前稍显劣势,但是也有PhoneGap这样的工具,一样也做出了不错的程序。 
  
之前由于对JavaScript有些抵触心理,但是ES6一搞,语言已经不是障碍了。

你可以先了解一下JavaScript语言,大致翻翻JavaScript: the Good Parts, 中文名叫 JavaScript 
精粹,很小的一本书,很快就能看完,了解ES6,可以看看http://es6-features.org, 以及 
https://github.com/lukehoban/es6features/blob/master/README.md

确实,ES6是今年才出来的,所以主流的浏览器都还不能完全支持,但是chrome, firefox以 
及edge等一干浏览器已经支持大部分特性了,edge基本全支持了,chrome,firefox更新的速 
度也还是很快的。看这个地方可以看到主流浏览器的支持特性比较 
http://kangax.github.io/compat-table/es6/

不要这么纠结于多线程,多线程其实问题比较多,Java是实现了多线程是吧,但是数据的 
同步操作折腾起来还是比较麻烦的。协程+多进程才是王道,Node实现的单线程但是异步io 
的效率其实很高,在很多benchmark上都跑出了不错的成绩,比PHP, Java等一干语言写的 
还要好。需要数据共享,通过procbuf, MessageQueue实现多进程间通讯也不是难事,并且 
效率不低。

benchmark上nodejs不太可能比java强吧。除非java的实现很矬。nodejs也没啥,nonblocking io,每个语言都有。要论coroutine,python和go都实践很久了,不知道你为啥看到js也实现就激动成这样子。 
  
nodejs的框架我看大多数还是跳来跳去的回调。用多了真的会吐的。 
  
给我连接一下pgsql读取hstore数据列能行吗?调用一个阻塞了线程的处理图片的c语言模块能行吗?这个没有那个没有,别光看语法终于像python了就追新啊。 
  
js拿来做桌面程序就别说了。 
  
在我看来,JS无非是不像以前那么矬了。反正如果是我的话,我还会再等等社区成熟个三四年再说。最好能一个杀手级的强大特性才能吸引我。

你说的是Python等语言的过去,我说的是JavaScript的未来。 
Python3比起Python2,我没看到太多的进步;但是JavaScript真是日新月异,这就是差 
别。 
如果你要做网站你就明白了,前后端一体通吃,一门语言就搞定了,并且那么简单直 
接, 其实Python做后台语言也很好,但是效率比起node还是差了很多,变态级优化的V8 
引擎真得很吓人,django的生态圈也不如node,你可以看看npm里面的模块,拿来就可 
用,比django多得多。 
其实Python服务器端,有django这样的生态圈;Python桌面端GUI,甚至是移动端也有 
Kivy这样的神器。但是开发网络应用程序你还是避免不了要用JavaScript,此前语言层面 
上挥之不去的阴影,突然变得那么熟悉,你能明白我在说什么吗?

一看新feature就激动不已的, 
八成是个没被坑过的新手。 
  
你需要相信一点,人与人之间没太多不同。你想到的别人也想到,你能做的别人也能 
做。尤其是一个群体,一个组织之间,能力上的差别会更小。所以区别只是大家的取舍 
不同而已。你看到别人说了10个好处,就应该默认还有10个坏处对方没说。 
  
为啥说老人谨慎、稳重,都是这么被坑过来的呀。 
  
另外,一统江湖是人类的内在需求,是天性之一。 
同样的,差异化,也是人的内在需求,也是天性之一。 
所以,别扯什么一个语言一统江湖了,不可能的。

JavaScript真的要一统江湖了的更多相关文章

  1. 标 题: JavaScript真的要一统江湖了

    http://www.newsmth.net/nForum/#!article/Python/125347?p=4 标  题: JavaScript真的要一统江湖了 发信站: 水木社区 (Fri Se ...

  2. VS Code 真的会一统江湖吗?

    关注「开源Linux」,选择"设为星标" 回复「学习」,有我为您特别筛选的学习资料~ 作者 | ROBEN KLEENE / 策划 | 万佳原文链接:https://blog.ro ...

  3. 一统江湖的大前端(1)——PPT制作库impress.js

    <一统江湖的大前端>系列是自己的学习笔记,旨在介绍javascript在非网页开发领域的应用案例和发现各类好玩的js库,不定期更新.如果你对前端的理解还是写写页面绑绑事件,那你真的是有点O ...

  4. 一统江湖的大前端(2)—— Mock.js + Node.js 如何与后端潇洒分手

    <一统江湖的大前端>系列是自己的前端学习笔记,旨在介绍javascript在非网页开发领域的应用案例和发现各类好玩的js库,不定期更新.如果你对前端的理解还是写写页面绑绑事件,那你真的是有 ...

  5. 一统江湖的大前端(3) DOClever——你的postman有点low

    <一统江湖的大前端>系列是自己的前端学习笔记,旨在介绍javascript在非网页开发领域的应用案例和发现各类好玩的js库,不定期更新.如果你对前端的理解还是写写页面绑绑事件,那你真的是有 ...

  6. 一统江湖的大前端(4)shell.js——穿上马甲我照样认识你

    <一统江湖的大前端>系列是自己的前端学习笔记,旨在介绍javascript在非网页开发领域的应用案例和发现各类好玩的js库,不定期更新.如果你对前端的理解还是写写页面绑绑事件,那你真的是有 ...

  7. 一统江湖的大前端(5)editorconfig + eslint——你的代码里藏着你的优雅

    <一统江湖的大前端>系列是自己的前端学习笔记,旨在介绍javascript在非网页开发领域的应用案例和发现各类好玩的js库,不定期更新.如果你对前端的理解还是写写页面绑绑事件,那你真的是有 ...

  8. 一统江湖的大前端(6)commander.js + inquirer.js——懒,才是第一生产力

    <一统江湖的大前端>系列是自己的前端学习笔记,旨在介绍javascript在非网页开发领域的应用案例和发现各类好玩的js库,不定期更新.如果你对前端的理解还是写写页面绑绑事件,那你真的是有 ...

  9. 一统江湖的大前端(7)React.js-从开发者到工程师

    目录 一. 前端打怪升级指南 1.1 我应该从哪个框架开始学? 1.2 一次转职 1.3 二次转职 1.4 转职-其他 二. 为什么你应该学习React 2.1 技术栈的延伸 2.2 组件化开发 2. ...

随机推荐

  1. SummerVocation_Leaning--java动态绑定(多态)

    概念: 动态绑定:在执行期间(非编译期间)判断所引用的对象的实际类型,根据实际类型调用其相应的方法.如下例程序中,根据person对象的成员变量pet所引用的不同的实际类型调用相应的方法. 具体实现好 ...

  2. 二、Linux 系统启动过程

    Linux 系统启动过程 linux启动时我们会看到许多启动信息. Linux系统的启动过程并不是大家想象中的那么复杂,其过程可以分为5个阶段: 内核的引导. 运行 init. 系统初始化. 建立终端 ...

  3. jQuery的三种写法

    jQuery的三种写法 jQuery一共有三种写法,写法如下: <script type="text/javascript" src="js/jquery-1.9. ...

  4. A Bug's Life(削弱版食物链)

    Description Background  Professor Hopper is researching the sexual behavior of a rare species of bug ...

  5. python3.7 迭代器和生成器

    #!/usr/bin/env python __author__ = "lrtao2010" #python3.7 迭代器和生成器 #迭代器协议: ''' 1.迭代器协议是指:对象 ...

  6. Understanding on 'Error to Origin (50x)' , 'Internal CDN Error (50x)' and 'External Error (50x)' in Chartron

    Overview This document explains about definition of these values on OUI Chartron. Definition of Erro ...

  7. ogre3D,cegui配置问题

    今天按照网上的教程配置CEGUI, 一直运行不了,不明白原因,而后又出现了错误 LNK1104: 无法打开文件“OgreGUIRenderer_d.lib”,经过反复检查,排除包含目录问题. 不过可能 ...

  8. APK无源码使用Robotium简单总结

    1.使用re-sign.jar对待测包进行重签名,并记录下包名和主Activity名. 2.在Eclipse中点击File-New-Other 选择Android下的Android Test Proj ...

  9. git:多个sshkey配置

    克隆项目: 使用git clone +项目.git地址 例如: 创建SSH Key: ssh-keygen -t rsa -C +邮箱地址 sshkey自定义保存:创建后在第二步(enter file ...

  10. JWT实现token认证

    演变 1.1 有状态服务 在原来的单体系统中,有状态服务,即服务端需要记录每次会话的客户端信息,从而识别客户端身份,根据用户身份进行请求的处理,session+cookie.在如今的大多数分布式系统中 ...