Tôi nên bắt đầu với Lisp như thế nào? [đóng cửa]


48

Tôi đã lập trình được nhiều năm nay, làm việc theo cách của tôi thông qua các lần lặp khác nhau của Blub (BASIC, Assembler, C, C ++, Visual Basic, Java, Ruby không theo thứ tự cụ thể nào của "Blub-ness") và tôi muốn tìm hiểu Lisp. Tuy nhiên, tôi có rất nhiều điều thú vị với thời gian hạn hẹp (gia đình, công việc toàn thời gian, v.v.) và một hạnh phúc thoải mái với Blub (Java) hiện tại của tôi.

Vì vậy, câu hỏi của tôi là, vì tôi là người thực sự muốn học Lisp, bước đầu tiên để có kết quả tốt thể hiện sự vượt trội của Lisp trong phát triển web là gì? Có thể tôi đang thiếu điểm, nhưng đó là cách ban đầu tôi sẽ thấy ứng dụng kiến ​​thức Lisp của mình.

Tôi đang suy nghĩ "sử dụng phương ngữ A, sử dụng IDE B, làm theo hướng dẫn trên trang C, đặt câu hỏi về sự tỉnh táo của bạn sau khi các đơn vị sử dụng nhân viên tư vấn D". Tôi chỉ muốn biết những gì mọi người ở đây coi là một bộ giá trị tối ưu cho A, B, C và có lẽ D. Ngoài ra, một số cuộc thảo luận về giá trị tương đối của việc học một ngôn ngữ mạnh mẽ như trái ngược với, trở thành Rails chuyên gia.

Chỉ cần thêm một số chi tiết, tôi sẽ phát triển trên MacOS (hoặc Linux VM) - không cần tiếp cận dựa trên Windows, cảm ơn.

Ghi chú cho những người chỉ duyệt qua

Tôi sẽ giữ câu hỏi này mở trong một thời gian để tôi có thể đưa ra phản hồi về các đề xuất sau khi tôi có thể khám phá chúng. Nếu bạn tình cờ duyệt và cảm thấy bạn có một cái gì đó để thêm, xin vui lòng làm. Tôi thực sự hoan nghênh phản hồi của bạn.

Liên kết thú vị

Giả sử bạn đến Lisp từ nền Java, bộ liên kết này sẽ giúp bạn bắt đầu nhanh chóng.

  1. Sử dụng plugin La Clojure của Intellij để tích hợp Lisp ( videocast )
  2. Lisp cho trang web
  3. Phiên bản trực tuyến của Lisp thực tế chung (c / o Frank Shearar)
  4. Land of Lisp một (+ (+ very quirky) game based)cách vào nhưng làm cho tất cả trở nên đơn giản
  5. Cài đặt Clojure và Sublime 2 trên MacOS một hướng dẫn bắt đầu tuyệt vời
  6. Nhìn vào cuốn sách Clojure in Action . Đã làm cho tôi.

1
Bằng cách đọc "ANSI Common Lisp" và "On Lisp" của Paul Graham.
Duros

2
Trên đá Lisp (Tôi chưa đọc ANSI Common Lisp), nhưng như một cuốn sách giới thiệu , Lisp chung thực tế> On Lisp. IMO, ít nhất. (Tôi đã đọc On Lisp trước, nhưng PCL là thứ đã đưa tôi vào CL.)
Frank Shearar

Phải nói rằng tôi rất thích đọc PCL vào lúc này - những chú thích tuyệt vời về lịch sử của ngôn ngữ thực sự mang lại cảm giác cho cộng đồng
Gary Rowe

1
Giới thiệu đầu tiên của tôi về Lisps là xem Cấu trúc và Giải thích các Chương trình Máy tính nổi tiếng. Sau đó, tôi đã xem Rich Hickey's Clojure cho các lập trình viên Java. Tôi muốn giới thiệu những video này như là một giới thiệu tốt.
WuHoUnited

Câu trả lời:


18

Điều này có thể phản đối với hầu hết các khuyến nghị của mọi người, nhưng hãy tránh xa Emacs để bắt đầu, trừ khi bạn đã biết. Đặc biệt nếu bạn đã quen với các IDE / trình soạn thảo hiện đại.

Tôi đang nói từ kinh nghiệm; Tôi đã cố gắng bắt đầu với Emacs, nhưng phải học ngôn ngữ VÀ trình soạn thảo cùng lúc thực sự làm tôi thất vọng (đặc biệt là vì Emacs rất khác so với các công cụ khác). Cuối cùng tôi đã chộp lấy nó, bắt đầu với PLT Scheme (nay là Vợt) đi kèm với một IDE đa nền tảng tương đối đơn giản, một kho lưu trữ gói tập trung và các tài liệu tuyệt vời (bao gồm một hướng dẫn trung gian đặc biệt dành cho phát triển web ). Sau khi tôi hiểu rõ về Lisp, cuối cùng tôi đã quay trở lại Emacs, chọn EL / CL bằng cách thực hành Hướng dẫn chung của LispXah's Elisp Guide. Về cơ bản, như tôi thấy, bạn cần biết Lisp trước khi bạn có thể sử dụng Emacs một cách hiệu quả và bạn cần biết Emacs để có thể rất hiệu quả với CL / Elisp. Điều này có nghĩa là bạn có thể chọn Scheme hoặc tìm hiểu Common Lisp thông qua một số trình soạn thảo khác trước (có thể là cá nhân LispWorks).

Nếu bạn đã biết Emacs, thì vâng Elisp là bước tự nhiên (mặc dù bạn sẽ thích Emacs sử dụng như thế nào mà không biết Elisp trước hết nằm ngoài tôi).

YMMV tất nhiên, đây chỉ là những gì tôi tìm thấy giúp đỡ.

Vì hiện tại của bạn là Java, nên bạn có thể nhận được rất nhiều dặm từ Clojure , Armed Bear hoặc Kawa . Bản thân tôi chưa từng thử bất kỳ ai trong số họ, không phải là một người Java, nhưng Clojure đặc biệt rất được khuyến khích từ những Lispers khác mà tôi biết. Có vẻ như khả năng giữ VM và IDE hiện tại của bạn có thể giúp cho quá trình học tập.


Tôi đã có một số lưu loát cơ bản trong emacs khi tôi bắt đầu. Emacs có một đường cong học tập rất dốc!
Frank Shearar

+1 vì những trải nghiệm trước đây của tôi với Emacs chưa được tuyệt vời (điều đó không ngăn tôi muốn biết và tích hợp Lisp - như Thorbjorn đã chỉ ra - có nghĩa là tôi có thể sử dụng kiến ​​thức Lisp của mình trong công việc hàng ngày)
Gary Rowe

3
@ Thorbjørn Ravn Andersen - Đã làm điều đó. Hai lần. Vẫn thấy mình liên tục sử dụng các phím tắt CUA (được tắt theo mặc định trong Emacs). Điều tồi tệ nhất là đóng trình soạn thảo của tôi với một lần cắt ngẫu nhiên + bản sao dự định ( C-x C-c). Tôi yêu Emacs cho đến chết, và khá nhiều sống trong nó bây giờ, nhưng nhận ra rằng lúc đầu, bạn đang năm chiến đấu bộ nhớ cơ bắp nói với bạn C-sSave, không Searchvà đó UndoC-z. Tôi sẽ không đề xuất loại thất vọng đó cho người có ý định học Lisp. Học ngôn ngữ trước, nhận ra bạn yêu thích nó, sau đó bắt đầu chiến đấu với một mục tiêu rõ ràng trong đầu.
Inaimathi

1
@Inaima, sức mạnh đi kèm với giá cả và các ràng buộc Emacs có trước CUA nên đổ lỗi cho IBM :) Ngoài ra Ctrl-C + Ctrl-v không phải là CUA :)

1
@Geoffrey van Wyk - PLT thật tuyệt khi bắt đầu, nhưng có một số giới hạn bạn gặp phải sau một thời gian khiến tôi chuyển sang CL / Emacs khi tôi có vòng bi. YMMV. Tôi đã viết một bài trước đây, nếu bạn quan tâm đến chi tiết langninto.blogspot.com/2010/09/iêu Theo câu hỏi của LispWorks; Tôi phải tin rằng họ đang nhắm mục tiêu vào các nhóm lớn (nơi công ty mua các công cụ) hoặc các chuyên gia tư vấn (những người thường kiếm đủ để thẻ giá hợp lý). Không chắc nó hoạt động như thế nào đối với họ, nhưng đó không phải là cách tiếp cận mà tôi đã chọn.
Inaimathi

10

Chà, bạn có thể đánh hai con chim bằng cách đọc SICP ; Một là học LISP (ý tôi là sơ đồ của Lisp) và cái khác là cái nhìn sâu sắc về cách lập trình.Period !!


1
+1 cho liên kết - quét nhanh dường như cho thấy rằng nó rất chi tiết nhưng cũng khá khô khan (đọc học thuật) trong cách tiếp cận của nó. Tôi là một fan hâm mộ lớn của "tiếng nói chuyên gia" khi đọc văn bản nhưng có vẻ như đó là một tài liệu tham khảo tổng thể tốt.
Gary Rowe

10

Conrad Barski có một hướng dẫn tuyệt vời có tên Casting SPELs ở Lisp (SPEL là từ viết tắt của ông cho các macro). Nó liên quan đến việc tạo ra một trò chơi kiểu Adventure đơn giản và nhảy ngay vào macro Lisp. Ông cũng đang thực hiện một cuốn sách giới thiệu hiện có tại:

Học cách lập trình Lisp, mỗi lần một trò chơi .

Và, từ Mục lục:

  • Tạo máy chủ web của riêng bạn và sử dụng nó để chơi các trò chơi dựa trên trình duyệt

Tuy nhiên, tôi không biết điều này ngụ ý gì cho phát triển web (như trong các trang HTML) khi sử dụng Lisp. :)

Cập nhật - Tôi thấy ai đó đã đề cập đến cuốn sách "Cấu trúc và diễn giải các chương trình máy tính", điều đó nhắc nhở tôi rằng MIT đã đưa trực tuyến, toàn bộ Bài giảng video SICP của Hal Abelson và Gerald Jay Sussman . Bạn có thể đã tìm thấy cuốn sách khô, nhưng các bài giảng là tuyệt vời. Mặc dù chúng dựa trên Scheme, nhưng chúng vẫn có các khái niệm cơ bản trong Lisp, rất độc đáo. Rất đáng để tải về và xem.


8

Để có được phần giới thiệu cơ bản tốt về ngôn ngữ, hãy đọc Lisp thực tế chung của Peter Seibel . Cuốn sách tuyệt vời.

Thiết lập emacs và SLIME có thể khó đối với người mới, trong đó "khó khăn" khác nhau về độ lớn tùy thuộc vào hệ điều hành của bạn. Như thường lệ, Windows nhận được kết thúc ngắn, nhưng mọi người đã thực hiện phần khó khăn và viết nó lên (SBCL, Emacs, SLIME).

Khi đã thành công, Planet Lisp đã tham khảo một bài báo gần đây mô tả cách thiết lập Hunchentoot và nginx.

Chỉnh sửa dành riêng cho hệ điều hành: MCLIDE có thể là một nơi tốt để bắt đầu. Tôi đã cài đặt nó, nhưng không có cơ hội thực sự sử dụng nó, vì vậy tôi không thể nói bất cứ điều gì hữu ích về nó. Nó chắc chắn trông thú vị!

Chỉnh sửa: Eclipse cũng có plugin Cusp .


6

Đã có rất nhiều câu trả lời tuyệt vời, nhưng giả sử bạn muốn đi sâu vào phát triển web với Lisp, tôi có thêm một vài ý tưởng.

Clojure là Lisp đầu tiên tôi từng thấy có các khung web đầy đủ thực sự xuất sắc, sẵn sàng cho thời gian chính.

  • Noir là một khung web vững chắc với định tuyến, tạo khuôn mẫu, v.v., tương tự như Sinatra nhưng giàu tính năng hơn một chút. Nó sử dụng Ring, về cơ bản là tương đương với Rack của Ruby trong Ruby.
  • Korma là một thư viện trừu tượng SQL kết hợp thực sự tốt với Noir.
  • Pinot là một khung công tác phía máy khách được viết hoàn toàn bằng ClojureScript, đưa chúng ta tới:
  • Clojurescript là trình biên dịch cho Clojure nhắm mục tiêu Javascript.

Nếu bạn không nhận thấy, tôi chỉ bao gồm toàn bộ ngăn xếp web và tất cả được viết bằng Clojure.

Tôi thấy Clojure dễ dàng hơn một chút để bắt đầu với Common Lisp, với tính năng hỗ trợ thư viện / bộ tính năng tốt hơn nhiều so với Scheme.

Nếu bạn đến từ một nền tảng Java, thì nó có thêm lợi ích của việc chạy trên JVM, cho phép bạn truy cập vào toàn bộ stdlib Java khi bạn cần.

Các tài liệu có sẵn là một công việc đang tiến hành, cũng như các khung công tác. Nhưng có một hướng dẫn khá tốt ngay tại đây.

Theo như các biên tập viên ... nếu bạn cảm thấy thoải mái với vim, bạn có thể sử dụng vim với SLIMV. Nếu bạn thích emacs, emacs / SLIME là được. Có hỗ trợ Eclipse và NetBeans khá tốt cho Clojure (hay tôi được nói như vậy), nhưng tôi thường sử dụng TextMate (mặc dù Sublime Text 2 đang nhanh chóng trở thành trình soạn thảo mà tôi lựa chọn). Tôi biết rằng tôi đang bỏ lỡ một ma thuật Lisp nhỏ không sử dụng môi trường tích hợp hơn, nhưng tôi rất vui khi nhấn-Tab để trao đổi giữa trình soạn thảo của mình và REPL; số dặm của bạn có thể thay đổi.

Nếu bạn muốn có một cuốn sách để bắt đầu bạn, tôi khuyên bạn nên lập trình Clojure của Stuart Halloway và Aaron Bedra. Phiên bản thứ 2 vừa được phát hành từ PragProg , vì vậy nó đã được cập nhật.

Chúc mừng Lisping!


Bạn có thể muốn thêm Leiningen
Gary Rowe

5

Một nhà bình luận khác, Inaimathi , đã giới thiệu cuốn sách này vài ngày trước: The Little Schemer

Nhận được nó ngày hôm nay và tôi có thể nói là một người có một thư viện sách lập trình rất lớn đã có được trong nhiều năm, rằng tôi có thể chỉ đọc một chương, nhưng tôi chắc chắn sẽ cần một phiên bản bìa cứng này. Nó đọc giống như Tao Te Ching, rất nhiều đoạn nhỏ về trí tuệ siêu phàm liên quan đến ngôn ngữ. Nó có thể nói Scheme, nhưng ban đầu nó được gọi là "The LISPer nhỏ", các ngôn ngữ ở cấp độ mà nó thảo luận là đủ tương tự để được dạy như một.

Nó không phải là một văn bản nâng cao, nhưng có một nhiệm vụ để thấm nhuần các nguyên tắc của ngôn ngữ và nó thực sự là gì, làm thế nào để suy nghĩ như vậy. Tôi tin rằng nó sẽ là một khởi đầu tuyệt vời cho LISP.

Lưu ý Ma trận năng lực lập trình viên thực sự đề cập đến cuốn sách này ở cấp độ năng lực hàng đầu của những thứ cần tìm. (xem phần Sách)


4

Một nơi rất đẹp để bắt đầu sử dụng Lisp là bên trong trình soạn thảo Emacs, nơi nó có thể được sử dụng để xác định lại bất cứ thứ gì. Bạn muốn khóa 'e' chèn thời gian của ngày, chỉ cần viết một đoạn Lisp nhỏ để tạo chuỗi và liên kết nó với khóa e. Làm xong.

Điều này cũng sẽ cho phép bạn thực sự SỬ DỤNG những gì bạn học được trong cài đặt hàng ngày, nếu bạn tình cờ sử dụng trình chỉnh sửa đơn giản trong ngày.


+1 cho lời khuyên "sử dụng những gì bạn học". Tôi là một Intellij bod cho công việc hàng ngày, nhưng tôi chỉ có thể có được bàn chân của mình trên emacs trong môi trường phần mềm rất hạn chế của chúng tôi.
Gary Rowe

3

Nếu bạn sẽ phát triển trên máy Mac, bạn có thể muốn dùng thử Clozure CL . Nó đi kèm với một IDE có tổ hợp phím tương thích Emacs và có một cầu nối với Objective C để bạn có thể viết các ứng dụng Cacao.

Ngoài ra, tôi đã đọc Lisp chung thực tế, nhưng thấy Lisp thành công cũng hữu ích.

Cuối cùng, một số kiên nhẫn từ phía bạn sẽ được khen thưởng. Năng suất và những chiến thắng nhỏ sẽ đến khá nhanh, nhưng chiến thắng lớn có thể sẽ mất một thời gian.


2

Tôi có một bản sao ANSI Common Lisp ngay tại bàn của mình. Tôi nhặt nó vài năm một lần và nhận được một vài chương, sau đó bị mắc kẹt trong một vài bài tập và nó trượt xuống danh sách ưu tiên. Điều đó có thể cho bạn biết nhiều hơn về tôi hơn cuốn sách mặc dù. Cuốn sách dường như hoàn toàn có thẩm quyền ...


Có lẽ đọc qua các câu trả lời và nhận xét cho câu hỏi này sẽ cho bạn động lực để hướng tới mục tiêu cao hơn. Có một vết nứt tại liên kết PCL và cho chúng tôi biết suy nghĩ của bạn ...
Gary Rowe
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.