Tôi là một lập trình viên C ++ đang cố gắng học Common Lisp. Tôi đã xem một số cuốn sách như Land of Lisp và đọc nhiều bài báo trực tuyến về các đức tính khác nhau của Lisp. Tuy nhiên, tôi cần một số lời khuyên.
Hầu hết mọi thứ tôi đã đọc về Common Lisp đều liên quan đến nó tuyệt vời như thế nào và bạn có thể hoàn thành công việc với tốc độ đáng kinh ngạc như thế nào cũng như cách nó giải quyết rất nhiều vấn đề với các ngôn ngữ lập trình hiện đại cách đây 30 năm. Ngoài ra, macro tuyệt vời như thế nào và mọi mô hình lập trình (OO, hàm, dựa trên tác nhân hoặc bất cứ thứ gì, v.v.) đều có thể được sử dụng trong Lisp và cách danh sách là cấu trúc dữ liệu cuối cùng. Về cơ bản coi Lisp giống như một ngôn ngữ nghiên cứu và nói rằng nó khác biệt và mang tính cách mạng như thế nào.
Và tất cả những điều đó có lẽ đúng, nhưng vấn đề là tôi chưa thấy nhiều thứ về cách làm những việc thực tế như đọc một tệp và chia nó thành các từ và thực hiện một số xử lý trên đó. Tôi không quan tâm đến việc học Common Lisp vì lợi ích của việc học Common Lisp, nhưng vì lợi ích của việc tôi đã từng làm trong C ++ được thực hiện nhanh hơn và ít lỗi hơn.
Vì vậy, câu hỏi của tôi là tài nguyên tốt nhất (có thể là trang web, sách, bất cứ thứ gì) tập trung vào việc dạy cách sử dụng Common Lisp để thực hiện các tác vụ lập trình thông thường như
- Cách đọc tệp
- Cách đọc tệp, thay thế các từ trong tệp và ghi kết quả trở lại tệp
- Lặp lại các tệp trong một thư mục và các nội dung khác của hệ thống tệp
- Tương tác với một db SQL
- Thực hiện liên lạc qua ổ cắm
- Phân luồng cho những thứ như máy chủ web
- Tạo GUI
- Thực hiện các thao tác trên tệp nhị phân
- Viết trình phân tích cú pháp (không phải trình thông dịch cho Lisp trong Lisp, theo tôi hiểu nó giống như 5 dòng của Lisp)
- Tương tác với hệ điều hành (tức là những thứ được viết bằng C hoặc C ++) để thực hiện những thứ mà Lisp không thể làm được
- Cách viết phần mở rộng Lisp trong C (điều đó có thể không?)
- Nhúng một trình thông dịch lua (có thể không?)
Và cũng có một lưu ý ít thực tế hơn, đó là cách triển khai các cấu trúc dữ liệu phổ biến trong lisp như heap, stack, cây tìm kiếm nhị phân, v.v. Tuy nhiên, đó có thể chỉ là sử dụng các thao tác danh sách của Lisp như car
và cdr
theo đúng cách. Tôi không biết.
Tôi thực sự nghi ngờ rằng bất kỳ điều nào trong số này (ngoại trừ hai điều cuối cùng trong danh sách) là không thể với Lisp hoặc mọi người sẽ không yêu thích nó nhiều như vậy. Và những thứ nói trên mà tôi đã đọc đề cập đến rất nhiều phần mềm thế giới thực được viết bằng Lisp (lưu ý đến cửa hàng web Yahoo!).
Tuy nhiên, đã từng lập trình bằng ngôn ngữ mệnh lệnh ( ? ) Trước đây, tôi lo lắng sử dụng kiến thức mới mà tôi có được để viết các ứng dụng trong thế giới thực. Vậy cách nhanh nhất để học viết phần mềm thực hành với Lisp là gì?
Nhân tiện, tôi đã xem Lisp chung thực tế của Peter Seibel nhưng, theo đánh giá của TOC, nó chỉ đề cập đến một số điều tôi muốn học cách sử dụng Lisp để làm.
Một câu hỏi nữa nếu tôi có thể (xin lỗi nếu đây là kết hợp hai câu hỏi thành một), tôi có thể tìm tham chiếu đến các chức năng và công cụ của Lisp ở đâu?
Và tôi thực sự muốn thích Lisp.