Tại sao tôi nên học Lisp? [đóng cửa]


125

Tôi thực sự cảm thấy rằng tôi nên học Lisp và có rất nhiều nguồn lực tốt để giúp tôi làm điều đó.

Tôi không bị trì hoãn bởi cú pháp phức tạp, nhưng ở đâu trong "lập trình thương mại truyền thống" tôi sẽ tìm thấy những nơi có ý nghĩa để sử dụng nó thay vì ngôn ngữ thủ tục.

Có một ứng dụng sát thủ thương mại nào được viết ở Lisp không?


5
Khó có thể bị tắt bởi những gì không có ở đó.
Kaz

Đọc sơ yếu lý lịch của Philip Greensasta . Đó là đầy rẫy với công việc Lisp thực sự.
Kaz

1
Cũng ở đây . Greensasta đã làm việc trên mô phỏng mạng chuyển mạch gói, thiết kế DSP, thiết kế bộ xử lý, bố trí VLSI, tự động hóa kỹ thuật cơ khí, tự động hóa chuyển động trái đất, và trên và trên, tất cả đều sử dụng Lisp hoặc liên quan đến Lisp. Ông đã giúp thiết kế kiến ​​trúc PA-RISC của Hewlett Packard bằng các công cụ được phát triển trên máy Lisp.
Kaz

Dưới đây là một số ứng dụng được phát triển trong Lisp - Emacs, G2, AutoCad, Igor Engraver và Yahoo Store
Arulx Z

Câu trả lời:


55

Một trong những ứng dụng chính của Lisp là trong Trí tuệ nhân tạo. Một người bạn của tôi ở trường đại học đã tham gia khóa học AI tốt nghiệp và cho dự án chính của mình, anh ấy đã viết một bộ giải "Tắt đèn " ở Lisp. Nhiều phiên bản chương trình của anh ấy sử dụng các thói quen AI hơi khác nhau và thử nghiệm trên 40 máy tính mang lại một số kết quả khá gọn gàng (tôi ước nó trực tuyến ở đâu đó để tôi liên kết đến, nhưng tôi không nghĩ vậy).

Hai học kỳ trước tôi đã sử dụng Scheme (một ngôn ngữ dựa trên Lisp) để viết một chương trình tương tác mô phỏng thói quen "Ai là người đầu tiên" của Abbott và Costello. Đầu vào từ người dùng được khớp với một số cấu trúc dữ liệu khá phức tạp (giống với bản đồ trong các ngôn ngữ khác, nhưng linh hoạt hơn nhiều) để chọn phản hồi phù hợp sẽ là gì. Tôi cũng đã viết một thói quen để giải câu đố trượt 3x3 (một thuật toán có thể dễ dàng được mở rộng thành các câu đố trượt lớn hơn).

Tóm lại, học Lisp (hoặc Scheme) có thể không mang lại nhiều ứng dụng thực tế ngoài AI nhưng đó là một kinh nghiệm học tập cực kỳ quý giá, như nhiều người khác đã tuyên bố. Lập trình bằng một ngôn ngữ chức năng như Lisp cũng sẽ giúp bạn suy nghĩ đệ quy (nếu bạn gặp rắc rối với đệ quy trong các ngôn ngữ khác, đây có thể là một trợ giúp tuyệt vời).


5
Tại sao bạn nói Lisp chỉ tốt cho AI? Ngoài ra, đó là một ngôn ngữ đa mô hình. Chức năng chỉ là một trong một số mô hình mà nó cho phép.
Luís Oliveira

6
Tôi không nói nó chỉ được sử dụng cho AI, tôi đã nói một trong những ứng dụng chính của nó là AI. Bạn đã đọc nó?
Justin Bennett

32
"Xin đừng cho rằng Common Lisp chỉ hữu ích cho Cơ sở dữ liệu, Khung kiểm tra đơn vị, Bộ lọc thư rác, Trình phân tích cú pháp ID3, Lập trình web, Máy chủ quảng cáo, Trình thông dịch thế hệ HTML và Trình biên dịch tạo HTML chỉ vì đây là những điều duy nhất được triển khai trong cuốn sách CL thực tế "
Mikael Jansson

23
@JustinBennett có bạn nói rồi. Ở đây: "Tóm lại, học Lisp (hoặc Đề án) có thể không mang lại nhiều ứng dụng thực tế ngoài AI". Tôi ghét khi mọi người đối đầu trong khi sai.
Luka Ramishvili

127

Lisp là một ngôn ngữ lớn và phức tạp với thời gian chạy lớn và phức tạp để hỗ trợ nó. Vì lý do đó, Lisp phù hợp nhất với các vấn đề lớn và phức tạp.

Bây giờ, một vấn đề phức tạp không giống như một vấn đề phức tạp . Một vấn đề phức tạp là một vấn đề có rất nhiều chi tiết nhỏ, nhưng không khó. Viết một hệ thống đặt vé máy bay là một công việc phức tạp, nhưng với đủ tiền và lập trình viên, điều đó không khó. Có được sự khác biệt?

Một vấn đề phức tạp là một vấn đề phức tạp, một vấn đề mà sự phân chia và chinh phục truyền thống không hoạt động. Điều khiển robot hoặc làm việc với dữ liệu không phải là bảng (ví dụ: ngôn ngữ) hoặc các tình huống rất năng động.

Lisp thực sự phù hợp với các vấn đề mà giải pháp phải được mở rộng; ví dụ kinh điển là trình soạn thảo văn bản emacs. Nó hoàn toàn có thể lập trình được, và do đó, một môi trường lập trình theo đúng nghĩa của nó.

Trong cuốn sách nổi tiếng PAIP của mình , Norvig nói rằng Lisp là lý tưởng cho lập trình khám phá. Đó là, lập trình một giải pháp cho một vấn đề chưa được hiểu đầy đủ (trái ngược với hệ thống đặt phòng trực tuyến). Nói cách khác: Các vấn đề phức tạp.

Hơn nữa, học Lisp sẽ nhắc bạn về một điều cơ bản đã bị lãng quên: Sự khác biệt giữa Von Neumann và Turing. Như chúng ta đã biết, mô hình tính toán của Turing là một mô hình lý thuyết thú vị, nhưng vô dụng như một mô hình để thiết kế máy tính. Von Neumann, mặt khác, đã thiết kế một mô hình về cách thức máy tính và tính toán được thực thi: Mô hình Von Neumann. Trọng tâm của mô hình Von Neumann là bạn có nhưng một bộ nhớ và lưu trữ cả mã và dữ liệu của bạn ở đó. Lưu ý cẩn thận rằng chương trình Java (hoặc C # hoặc bất cứ điều gì bạn thích) là biểu hiện của mô hình Turing. Bạn đặt chương trình của bạn cụ thể, một lần và mãi mãi. Sau đó, bạn hy vọng bạn có thể đối phó với tất cả dữ liệu được ném vào nó.

Lisp duy trì mô hình Von Neuman; không có đường viền sắc nét, được xác định trước giữa mã và dữ liệu. Lập trình trong Lisp mở ra cho bạn sức mạnh của mô hình Von Neumann. Lập trình trong Lisp làm cho bạn thấy các khái niệm cũ trong một ánh sáng mới.

Cuối cùng, tương tác, bạn sẽ học cách tương tác với các chương trình của mình khi bạn phát triển chúng (trái ngược với biên dịch và chạy). Điều này cũng thay đổi cách bạn lập trình và cách bạn xem lập trình.

Với phần giới thiệu này, cuối cùng tôi cũng có thể đưa ra câu trả lời cho câu hỏi của bạn: Bạn sẽ tìm thấy những nơi mà nó vượt trội hơn các ngôn ngữ "truyền thống" chứ?

Nếu bạn là một lập trình viên tiên tiến, bạn cần các công cụ tiên tiến. Và không có công cụ nào tiên tiến hơn Lisp. Hay nói cách khác: Câu trả lời là có nếu vấn đề của bạn khó khăn. Không có khác.


30
"nhưng với đủ tiền và lập trình viên thì không khó" - điều đó nói rằng, với đủ số lượng lập trình viên, điều đó trở thành không thể ;-)
Jonas Kölker

Tôi đã đọc về khả năng tạo mã của lisps một cách nhanh chóng, nhưng tôi cũng đã đọc rằng nó có thể được biên dịch .. có triển khai nào có thể trộn lẫn việc thực thi được biên dịch và biên dịch không? hoặc có chứa trình biên dịch riêng?
centaurian_slug

@centaurian_slug: Vâng, hoàn toàn. Đó là một phần của sức mạnh. Bất kỳ phiên bản nào không được cố tình làm tê liệt sẽ có trình biên dịch / trình thông dịch có sẵn trong thời gian chạy. Vì vậy, ví dụ, nhà phát triển có thể đăng nhập vào một kết nối đặc biệt trên máy chủ web của mình, thực hiện một số gỡ lỗi, cập nhật một số định nghĩa lớp và chức năng và có thể biên dịch lại bất cứ điều gì đang dựa vào các định nghĩa đó nếu cần. Tất cả trong khi máy chủ đang hoạt động. Có lẽ không hợp pháp trong một doanh nghiệp lo lắng về việc tuân thủ SOX, nhưng đó là một lý do khiến các ngành sử dụng các ngôn ngữ bản lĩnh như Java và C #
James


46

cú pháp phức tạp ??

Cú pháp cho lisp rất đơn giản .

Ứng dụng Killer viết bằng lisp: emacs . Lisp sẽ cho phép bạn mở rộng emacs theo ý muốn để làm hầu hết mọi thứ bạn có thể nghĩ về một trình soạn thảo có thể làm.

Nhưng , bạn chỉ nên học lisp nếu bạn muốn , và bạn có thể không bao giờ được sử dụng tại nơi làm việc bao giờ, nhưng nó vẫn tuyệt vời.

Ngoài ra, tôi muốn thêm: ngay cả khi bạn tìm thấy những nơi mà lisp sẽ có ý nghĩa, bạn có thể sẽ không thuyết phục được ai khác rằng nó nên được sử dụng trên java, c ++, c #, python, ruby, v.v.


@Justin: Có lẽ đáng chú ý rằng lõi emacs được viết bằng C. Nhưng đó chỉ là cách chọn nit - tất cả các lệnh được viết bằng elisp.
Bernard

3
hay đúng hơn - cú pháp cốt lõi của lisp phổ biến là đơn giản. defmacro cho phép mở rộng cú pháp và một số macro được tích hợp (như defmacro) có thể trở nên phức tạp đến khó tin; danh sách lambda, backquote lồng nhau, vv
Aaron

Thật là công bằng khi nói phần C của emacs là mã keo.
Luka Ramishvili

Theo tài liệu tham khảo của Emacs, "Hầu hết các lệnh chỉnh sửa trong Emacs được viết bằng Lisp; một vài ngoại lệ có thể được viết bằng Lisp nhưng sử dụng C thay vì hiệu quả." gnu.org/software/emacs/manual/html_mono/emacs.html#Intro
dpritch

25

Tôi không thể trả lời từ kinh nghiệm đầu tay nhưng bạn nên đọc những gì Paul Graham đã viết trên Lisp . Về phần "sát thủ-ứng dụng", hãy đọc Đánh bại mức trung bình .


2
+1. Câu trả lời này nên đề cập đến Yahoo Stores, ứng dụng web đầu tiên, được viết một phần bằng lisp. Trích dẫn Wikipedia: Năm 1998, Yahoo! Inc. đã mua Viaweb với giá 455.000 cổ phiếu Yahoo! cổ phiếu, trị giá khoảng 49 triệu đô la, và đổi tên thành Yahoo! Cửa hàng.
Steven Lu

17

Tôi đã lập trình ở Lisp một cách chuyên nghiệp trong khoảng một năm, và nó chắc chắn đáng để học hỏi. Bạn sẽ có cơ hội tuyệt vời để loại bỏ sự dư thừa khỏi mã của mình, bằng cách có thể thay thế tất cả các mã soạn sẵn bằng các chức năng nếu có thể và các macro không có. Bạn cũng sẽ có thể truy cập tính linh hoạt vô song trong thời gian chạy, dịch tự do giữa mã và dữ liệu. Do đó, các tình huống trong đó hành động của người dùng có thể kích hoạt nhu cầu xây dựng các cấu trúc phức tạp một cách linh hoạt là nơi Lisp thực sự tỏa sáng. Lịch trình bay của hãng hàng không nổi tiếng được viết bằng Lisp, và cũng có rất nhiều CAD / CAM ở Lisp.


9

Nếu bạn thích lập trình, bạn nên học Lisp vì niềm vui thuần túy của nó. XKCD thể hiện hoàn hảo sự giác ngộ trí tuệ xảy ra sau đó. Học Lisp là dành cho lập trình viên những gì thiền dành cho nhà sư Phật giáo (và tôi muốn nói điều này mà không có bất kỳ ý nghĩa báng bổ nào).


9

Lisp rất hữu ích để tạo DSL nhỏ. Tôi đã có một bản sao Lisp in Box đang hoạt động và tôi đã viết một ít DSL để thẩm vấn cơ sở dữ liệu máy chủ SQL và tạo các lớp dữ liệu, v.v. trong C #. Tất cả mã tấm nồi hơi của tôi hiện được viết bằng các macro lisp xuất ra C #. Tôi tạo HTML, XML, tất cả mọi thứ với nó. Trong khi tôi ước tôi có thể sử dụng Lisp để mã hóa hàng ngày, Lisp có thể mang lại lợi ích thiết thực.


Tôi sử dụng dotlisp.sourceforge.net/dotlisp.htm cho việc này.
Đánh dấu Hurd

5

Bất kỳ ngôn ngữ nào trông khó hơn rất nhiều khi người ta không sử dụng các quy ước thụt đầu dòng chung của ngôn ngữ. Khi một người theo dõi họ về Lisp, người ta sẽ thấy cách nó thể hiện cấu trúc cây cú pháp khá dễ dàng (lưu ý, điều này không hoàn toàn đúng vì bản xem trước nằm một chút; các r nên phù hợp với fns trong đối số quicksort đệ quy):

(defun quicksort (lis) 
  (if (null lis) 
      nil
      (let* ((x (car lis)) 
             (r (cdr lis)) 
             (fn (lambda (a) 
                   (< a x))))
         (append (quicksort (remove-if-not fn 
                                           r)) 
                 (list x)
                 (quicksort (remove-if fn 
                                       r))))))

1
Tôi nghĩ rằng có một sự chỉ trích công bằng trong những gì bạn nói. Tôi chỉ có ý nói "nó trông khó hơn nhiều khi bạn trình bày nó, và trông rõ ràng hơn nhiều khi nó được trình bày ở đây". Tôi nghĩ rằng bạn sẽ phải đồng ý rằng nhiều ngôn ngữ trông khó hiểu hơn nhiều nếu các quy ước thụt đầu dòng của chúng không được tuân theo. Hơn nữa, nếu chúng ta so sánh sự thụt lề của Java và Lisp, tôi sẽ nói rằng họ thường yêu cầu về cùng một mức độ kiến ​​thức về các cấu trúc cơ bản của mỗi ngôn ngữ để thụt lề chính xác. Nhưng, thật công bằng, mặc dù hoàn toàn chủ quan, để nói rằng nó vẫn còn khó khăn.
John với bánh quế

1
Để làm cho nó đơn giản hơn một chút, bạn có thể sử dụng tiêu chuẩn letvà sử dụng defunphần đầu của hàm để xác định fnvì nó không thay đổi.
Aaron Robson

4
@FerretallicA Bạn dựa trên cơ sở nào để xác định xem một thứ gì đó có thể dễ dàng đọc được hay là con người có thể đọc được hay không? Tương đồng với tiếng Anh? Là người Trung Quốc dễ dàng có thể đọc được con người? Còn ký hiệu toán học thì sao? Có phải là không dễ dàng con người có thể đọc được? Kiểu tranh luận này thật khó chịu, bởi vì thông điệp ẩn của nó là: Cái này không giống như cách tôi học lần đầu tiên để lý luận.

3
Giống như âm thanh 'phản bác' của bạn giống như "Whinge whinge". Hãy thử kiểm tra ngôn ngữ lập trình đánh hơi. Đưa ai đó chưa lập trình trước đó và hiển thị cho họ một trang mã VB và một trang mã Lisp. Tôi sẽ vui vẻ đặt cược hạt trái của mình vào cái mà hai người quan sát thông thường sẽ dễ dàng rút ra những quan sát có ý nghĩa từ đó.
nathanchere

1
Tôi tự hỏi một người không lập trình viên Trung Quốc, Nhật Bản, Hàn Quốc, Sumerian, Hindi hay Ả Rập sẽ nghĩ gì về mong muốn khá thô lỗ của bạn để từ bỏ tinh hoàn của bạn cho một cuộc tranh cãi.

4

Tôi thấy rằng học một ngôn ngữ mới, luôn ảnh hưởng đến phong cách lập trình của bạn bằng các ngôn ngữ bạn đã biết. Đối với tôi, nó luôn khiến tôi phải suy nghĩ theo nhiều cách khác nhau để giải quyết vấn đề bằng ngôn ngữ chính của mình, đó là Java. Tôi nghĩ nói chung, nó chỉ mở rộng tầm nhìn của bạn về mặt lập trình.


Đó là bởi vì bạn là một lập trình viên giỏi. Những lập trình viên tồi, thay vì ảnh hưởng đến các kỹ năng cũ với kiến ​​thức mới, hãy suy nghĩ bằng các ngôn ngữ đã biết trong khi viết bằng những ngôn ngữ mới. Nhưng tại sao bạn lại sử dụng Java sau lisp? :) Java khó sử dụng nhất sau Lisp, imo.
Luka Ramishvili

4

Nếu bạn phải tự hỏi mình có nên học lisp không, có lẽ bạn không cần phải học.


8
Tôi sẽ nói ngược lại: nếu bạn đã hiểu lisp vì bạn có kinh nghiệm với một ngôn ngữ tương tự thì có lẽ không cần thiết. Nếu bạn không hiểu những gì lisp cung cấp, thì bạn có thể hưởng lợi từ việc tiếp xúc.
Ông Fooz

@MrFooz không có ngôn ngữ tương tự có thể loại bỏ nhu cầu học phần lispy của lisp. Các tính năng chính của lisp không được tìm thấy trong bất kỳ ngôn ngữ. Mặc dù hầu hết là.
Luka Ramishvili

Tùy thuộc vào mục tiêu của bạn. Nếu bạn muốn chết, bạn không cần phải thở. Nhưng điều đó không có nghĩa là bạn không nên.
mimoralea

4

Tôi đã học một "lớp học không thể thiếu" ở đại học vào những năm tám mươi. Mặc dù mò mẫm tất cả các khái niệm được trình bày trong lớp, tôi vẫn bị bỏ lại mà không có bất kỳ sự đánh giá cao nào cho những gì làm cho lisp tuyệt vời. Tôi sợ rằng nhiều người xem lisp chỉ là một ngôn ngữ lập trình khác, đó là điều mà khóa học ở trường đại học đã làm cho tôi rất nhiều năm trước. Nếu bạn thấy ai đó phàn nàn về cú pháp lisp (hoặc thiếu nó), rất có thể họ là một trong những người đã không nắm bắt được sự vĩ đại của lisp. Tôi là một trong những người đó trong một thời gian rất dài.

Mãi đến hai thập kỷ sau, khi tôi khơi dậy mối quan tâm của mình về lisp, tôi mới bắt đầu "hiểu" những gì làm cho lisp thú vị - dù sao đối với tôi. Nếu bạn quản lý để học lisp mà không có tâm trí của bạn bị thổi bay bởi các đóng cửa và macro lisp, có lẽ bạn đã bỏ lỡ điểm.


Tôi thứ hai. Tôi hiện đang ở lần thứ hai vào Lisp, 5 năm ra trường. Một thuật ngữ của Lisp khi bạn vẫn còn xanh có thể không có hiệu lực đầy đủ - Tôi nhớ chỉ tập trung vào siêu lập trình và chưa đánh giá cao về siêu lập trình và tính linh hoạt.
Aaron

4

Học LISP / Scheme có thể không cung cấp cho bạn bất kỳ không gian ứng dụng nào, nhưng nó sẽ giúp bạn hiểu rõ hơn về lập trình chức năng, các quy tắc và ngoại lệ của nó.

Thật đáng để đầu tư thời gian chỉ để tìm hiểu sự khác biệt về vẻ đẹp của sáu chức năng thuần túy lồng nhau và cơn ác mộng của sáu chức năng lồng nhau với các tác dụng phụ.


4

Từ http://www.gigamonkeys.com/book/int sinhtion-why-lisp.html

Một trong những huyền thoại lặp đi lặp lại phổ biến nhất về Lisp là nó "đã chết". Mặc dù sự thật là Common Lisp không được sử dụng rộng rãi như Visual Basic hay Java, nhưng thật lạ khi mô tả một ngôn ngữ tiếp tục được sử dụng để phát triển mới và tiếp tục thu hút người dùng mới là "chết". Một số câu chuyện thành công gần đây của Lisp bao gồm Viaweb của Paul Graham, đã trở thành Yahoo Store khi Yahoo mua công ty của ông; Hệ thống mua sắm và định giá vé máy bay của ITA Software, QPX, được sử dụng bởi người bán vé trực tuyến Orbitz và những người khác; Trò chơi của Nicky Dog dành cho PlayStation 2, Jak và Daxter, phần lớn được viết bằng phương ngữ Lisp dành riêng cho tên miền được phát minh có tên là GOAL, có trình biên dịch được viết bằng Common Lisp; và Roomba, máy hút bụi robot tự động, có phần mềm được viết bằng L, một tập hợp con tương thích hướng xuống của Common Lisp. Có lẽ điều đáng nói hơn nữa là sự phát triển của trang web Common-Lisp.net, nơi lưu trữ các dự án Common Lisp nguồn mở và số lượng nhóm người dùng Lisp địa phương đã xuất hiện trong vài năm qua.



3

Tôi đồng ý rằng Lisp là một trong những ngôn ngữ mà bạn không bao giờ có thể sử dụng trong môi trường thương mại. Nhưng ngay cả khi bạn không làm được, việc học nó chắc chắn sẽ mở rộng sự hiểu biết của bạn về lập trình nói chung. Ví dụ, tôi đã học Prolog ở trường đại học và trong khi tôi chưa bao giờ sử dụng nó sau đó, tôi đã cho tôi hiểu hơn về nhiều khái niệm lập trình và (đôi khi) đánh giá cao hơn về các ngôn ngữ tôi sử dụng.

Nhưng nếu bạn định học nó ... bằng mọi cách, hãy đọc On Lisp


Lưu ý nhỏ: Trên Lisp không phải là một giới thiệu phù hợp về Lisp, trước tiên hãy đọc một cái gì đó khác. Tôi khuyên bạn nên thực hành Lisp chung.
Luís Oliveira

3

Học lisp sẽ đưa Javascript vào một ánh sáng hoàn toàn khác! Lisp thực sự buộc bạn phải nắm bắt cả đệ quy và toàn bộ "các chức năng như các đối tượng hạng nhất" -paradigm. Xem bài viết tuyệt vời của Crockfords về Scheme vs Javascript . Javascript có lẽ là ngôn ngữ quan trọng nhất hiện nay, vì vậy hiểu nó tốt hơn là vô cùng hữu ích!


1
Ngôn ngữ quan trọng nhất? Tôi nghĩ là không, thưa ông.
TraumaPony

7
Chà, nó có sẵn trên hầu hết mọi thiết bị có trình duyệt web (và có thể là một số ít không có), theo như ngôn ngữ để chạy các ứng dụng người dùng cuối, nó có khả năng thâm nhập cao nhất trong mọi ngôn ngữ lập trình trên hành tinh . Rõ ràng bạn có thể có một ý kiến ​​hoàn toàn khác về những gì quan trọng. Nó sẽ được sử dụng để chữa ung thư? Chắc là không. Nhưng, dù muốn hay không, nó sẽ là một trong những nền tảng phát triển ứng dụng (web) trong nhiều năm tới.
Erlend Halvorsen

1
Tôi đã đi theo cách tương tự! Mặc dù tôi đã sử dụng các tính năng tạo mẫu và chức năng của Javascript, nhưng sau khi học Lisp Javascript vẫn là một ngôn ngữ mới đối với tôi.
Luka Ramishvili


3

Được rồi, tôi có thể kỳ lạ nhưng tôi thực sự không thích các bài tiểu luận của Paul Graham rằng & Lisp là một cuốn sách thực sự thô sơ nếu bạn chưa nắm bắt được Lisp thông thường. Thay vào đó, tôi muốn nói hãy đến với Lisp thực tế chung của Siebel . Đối với "ứng dụng sát thủ", Common Lisp dường như tìm thấy vị trí của mình trong các cửa hàng thích hợp, như ITA , vì vậy trong khi không có ứng dụng nào đồng nghĩa với CL theo cách Rails dành cho Ruby, có những nơi trong ngành sử dụng nó nếu bạn làm một chút đào.


2

Cú pháp phức tạp? Vẻ đẹp của lisp là nó có một cú pháp đơn giản đến nực cười. Đây chỉ là một danh sách, trong đó mỗi thành phần của danh sách có thể là một danh sách khác hoặc một kiểu dữ liệu cơ bản.

Thật đáng để học hỏi vì cách nó tăng cường khả năng mã hóa của bạn để suy nghĩ và sử dụng các chức năng như một loại dữ liệu khác. Điều này sẽ cải thiện cách bạn viết mã bằng ngôn ngữ bắt buộc và / hoặc hướng đối tượng bởi vì nó sẽ cho phép bạn linh hoạt hơn về mặt tinh thần với cách cấu trúc mã của bạn.


2

Để thêm vào các câu trả lời khác:

Bởi vì khóa học SICP (các video có sẵn ở đây ) rất tuyệt vời: dạy cho bạn Lisp và nhiều hơn nữa !


2

Ứng dụng killer? Franz Inc. có một danh sách dài các câu chuyện thành công , nhưng danh sách này chỉ bao gồm những người dùng AllegroCL ... Có thể có những người khác. Yêu thích của tôi là câu chuyện về Chó nghịch ngợm , vì tôi là một fan hâm mộ lớn của trò chơi Crash Bandicoot.

Để học Lisp chung, tôi khuyên bạn nên dùng Lisp chung thực tế . Nó có một cách tiếp cận thực tế mà ít nhất là đối với tôi đã làm cho nó dễ dàng hơn những cuốn sách khác mà tôi đã xem.


2

Bạn có thể sử dụng Clojure ngay hôm nay để viết các bài kiểm tra và tập lệnh trên Java VM. Mặc dù có các ngôn ngữ Lisp khác được triển khai trên JVM, tôi nghĩ Clojure thực hiện công việc tích hợp tốt nhất với Java.

Đôi khi, chính ngôn ngữ Java đã cản trở việc viết các bài kiểm tra cho mã Java (bao gồm cả "lập trình thương mại truyền thống"). (Tôi không có nghĩa là như một bản cáo trạng của Java - các ngôn ngữ khác gặp phải vấn đề tương tự - nhưng đó là sự thật. Vì chủ đề, không phải Java, tôi sẽ không giải thích. Vui lòng bắt đầu một chủ đề mới nếu ai đó muốn thảo luận về nó.) Clojure loại bỏ nhiều trở ngại đó.


2

Lisp có thể được sử dụng bất cứ nơi nào bạn sử dụng lập trình truyền thống. Nó không khác biệt, nó chỉ mạnh hơn. Viết một ứng dụng web? bạn có thể làm điều đó trên Lisp, viết một ứng dụng máy tính để bàn? bạn có thể làm điều đó trên Lisp, bất cứ điều gì, bạn có thể làm điều đó trên Lisp, hoặc Python hoặc bất kỳ chương trình chung nào khác (có một vài ngôn ngữ chỉ phù hợp cho một nhiệm vụ).

Trở ngại lớn nhất có lẽ sẽ là sự chấp nhận của sếp, đồng nghiệp hoặc khách hàng của bạn. Đó là điều bạn sẽ phải làm việc với họ. Chọn một giải pháp thực dụng như Clojure có thể tận dụng cơ sở cài đặt hiện tại của cơ sở hạ tầng Java, từ JVM đến các thư viện, có thể giúp bạn. Ngoài ra, nếu bạn có một chương trình Java, bạn có thể thực hiện một kiến ​​trúc trình cắm và viết các trình cắm Clojure cho nó và cuối cùng viết một nửa mã của bạn trong Clojure.


1

Không phải là một lý do nhưng (tầm thường) AutoCAD có hỗ trợ thời gian chạy LISP & DCL. Đây là một cách thuận tiện để viết các macro phức tạp (bao gồm tự động hóa ActiveX) nếu bạn không muốn sử dụng VBA hoặc SDK C ++ hoặc .NET của chúng hoặc nếu một biểu thức DIESEL không cắt nó.

Rất nhiều chức năng của AutoCAD thực sự là các thói quen LISP.


1

Đây là một chủ đề mà bản thân tôi đã suy nghĩ một thời gian nhưng tôi chưa thực sự đi đến quyết định, vì thời gian thông thường là vấn đề chính ...;)

Và vì tôi có thể tìm thấy những liên kết này trong bài đăng này, tôi thêm chúng vào cho công chúng:

Câu chuyện thành công và thất bại: Lisping tại JPL

Câu chuyện thành công thực sự ấn tượng: Lisp được sử dụng tại tập đoàn Orbitz

So sánh và phân tích xem có nên sử dụng Lisp thay vì Java: Lisp thay thế cho Java




0

Ứng dụng killer? Công cụ tìm kiếm chuyến bay của ITA Software là một.

Đối với "tại sao", rất có thể nó sẽ giúp bạn trở thành một nhà phát triển tốt hơn và cực kỳ khó có thể khiến bạn trở nên tồi tệ hơn. Tuy nhiên, nó có thể khiến bạn thích các phương ngữ khác với các ngôn ngữ khác.

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.