本文目錄一覽:
如何評價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可以優雅地編寫簡潔的代碼,同時又能減少很多低級錯誤;能快速進行開發,又能保證系統性能、團隊協作和長期維護。
原創文章,作者:WIUIF,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/313735.html