Tôi đã đọc bài viết ở đây: http://www.paulgraham.com/avg.html và phần về "nghịch lý blub" đặc biệt thú vị. Là một người chủ yếu viết mã bằng c ++ nhưng tiếp xúc với các ngôn ngữ khác (chủ yếu là Haskell) Tôi nhận thấy một vài điều hữu ích trong các ngôn ngữ này khó có thể sao chép trong c ++. Câu hỏi chủ yếu dành cho những người thành thạo cả c ++ và một số ngôn ngữ khác, có một tính năng ngôn ngữ hay thành ngữ nào đó mà bạn sử dụng trong một ngôn ngữ khó có thể khái niệm hóa hoặc thực hiện nếu bạn chỉ viết bằng c ++?
Đặc biệt trích dẫn này đã thu hút sự chú ý của tôi:
Bằng cách cảm ứng, các lập trình viên duy nhất ở một vị trí để thấy tất cả sự khác biệt về sức mạnh giữa các ngôn ngữ khác nhau là những người hiểu ngôn ngữ mạnh nhất. (Đây có lẽ là ý nghĩa của Eric Raymond về việc Lisp biến bạn thành một lập trình viên giỏi hơn.) Bạn không thể tin vào ý kiến của người khác, vì nghịch lý Blub: họ hài lòng với bất kỳ ngôn ngữ nào họ sử dụng, bởi vì nó ra lệnh cách họ nghĩ về các chương trình.
Nếu hóa ra tôi tương đương với lập trình viên "Blub" nhờ sử dụng c ++ thì điều này đặt ra câu hỏi sau: Có bất kỳ khái niệm hay kỹ thuật hữu ích nào mà bạn gặp phải trong các ngôn ngữ khác mà bạn sẽ gặp khó khăn khi khái niệm hóa không? đã viết hoặc "suy nghĩ" trong c ++?
Ví dụ, mô hình lập trình logic được thấy trong các ngôn ngữ như Prolog và Mercury có thể được triển khai trong c ++ bằng thư viện castor nhưng cuối cùng tôi thấy rằng về mặt khái niệm tôi đang nghĩ về mã Prolog và dịch sang c ++ tương đương khi sử dụng. Như một cách để mở rộng kiến thức lập trình của tôi, tôi đang cố gắng tìm hiểu xem có những ví dụ tương tự khác về thành ngữ hữu ích / mạnh mẽ được thể hiện hiệu quả hơn trong các ngôn ngữ khác mà tôi có thể không biết là nhà phát triển c ++. Một ví dụ khác xuất hiện trong tâm trí là hệ thống macro không thể thiếu, việc tạo mã chương trình từ bên trong chương trình dường như có nhiều lợi ích cho một số vấn đề. Điều này có vẻ khó thực hiện và suy nghĩ từ bên trong c ++.
Câu hỏi này không nhằm mục đích trở thành một cuộc tranh luận "c ++ vs lisp" hay bất kỳ cuộc tranh luận kiểu chiến tranh ngôn ngữ nào. Đặt một câu hỏi như thế này là cách duy nhất tôi có thể thấy có thể để tìm hiểu về những điều mà tôi không biết tôi không biết.
there are things that other languages can do that Lisp can't
- Không thể, vì Lisp đã hoàn thành Turing. Có lẽ bạn muốn nói rằng có một số điều không thực tế để làm ở Lisp? Tôi có thể nói điều tương tự về bất kỳ ngôn ngữ lập trình nào .