如何看待JavaScript成为TIOBE评选的2014年度语言?

TIOBE Software: The Coding Standards Company After all these years, JavaScript has finally become TIOBE's language of the year. It was a close finish. Swift and R appeared to be the main candidates for the title but due to a deep fall of Objective-C this month, a lot of other languages took advantage of this and surpassed these two candidates at the last moment.JavaScript has won the award b…
关注者
532
被浏览
38101

15 个回答

UPDATE 我关陌生人评论了,懒得理会无脑喷,想 argue 的先上干货自己回答去。

UPDATE2 @胡天硕 你说我我给出了一堆理由,为什么js不应该是年度语言。我倒是很想知道我那一句说了 js 不应该是年度语言。

另外你说我漏洞百出,来嘛来个漏洞嘛,我不要求一百个,1个行不行?真心求打脸。而且我不知道 jvm 优化最牛的是v8之父和v8优化最牛有啥关联,你以为 jvm 就一个优化最牛的人搞定的?优化能他妈比出个最牛嘛?JVM 是几十年的积累,V8一个出身就是面对客户端的东西来和 jvm 比,不知恬耻4字真不为过。
----------------------------------------------------------正文---------------------------------------------------

打脸的来了,先说TIOBE年度语言这事,无他,活跃度高,使用者增量多罢了。TIBOE的原文是
JavaScript has won the award because it appeared to be the biggest mover of 2014. JavaScript won 1.70% in one year time,
that's all。试想一下,去年有100个刚入挨踢行的年轻人,要做一个业务的时候,一边是选择历史积累足够多繁杂的C,一边是积累和选择没那么多初入门槛较低的JS,他们会选啥?
另外 TIBOE 也说道
It is always tempting to try to forecast what will change in 2015. Objective-C will probably lose its dominant position in mobile app development, whereas Java and Swift will gain traction in that field. Java might even become number one of the TIOBE index again. Other trends in progamming are modelling and big data. Here, MATLAB and R appear to be the market leaders. There is a realistic chance that they will enter the top 10 in 2015.
未来对于数据分析的需求可以预见增大,所以 R 和 MATLAB 会出头。至于 mobile app 的开发则会进入到有选择的时代(ObjC-> Java/Swift)。看到没,评比的关键仅仅是新增人头数唉。这有啥好优越感的。

当然去年一年里面 js 的发展是值得肯定的,比如浑浑噩噩的 java 高下立断,社区也拿出了很多高质量的产出。 但ObjC 靠着 Apple 的关系不也拿过,so what?你可以在你服务端用 ObjC 构建健壮可持续可扩展的程序么?说白了现代挨踢工程无外乎选个工具解决问题罢了,至于这个工具是 js 还是 python,是 ruby 还是 java,真没多大关系,合适的工具解决合适的问题罢了。但是,一定要上纲上线秀优越感那我就不得不出来打脸了。

一个个来

1、真正实现了Code Once, Run Anywhere
对于这个,写过代码的都知道,我就不多说了,naive
2、HTML5在主流浏览器的普及,消除了插件的存在必要性,逐步接近原生的体验
感觉不要太好,用服务端渲染再通过 websocket 传输出来的幺蛾子也能算 Js 的功劳也是醉了,我自己写个 socket 传数据到客户端不也一样。 HTML5 的优势又不是这个,websocket 什么的增强界面交互性,嵌入 webkit 和原生应用互补绕开某些原生 api 做到想要的体验才是其发扬光大的地方。但你硬要说和原生体验差不多,我只能说是贵厂请不起原生应用开发者了吧。
3、在浏览器的良性竞争中,JS性能得到巨幅提升
我不知道哪里良性了,Google 家都要成自己的新时代 IE 了好嘛。而且这个巨幅提升真是……完全吐槽无力,都超过 C 语言的速度了哦。我觉得大概用个 pypy 就能打脸打得啪啪啪了吧。
4、服务端js,数据库js,桌面端js和嵌入式js

node.js从诞生的第一天可以说就在性能上秒杀了大部分其他的服务端语言(支持同时可以访问的人数翻好几倍,响应时间大幅减少),例如php,python和ruby。这是因为异步的IO操作让服务器不用通过轮询等待,就可以立即处理下一个请求。在node.js推出之前就有一个叫做nginx的静态服务器就是通过这种方式秒杀了传统的apache服务器的。再加上超快的V8引擎,其他语言就只有望尘莫及了。虽然php,python,ruby,java也相继推出了支持异步IO的库(例如tornado,java.nio),但是由于语言并不是按照异步回调的方式来设计的,所以采用起来很困难,并没有普及起来。同时其他动态语言也缺乏像V8/Spidermonkey,这样顶级公司的顶级程序员优化的解释器/JIT编译器。
1. 秒杀这种词不要乱用,带 JIT 的跟不带 JIT 的脚本比,pypy 不要打脸太狠。
2. 同时访问人数翻好几倍,亲你知道 linux 是怎么处理 socket 的么,这和你 js 有毛关系, C10K 是什么时候提出的?
3. python twisted 笑而不语,node 估计连孙子辈都算不上。还扯事件循环呢,gevent 分分钟教做人。
4. tornado 是相继推出的? 只怪 FriendFeed 死太早,让没有一个纯 node 驱动的大型 site 的语言优越感爆棚。
5. 超快的 V8 引擎哦,望尘莫及哦,JIT 黑魔法你真见过?复制 attr 做快速属性查找这事空间换时间谁不会?回头好好看看实现好吗?同样带 jit 的 pypy 你真确定你比得过,跟 gevent 比比呢? 我都不想用 go/rust 来打脸。
6. 缺乏 V8 和 Spidermonkey 哦,jvm 大魔王几十年的优化都不屑于斜眼看着这2货好吗?
7. 留言中还说这些 php/python/ruby/java 的异步IO库基本没人用,我已经完全吐槽无力了。Callback hell 也能秀出优越感,coroutine 懂不懂?同步方式写异步懂不懂?嘴炮能打成这样,真是无知者无畏。
8. 恩,一个没有 yield 的语言来谈异步,future 是那个 ECMAScript 的版本实现的麻烦出门右拐去看看。

数据库内嵌个 js 都大书特书,lua 表示很无辜。嵌入式 js 不了解,我就说一点,花得起钱请高级嵌入式工程师的,你问他在不在乎是 js 还是 c+asm,而且哪个嵌入式不是回调的。强行秀优越感真是……
5、Emscripten,llvm,和asm.js的出现让其他语言的代码直接可以编译到js中,并接近原生的性能
这跟 js 有毛关系,llvm 的功劳全给 js 去了也真是醉了,都不想多说。回家出门左拐买本龙书好好看看,什么是语法树,什么是编译中间语言,这种编译原理都没搞清楚的外行话就别扯了。按照这说法,我一样能翻译 python/java/ruby/go 到机器码得到近似于原生的性能。
6、Angularjs,backbone,ember,react等MVC框架在消除BS(Browser-Server)结构和CS(Client-Server)结构之间的差距
唯一我认为 js 带来改变的地方,让前端工程化了,剥离了前后端需要解决的问题,使得现代挨踢工程中前后端可以更加 focus 在自己所需要解决的问题上。但是 BaaS 这种东西只能用来解决比较简单的业务逻辑,或者说是大体上一致的业务类型,真遇到复杂的业务还是得服务端上。

但是从观念上来说,靠着“壳"+“逻辑代码”实现的应用,体验上还是离原生的略远。DirectX 看到这种论断估计会笑岔气。
7. 熟悉的语法,强大的FP,方便的IDE, 调试工具和学习网站(新补充)
有人说不要扯 yield,那我问你,JS有延迟计算嘛,函数是第一类对象就能叫 FP 了?再说了不扯 FP,贵 JS 的 OO 语言特性都还没稳定吧。至于 IDE 和调试工具我估计你是没用过 VS,这差距就是真是走路和高铁了吧。至于熟悉的语法,呵呵,程序员靠语法吃饭?

“语言只是工具” 其实还有另外一句话,“不懂就别瞎扯蛋”。这种问题都能秀出优越感,贵厂这广告真是负分不能更多。我甚至怀疑是什么样的人在做贵厂的技术了,眼光能狭隘成这样。
对于这种编程语言排名的正确态度是:不要在意这些细节
为什么?