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.