如何評價 Racket 這門編程語言?

官網

The Racket Language


總得來講,Racket是一門well-designed學術語言,越來越多的新東西也正在融合進Racket。

我覺得是一門除了括弧沒什麼嘈點的語言,然而括弧對我個人來說也不是什麼問題。

個人看好Type Racket的前景。TR把Gradual Typing引入了Racket的世界,想要Static type checking可以寫Type,不想寫也可以不寫。不想寫Type但還想要Runtime的檢查可以寫各種Contract來確保一些invariants。而且可以期待不久的將來會出現Refinement gradual Typed Racket。

性能在過去一直是Racket的嘈點,但前兩年Racket VM加入了JIT之後性能提升很大。大概只比Java慢兩倍的樣子,但也能甩Python十幾條街了。

去年的時候Racket的Macro expander和Module system完全用Racket重寫了,不再依賴C API實現。但由於相比於原來的C實現性能有一些損失,並沒有替換進當前的實現中。然而最近Racket要把現在的VM(C寫的)換成Chez Scheme了,這樣從實現上來講,Racket可以說是一門完全用Racket/Scheme實現的語言了,而且相比於過去的C VM基本沒有性能損失。

對於教學和科研來說,開發新語言以及用PLT Redex給語言建模應該是Racket的殺手級應用。而在逐步解決了實現、性能和類型的問題後,工業界的應用和生態環境應該會越來越多和好。如果未來哪一天Racket大紅大紫了,那就真的是Revenge of the Son of the Lisp Machine了。


擴展特性好,有我喜歡的持久化數據結構和模式匹配;文檔全;包管理完善,擴展豐富;社區專業友好,入門資源豐富;有新手友好的IDE

像我這種有標準強迫症的人都覺得Scheme未來加不加Racket的新特性都無所謂了,Racket rules them all. 看看r7rs憋了這麼久才弄出個r7rs-small,各大實現支持度也是呵呵


雖然不叫Scheme,但是依然是Scheme世界裡首屈一指的實現,對Scheme有益的擴展,對未來Scheme發展可能性的積極嘗試,自帶非常友好的IDE(雖然界面性能有點差),Scheme甚至Lisp中相對來說較豐富的庫支持,教材也相對較多,總體來說非常棒。


看Racket新版主頁:『Racket is a general-purpose programming language as well as the world』s first ecosystem for developing and deploying new languages.』

Racket非常機智的沒有在系統開發、高性能計算、文本處理、網路編程等成熟的戰場和其他語言硬剛(想想Clojure現在的狀態),而是選擇了『語言設計』這個尚未開墾的處女地。憑藉靈活的S表達式和Racket友好的教程與開發環境,我感覺非常有前景。


作為lisp方言學習挺好的,DrRacket非常好用,各種學習資源也不錯。我在考慮用它來開設一門兒童編程課程,學lisp從娃娃抓起。


人生第一門語言,第一次編程。第一次用linux也是因為它(雖然win上也可以用)。

非常棒的函數語言,腦袋聰明的人寫一行,普通人就要寫上十行甚至更多。

學過以後產生「現在python一類的都太簡單了」的感覺。

精髓在於lambda,以及類似的還有兩個(一個?)function。

已經沒有人玩了。。。

----------------更新分割線---------------

大家知道在2月14號,racket開啟畫面會變成什麼樣子嗎?


C語言有32個保留字,表示自己設計很簡潔,保留字很少;

Erlang有28個保留字;Racket, Prolog等語言表示,保留字是什麼東西?(沒有保留字)


又稱 Dr Bracket


首先racket是從scheme變形過來的。

考慮scheme對比common lisp來說語法比較簡潔。

因此在學習了一段時間以後就考慮了scheme =&> 使用racket。

不過對racket也當作一種玩具。

後來看到2014年的racketconf [slides] 資料以後

覺得racket以後會發展起來的。

這篇文檔介紹了racket的演變歷程。如何從1個噁心的各種實現到模塊化拆分。

如果在模塊化以後重構racket演變到今天的type racket.

為後續racket在為生產環境使用和模塊化插件,社區塑造上打好了基礎。

clojure和common lisp從語法接受程度上來說。我比較偏向racket.

不過模塊,社區這2個我沒具體了解

其他的lisp實現後續大神可以補充。


官方的文檔及其友好,目前我看過的官方文檔,racket第一,python第二.


設計和文檔都是lisp社區里最好的,是學習和練手的好東西,但是在工業實踐中的案例不多,至今不知道原因


如果把 Lisp 看做是 C++, Java 是 C++-- 的話,那麼 Scheme 就是 Lisp-- ,只是減得有點過份了。而 Racket 可以看作 Lisp--++,把本不應該減掉的東西又給補回來了。


一門有趣又帶有「魔法」的通用語言。lisp的語法,同時又提供多範式編程。學習也可以開拓視野。


racket不是玩具啊啊啊啊啊,我是大一新生,第一學期學校cs就學racket,上課代碼用haskell,以前競賽用過C++什麼的,functional programming是很有用的,它的核心lambda calculus是和圖靈機等價的,lambda calculus的提出人Alonzo Church和alan Turing分別用lambda calculus和圖靈機在電子計算機沒有發明之前證明了不可計算問題。一個學期下來,c++代碼簡直不能看啊,不是說不好,只是感覺很不簡潔。functional programming的structural recursion容易證明。我才大一,只懂一點點,我只是看到這裡大家覺得racket只是拿來玩玩的,忍不住說幾句。


在公司碼Java

在家就玩Racket

都挺好


做sicp習題的時候全用這個了。。。IDE很方便。


沒有set-car!、set-cadr!很不習慣啊。


推薦閱讀:

為什麼著名的輪子很少有用 Lisp 寫的?
精通 Lisp 是一種怎樣的體驗?
Lisp 對於編程語言的發展有哪些貢獻?
在lambda表達式中如何使用遞歸?
Python 中的 lambda 和「真正的」lambda 有什麼區別?

TAG:編程語言 | 函數式編程 | Lisp | Scheme | Racket |