Clojure:讓我興奮的程式語言

edithfang發表於2014-05-23

最近我一直有想寫一點關於Clojure的東西的衝動。但不巧的是,還有一個更大的衝動經常出現,就是要用Clojure語言重寫我的這個部落格網站,這也就讓這篇文章的出爐延遲了一段時間。那麼,下面就讓我們開始聊聊Clojure這種程式語言吧!

我真正用到的第一種程式語言是Ruby。目前仍然每天在用Ruby為客戶開發工作,大多是Rails應用。用Ruby大量的開發製作原型——這是一種非常帥的語言,儘管對程式設計的程式設計師需要極大的自律性來避免落入一些常見的陷阱。

我關注Clojure語言很久了,讀了不少關於這種語言的書,看了不少談論這種語言的視訊,但大多時候都是淺嘗輒止。前幾周,我遇到了一次機會,要為一個客戶用Clojure寫一個小的簡單的服務程式,這讓我有了完全不同的體驗。從那以後,我開始感覺用Clojure製作原型和編寫程式變得更自然順手。下面就是我在用這種語言開發過程中獲得的感受和想法,以及為什麼Clojure現在會變成我最喜歡最常用的程式語言。先免責宣告,我既不是一個Clojure語言程式設計高手,也不能保證我說的都是正確的——這些只是我短期的在有限的一些專案中使用這種程式語言的過程中獲得的體驗。

Clojure給人一種經過精心設計過的感覺

從Ruby中出來,這是Clojure最讓我感到震驚的特徵。Clojure語言在釋出前足足經歷了兩年的設計(甚至沒有任何程式碼產生,完全在稿紙上)。你可以在第一次接觸它的過程中就能感受到這些。

在使用一種程式語言的時候,我通常會遇到一些情況——無法理解為什麼寫出的程式碼並沒有按照預期的結果輸出。當這種情況發生時,比如使用JavaScript,最終弄清問題出在什麼地方的結果讓人非常的洩氣——大多數時候當我向一個更有經驗的JS程式設計師求助時他會說:

“哈哈,當然這樣不行!你看這裡,在JavaScript裡,這是一個特殊情況。你需要這樣做才行。”

這讓我很鬱悶。我不能把這當成學到了一種知識,這只是在這種語言裡的一個變通技巧。這並不像是一種知識。

而在Clojure裡,我通常會想明白是我錯了(比如,把lazy序列當成普通序列來處理),這種語言會以某種途徑讓你去把事情做對。感覺就像,如果我詢問Rich Hickey (Clojure語言的發明人),他會告訴我:

“哈哈,這當然不行!再想想——每個東西都應該按照它自己應該的方式執行。你用錯了函式,你用錯了資料結構。”

這才是真正的長知識,這會讓我很開心。

Clojure簡潔且優雅

Clojure並不是一種純函數語言程式設計語言,通常這會讓這種語言更容易為大多數人接受和學習。但它仍然是非常函式式的,這使得這種語言非常優雅,簡潔和強大。

使用Clojure程式設計,我發現自己會先開發出非常小且可複用的函式,然後巧妙的組合它們,構建成更大的程式。它的超級簡單的模組化系統使得你非常容易的理清你的程式的模組和它們的依賴模組。

還有,無論何時,當我寫的介面有醜陋的地方,或什麼地方有重複的程式碼,我都能明顯的感覺到,而且要去思考它,想辦法重構它,這種語言會驅動你尋找最佳程式設計方案。這跟以前的跟那些程式語言做鬥爭的感受完全不一樣。它會幫助你實現最簡潔、最優雅程式設計策略。這對於我,一個曾大量使用過Ruby,C語言和JavaScript的程式設計師來說,是空前的新奇的感覺。

Clojure程式的開發流程讓人驚歎

在我的認識裡,程式設計工作中一個最讓人頭疼的問題是,我們大量的腦力浪費在一遍又一遍的等待程式反饋中。而用Clojure開發程式的流程解決了這個問題。如果你使用過Lisp語言,相信不會對此驚奇。

使用Clojure程式設計,你的編輯器(可以是Vim,Emacs,Light Table…)一直和執行環境實時聯通。你對函式的開發、測試、修改能立刻得到反饋。你的大腦在程式設計中處於流狀態,緩慢的反饋會打斷你的邏輯思維,這是不可接受的。這也是最喜歡Clojure的原因。

所以,這些就是我目前對Clojure這種程式語言的感覺。如果你還沒有嘗試過它,我高度推薦你試一試:到官方網站看看如何入手。

[英文原文:Why I am excited about Clojure ]
相關閱讀
評論(1)

相關文章