[閒聊] 最近寫 clojure 有感

看板PLT (程式語言與理論)作者 (Schelfaniel)時間15年前 (2009/07/06 09:59), 編輯推噓1(102)
留言3則, 2人參與, 最新討論串1/4 (看更多)
其實除了 clojure (JVM 語言、Lisp 系語言) 之外 最近在 2010 版的 Visual Studio 可以看到 微軟把 F# 放至第一線語言上 我覺得,有 微軟 這麼大的廠商支援 F# 的話, F# 可以獲得的資源,應該在函數式語言之中算多的了, 在此之外,很少看到有廠商提供函數式語言如此高的商業支援。 我個人也打算在 VS 2010 出來之後,能使用 F# ( 而非 C# ) 寫幾個小程式來個人娛樂一下,一般商業程式嘛, 其實看看 CodeJob 板就知道了,太多指定語言了, 真不知道客戶端除了能跑出來之外,還要限定語言為何。 不過 F# 是 ML 系的,也就是說,它是靜態語言, 而 clojure 是 Lisp 系的動態語言,兩者之間還是有差的。 其實就我個人的看法來說 對初學者來說是 動態語言較容易 可是到了中級者時 靜態語言反而會比較有優勢 對高級者來說,當然都不成問題, 因此動態語言的學習,是比較沒那麼線性的感覺, 在初段到高段之間有一個很明顯的落差, 而動態語言要真的用到很精,才能在一般商業化市場站立 Lisp 的優點也同樣是它的缺點,語法對程式來說好解讀, 反過來就是人腦難解讀,不過這特點讓它在動態語言之中, 可以非經編譯就達到很快的速度,用得好的話,速度和開發性可以兼顧, 但是歷史證明很多人一看到語法就搖頭的。 Lisp 系家族很多,之前有翻過一篇 Lisp 的系譜,看得琳瑯滿目的, 但是後來的 Common Lisp 可以說是語法還是太舊了, Common Lisp 有以下缺點: 1.很多語法雖然靈活,但是和現代語言來看,太過老舊 像是對 Hashtable 沒有簡便語法,它的 Package 系統雖然強大, 但是要看完一章的 pdf 才會用也太困難了一點。 反過來說它可能對了和過去的 Lisp 相容,提供了一堆很怪的指令, 其實像 car cdr elm 這種我也覺得怪了 :QQ 2.Common Lisp 由於主語言缺乏太多東西,如 Thread Socket 等, 很多東西依賴各家擴充,而我看了每一家的製作之後, 商業版的太貴,免費版的在Windows系統上都不夠好用, 也就是沒有一個覺得是符合需要的。 結果在要放棄 Common Lisp 之時,後來才發現 clojure, clojure 首先它走 JVM,所以很多函式庫的部份不成問題, 除了本身 Java 的限制,像是 Java 太底層還是要呼叫 C 的等等 但是反過來說 clojure 語法現代化很多,和 Java 的結合性也很高, clojure 提供了很多專為 Java 設計的,如 proxy 指令, 就是專為 Java 事件回呼函式用的, clojure 寫出來的程式也可以編譯成 Java 物件。 唯然和 Java 緊密度高,不過 clojure 的函數性上比 common lisp 純很多 common lisp 其實可以算是多元導向的,可以寫成函數性、命令式、物件導向的 但 clojure 只能寫成函數性的,因此在很多寫法方面,必須要先做考量。 最近寫的最大的感觸就是了,因為可能寫習慣物件導向了, 函數性對於資料和處理函式的分離,一下子不太習慣, 尤其是模組化的設計,目前還在調整當中,我目前是設了三個 namespace 但是後來想想,初期還是先用一個 namespace 就好了,以免自找麻煩。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 163.29.29.137

07/06 18:07, , 1F
其實本篇未完,不過要趕工作所以就先寫這樣了。
07/06 18:07, 1F

07/06 18:54, , 2F
Ruby 板 1998 有 clojure 大致的長相。
07/06 18:54, 2F

07/07 00:06, , 3F
有聽說這語言最近蠻紅的~
07/07 00:06, 3F
文章代碼(AID): #1AKLfa0o (PLT)
文章代碼(AID): #1AKLfa0o (PLT)