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. python2与python3下的base64模块

    Python2的编解码 python2中程序数据类型默认为ASCII,所以需要先将数据解码(decode)成为Unicode类型,然后再编码(encode)成为想要转换的数据类型(gbk,utf-8, ...

  2. 14.2-ELK 经典用法—企业自定义日志收集切割和mysql模块

    本文收录在Linux运维企业架构实战系列 一.收集切割公司自定义的日志 很多公司的日志并不是和服务默认的日志格式一致,因此,就需要我们来进行切割了. 1.需切割的日志示例 2018-02-24 11: ...

  3. tp3.2读取time()格式遇到的的问题(尚未解决)

    在用tp3.2框架做一个讲座模块.最近又遇到了一个问题 如上图所示,我把日期和讲座开始时间结束时间分来放了.(这里的Jdate2和jdate3本来存放为time(7)类型的,后发现在原来这个7是可以改 ...

  4. HDU 1423 Greatest Common Increasing Subsequence(LCIS)

    Greatest Common Increasing Subsequenc Problem Description This is a problem from ZOJ 2432.To make it ...

  5. Codeforces Round #462 (Div. 2) D. A Determined Cleanup

    D. A Determined Cleanup time limit per test1 second memory limit per test256 megabytes Problem Descr ...

  6. [BZOJ1187]神奇游乐园(插头DP)

    Description 题意给定一个矩阵,每个格子有权值,在[-1000.1000]内,求一条回路使得回路经过权值和最大,每个格子最多经过一次 2≤n≤100,2≤m≤6 Code #include ...

  7. Java最小堆解决TopK问题

    TopK问题是指从大量数据(源数据)中获取最大(或最小)的K个数据. TopK问题是个很常见的问题:例如学校要从全校学生中找到成绩最高的500名学生,再例如某搜索引擎要统计每天的100条搜索次数最多的 ...

  8. Python协程详解(一)

    yield有两个意思,一个是生产,一个是退让,对于Python生成器的yield来说,这两个含义都成立.yield这个关键字,既可以在生成器中产生一个值,传输给调用方,同时也可以从调用方那获取一个值, ...

  9. laravel5.2总结--服务提供者,契约(Contracts)

    首先理解两个概念 1.契约:一组定义了框架核心服务的接口 2.服务提供者:所有 Laravel 应用程序启动的中心所在. 包括你自己的应用程序,以及所有的 Laravel 核心服务,都是通过服务提供者 ...

  10. Python框架之Django学习笔记(十)

    又是一周周末,如约学习Django框架.在上一次,介绍了MVC开发模式以及Django自己的MVT开发模式,此次,就从数据处理层Model谈起. 数据库配置 首先,我们需要做些初始配置:我们需要告诉D ...