2010-10-26 61 views
15

我在CS專業的第二年,只有C(第一門課程,然後是多態數據結構課程),C++(OOP焦點),MIPS彙編和編譯課程。我在夏天曾在WinForms和C#中工作過。我通過小Schemer工作,我非常有興趣學習某種LISP。除了編輯emacs之外,emacs LISP的可行性如何?

Emacs是我的首選編輯器 - Emacs LISP應該是一個很好的開始。

除了自定義emacs之外,還有哪些地方可以使用emacs LISP?根據link text,根據elisp代碼創建可執行文件似乎幾乎是不可能的。還有什麼其他限制?

我應該學習Scheme還是Common Lisp?

+2

可能感興趣的可能是這個相關的問題 - 它有答案,辯論Emacs lisp和普通lisp的優點/缺點。 http://stackoverflow.com/questions/3840443/how-to-go-about-learning-common-lisp-and-emacs-lisp – 2010-10-27 03:54:08

+0

沒關係。作爲CS專業,你應該學習學習。學習某種形式的Lisp非常棒。你挑選哪一個並不重要。把你從一個學到另一個學到的東西很容易。 – Stefan 2013-04-17 14:10:00

回答

11

Emacs是一個文本編輯器。 Emacs Lisp是 - 核心 - 一種文本編輯語言。

elisp今天的高峯 - 國際海事組織 - 是ERC,emacs IRC客戶端和組織系統,非常好很好的組織系統。還有一個emacs的電子郵件客戶端。

因此,對於構建文本編輯插件,我不認爲你可以擊敗elisp/emacs。

對於實際的獨立應用程序開發,Common Lisp可能是您最好的選擇。我贊成CLISP的實施,但SBCL也很受歡迎。有很多Lisp實現。最近有人開玩笑說有更多的Lisp編譯器比使用Lisp的公司更多。 :-o

+0

目前SBCL似乎是最受歡迎的,例如,Xach最近的調查(包括免費和商業編譯器)使用SBCL看到了超過80%。 – Ken 2010-10-27 05:46:14

4

這當然是主觀的,但我認爲學習Common Lisp或(標準)Scheme通常更有用,只是爲了簡單的事實,那麼您不會僅限於一個編譯器。很難預見你可能想要用你的代碼做的所有事情,那麼爲什麼要把自己鎖定在一個實現上呢?

3

Emacs Lisp更像是一種特定於Emacs環境的腳本語言,有助於瞭解您是否希望在掌握Emacs的情況下與Stallman相媲美或希望編寫擴展。

Common Lisp是Lisp的事實標準。該計劃更具教育意義,主要是因爲它與着名的MIT課程和書籍(SICP)有關,儘管它本身很強大。

但它們不同。有些人認爲Scheme是最小的計算機語言之一(就標準庫而言)。語言定義約六頁。 Common Lisp是那裏最大的計算機語言之一。

還有更有趣的例子。幾年前,我一直在使用支持內聯C和Python代碼的Lisp方言,以及直接導入和使用C和Python對象並從它們調用函數。但是,由於我在Google上找不到它的參考,它似乎已經變得模糊不清。

5

正如其他人所說,Emacs lisp包含許多用於構建文本編輯器的基元。

這就是說,它仍然是lisp,並且使用lisp(Emacs,common或scheme)的習慣大致相同。

如果您想使用它們,可以使用common lisp package來訪問大部分常用的lisp宏。

如果感興趣,您可以使用Emacs lisp編寫shell腳本(請參閱this question)。如果您想要連接到其他正在運行的進程(參見comint),那麼較差的進程處理很有用。

找到一個項目你想工作,然後讓你的決定從那裏流動。如果Emacs lisp很合適,請使用它,如果普通的lisp運行良好,請使用它。

3

如果您有興趣學習一些Lisp,我會推薦雞計劃(http://www.call-cc.org)。它有非常好的文檔,積極開發,可以在各種平臺上工作,並且有一個很棒的擴展系統叫做「雞蛋」,它包含很多庫,用於方案沒有直接指定的行爲編碼。

另一方面,emacs是學習emacs lisp的一個很好的開發環境,對於腳本和(明顯)自定義emacs非常有用。只有C-h f,C-h v和C-h A帶有功能和變量的文檔使開發變得更容易;一旦你學習了elisp多年來創造的一些比較模糊的命名約定。

4

這聽起來像你期待學習 a lisp。對於這個計劃經常被推薦,並且你說你正在讀The Little Schemer。

PLT Racket這是以前的PLT方案,是一個很好的方案開發和學習環境。 PLT計劃最初的重點是教學法,從計劃到球拍的重命名是一個糟糕的雙關語,但意在表明該系統也足夠成熟和足夠生產性的「真實世界」使用。