上個週末兩天一直在看Elm,這是一門函數式編程語言。所謂函數式編程(Functional Programming,FP),跟面向對象編程(Object Oriented,OO)是同一種類型的概念,是一種編程模式。具體什麼叫函數式編程,它有什麼特徵,有什麼優點,這裏不做具體解釋。只放出一個大膽的預言,就是在將來,尤爲是在Server端,將會是函數式編程的天下。
Anyway,Elm是一門函數式編程語言,它是一門靜態的,強類型的語言,目前主要targeting在Web端,所以它有一個compiler能夠編譯成JS。
目前,編譯成JS的語言已經有很是多了,如CoffeeScript,TypeScript,PureScript等等,甚至不少現有的general purpose語言如今也有了一些工具,用來把它們編譯成JS,如Clojure 有ClojureScript,Scala有Scalajs,Ruby有Opal等等等等。
爲何有這麼多的新語言編譯成JS,又有這麼多工具把其它語言編譯成JS呢?這些說白了其實都是想取代JS,這說明一個問題,那就是JS不夠好,這個跟JVM上面有這麼多語言緣由是相似的。
Elm也是出於一樣的緣由,它想要發明一種全新的Web語言,用於取代JS。那在這麼多語言中,Elm的優點是什麼?
通過這兩天的接觸,我瞭解到它的優點有如下幾個: html
Redux evolves the ideas of Flux, but avoids its complexity by taking cues from Elm.
---- redux.js.org/前端
總之,我以爲這個視頻裏面有一句話總結得很是好,那就是Elm是如今整個JS界的發展趨勢,然而JS還有很長一段路要走。react
那Elm完美的嗎?固然不是,我這兩天接觸下來,發現它仍然處於比較年輕的狀態,雖然官方聲稱它已經production ready,也確實有好一些公司已經用於正式的產品中。然而我相信都不是很容易的事情。目前來講,我以爲有如下幾個問題須要極需改善:webpack
接下來打算在公司的內部小工具上面試用一下,由於Elm文件是能夠跟JS交互的,因此應該不是太大的問題,大不了再用回JS嘛。可是函數式編程做爲將來的發展趨勢,仍是要了解一下的。因此,整體來講,我以爲這是一門很是值得學習的語言。git
若是你對Elm感興趣,歡迎加微信羣,共同交流。
github
(爲避免二維碼失效,請關注公衆號從裏面加入)web