怎样评价JavaScript这门语言( 二 )


大前端火过很长一段时间。从hybird开始,到weex/rn之类,一些人真的狂得不得了。但实际上无论是hybird还是做jsbridge,都不是为了代替移动端开发的。编译型语言决定了移动端开发不能进行热更新,而解释型脚本语言刚好可以弥补这个缺陷。总不能app发个活动就要拥护更新安装包。所以求求某些人不要吹大前端了……
第一次回答专业知识的问题,才疏学浅,会的语言也不多,编译原理更是一塌糊涂,献丑了……暂时就写到这么多。以后变成大佬了再更新叭

■网友
这怕是一道送命题,不管怎么答都可能会被怼。

接触过C、C++、C#、Java、JavaScript、PHP等语言,后来由于个人爱好选择了JavaScript。
至于生态、性能、语法、前景,让它们通通见鬼去吧。
爱好决定学哪门语言,工作决定用哪门语言。


js不是一门好语言,前端不是一项好工作,IT不是一个好行业。它可能会让你秃头、熬夜、单身,你们要慎入啊。

■网友
很难用,也很难用好。相比于其他语言,JS 算是很难学的,甚至是很难教的,因为 JS 有太多原创的 bug 了,周边工具的坑也是出奇地多。但是 JS 用途广,有「钱」途。市场对 JS 需求很大,认真学习 JS 的人比学 Java 的少多了。因为我是做新人培训的,所以对这方面了解较多,每年新入行前端的人比 Java 少 50% 以上。每年各大中小公司对前端的需求总量却与 Java 旗鼓相当。feature 多而杂,多范式,没有统一的风格。任何一个功能都有多种写法,每个人都能在 JS 里找到自己的 style,这是优点也是缺点:两个 JSer 可能写完全不同风格的代码,然后互相看不对眼。大家 2019 年一定要投资 TypeScript,会有惊喜。
■网友
听这么多好评,很开心呐~

■网友
曾经设计思路很优秀的一个语言
prototype baesd OO,first class function,const,块级作用域的let,lambda表达式的“环境”,基于generator(function*)的协程,基于Proxy的属性,Symbols,都是这个语言很有特点的地方。

对的,prototype based才叫object oriented,class based仅仅是class oriented而已。这点区别还是要搞清楚。

然而这个语言却自作多情得加入了class关键字,这还不算,还要加#这种神奇的东西。脑子有病。

而这个语言使用的大多数运行时(浏览器和Nodejs)就更有特点了。基于异步和回调的并发和非阻塞调用,Promise和async/await语法糖让异步逻辑可以用同步方式给出,基于master-worker的多线程限制了线程间同步可能带来的问题。

而且浏览器端和node端都分别有asm.js/wasm/N-API作为FFI,虽然并没有那么好用(luajit的ffi就好不少……N-API还是太……蛋疼)。

这个语言确实有一些表现力不足的地方,比如到现在为止还是没有运算符重载,比如operator+是算术加法的同时又是字符串连接的设定造成了很多歧义(lua在这一点做得就很好)

还有一点是缺乏(高阶)类型系统…………当然ts是很好。

另外null和undefined这一点,我认为lua的设计比js更好。

另外,对比js和lua的prototype机制,我更喜欢lua,但是就语言本身来说,js的总体感觉上比lua还是要好一些(好吧lua没有const很烦)。
所以有没有人发明一下typelua啊……

■网友
不是特别好,但是也并非特别糟糕;不会 scheme 或者别的 lisp 方言,js 没法用。会了的话你会希望 ! 标注和更加聪明的 以及 quote。

感觉是缺乏 quote 导致实现导致了无法用 lisp 中类似 pattern match 的方法解决动态语言类型不安全。

■网友
面向工作编程,如果哪天前端全部改成另一套语言了,那我也会跟着跳船的。


推荐阅读