本文目录一览:
如何评价Elm 编程语言
1.和 PureScript(Purs) 对比:都是小众的函数式静态类型语言,主要目标不同,Purs
主要以强类型函数式为目标想成为一个通用语言,Elm 只想在前端领域活跃主要是加加语法糖和类型还有immutable object
的概念。所以导致的 Elm 对于前端更加新手友好,Purs 需要更多的配置;类型系统 Purs 更加复杂。Purs
还以产生可读的JS作为追求,虽然作为前端并不关心这个功能。相对而言,Elm 比 Purs
更加容易学,更轻量但是语言也更弱,如果对函数式玩得比较熟的更可能选Purs。如楼上说的没有大公司支持,很难有大的发展。其实就算是有大公司支持,也不一定有发展,比如之前的
dart 和 coffeeScript。
2.和 coffeeScript 对比:都是从别的语言借鉴一些东西来补充到 JS
里面来扩充 JS。coffee 主要是从ruby 吸取了大量语法糖来扩展JS,如果时间倒退3年的话,很多人都曾经觉得 coffee 就是 JS
的未来的样子。为啥要说这个,过去的 coffee 粉和现在的 Elm 粉的态度差不多,coffee 其实还是有比较成功的产品的,就是Atom,
只是现在这个语言很明显已经逐渐不再是主流了。同样,Elm 如果运气好的话就会是下一个 coffee,运气不好估计就是下一个 Dart.
3.
和 ES 对比:ES 肯定会是绝对的主流,至少 ES 的每个 feature
变化都会有社区讨论,不会出现拍脑袋然后不兼容以前代码的事情。相对于 ES
的好处就是可能减少一些配置,有一些地方有语法糖,但是实际上写起来在工具链上面 ES 肯定是会领先 Elm 几条街。相对于Elm 的两个主要卖点,
immutable object 可以直接依靠 lint 工具检测出来, 类型系统的话主要依靠框架本身,比如 react
其实本身每个component 都已经靠propTypes 来解决一部分问题。唯一优势是写 hello world
更加简单,但是到了复杂的项目,Elm 中的比如 css 相对而言写起来就比较麻烦,工具的支持程度差太多了。
4. 和scalaJS
对比:本质上和 Purs
差不多,唯一有可能的是有的时候后端是scala的时候,那么前后端可以共享类型定义还是比较有趣的。优势还是新手比较友好,像Purs 和 scala
如果没有一个好的中间件的话直接写代码操作Dom 是很烦的,比如scala
可能会写很多的asInstanceOf,(也许是我不太会写)还有就是scala还要用sbt,据说这个东西风评不太好,再折腾maven的话太绕了。
5.
和 clojureScript 对比:虽然都是函数式,但是 clojure 已经很多公司投产了,lisp
语系始终有很多粉,没有类型系统,lisp 的 compiler
一般也不会有什么大的bug,反正就是更实用,并且工具链也还OK,前后端也应该可以共享一些代码。鉴于没怎么写过就不多说了。
6. 和 TypeScript/Flow 对比:这两个追求的是JS的超集,兼容JS代码,对实用性的追求高于别的。和Elm追求玩得开心还是不一样的。
《scala编程中文版》pdf下载在线阅读全文,求百度网盘云资源
《scala编程中文版》百度网盘pdf最新全集下载:
链接:
?pwd=xb3t 提取码:xb3t
简介:Scala编程(第3版)由直接参与Scala开发的一线人员编写,因而对原理的解读和应用的把握更加值得信赖。本书面向具有一定编程经验的开发者,目标是让读者能够全面了解和掌握Scala编程语言的核心特性
编程语言scala有哪些特点
Scala有交互式命令行(REPL), 可以在上面快速的试各种语法和代码。这对学习新特性,或者实验新想法非常有用。(第1章)
一致性: 尽管Scala融合了静态类型系统、面向对象、函数式编程等语言特性,但却很少能看出融合的痕迹。Scala是我见到融合最多语言特性而又不显得杂乱的编程语言之一。
类型安全:Scala创始人是教授,他先带领创建了Java 5编译器,而后觉得Java有太多羁绊而发明了Scala。 Scala编译器和类型系统非常强大,它的目标是尽量把软件错误消灭在编写过程中。 Scala类型系统是图灵完备的,甚至可以在编译期间解决问题。
面向对象: Scala是面向对象的编程语言,所有的变量和方法都封装在对象中,可以把信息封装起来供外部使用。(第2章)
函数式编程:Scala同时又是函数式编程语言,函数可以独立存在,可以定义一个函数作为另一个函数的返回值,也可以接受函数作为函数的参数。这给组合函数带来了很大的便利。如何把面向对象编程形容成搭积木的话,函数式编程就像拼线条,更灵活和更有创意。(第3章)
异步编程: 由于函数式编程提倡变量不可变,使异步编程变得非常容易。同时Scala提供的Future(第5章), 和akka类库(第9-11章),使得异步编程变得非常容易。
基于JVM: Scala会被编译成为jvm bytecode,所以Scala能无缝集成已有的Java类库。你可以非常自然的使用已经存在的非常庞大且稳定的Java类库,比如小巧好用的apache.common.*, 或者Java上的各种工具类库。
因为如此众多特性,用Scala可以优雅地编写简洁的代码,同时又能减少很多低级错误;能快速进行开发,又能保证系统性能、团队协作和长期维护。