Trả lời

6

Chừng nào một ngôn ngữ là Turing complete, thuật toán bất kỳ có thể được thực hiện trong nó (theo định nghĩa của "thuật toán"). Nhưng như những người khác đã nói, ngôn ngữ chức năng có thể làm một số điều một cách thanh lịch hơn. (Chỉ cần nhìn vào Haskell. Thật là một ngôn ngữ đáng yêu.) Tôi cũng cho rằng có một lớp các vấn đề mà các ngôn ngữ OOP làm tốt hơn. (Theo tôi, GUI, mặc dù một số có thể không đồng ý.)

+0

Cảm ơn, Pavel. Tôi đã nghĩ đến việc nói "bất kỳ thuật toán tính toán nào" sau khi tôi viết nó, nhưng không bận tâm thay đổi nó. –

3

Không, tuy nhiên, ngôn ngữ chức năng có thể dẫn đến triển khai thanh lịch hơn cho thuật toán có thể khai thác các tính năng của ngôn ngữ như vậy. Ví dụ, cái yêu cầu độ sâu đệ quy lớn.

0

Như tôi đã hiểu, thuật toán như vậy sẽ phải được dịch thành một tập hợp các lệnh máy được thực hiện trên một số vi xử lý (cho dù bạn sử dụng ngôn ngữ biên dịch hay thông dịch). Và không có bộ vi xử lý hiện tại nào là 'chức năng'.
Trong thực tế, điều này dẫn đến thậm chí khẳng định rộng hơn: bất kỳ 'thuật toán chức năng' có thể được thực hiện trong C hoặc lắp ráp :)

+1

Ngôn ngữ chức năng đó được dịch thành tập lệnh bắt buộc không quan trọng. Một ngôn ngữ hoàn chỉnh Turing có thể mô phỏng bất kỳ ngôn ngữ Turing Complete nào khác. Bất kỳ thuật toán nào có thể chạy theo ngôn ngữ Turing Complete, có thể chạy trên bất kỳ ngôn ngữ Turing Complete nào khác. Điều này đảm bảo rằng tất cả "thuật toán chức năng" có thể được chạy trong "máy bắt buộc", và tất cả "thuật toán bắt buộc" có thể được chạy trong "máy chức năng". –

+0

Do đó, xác nhận thậm chí còn rộng hơn: "Bất kỳ thuật toán nào có thể được thực hiện bằng một ngôn ngữ Turing Complete, có thể được thực hiện bằng bất kỳ ngôn ngữ Turing Complete nào khác" –

+0

@Lie. Tôi biết rằng có rất nhiều lý thuyết xung quanh Turing Machine và 'proof' có thể được mở rộng tuy nhiên bạn muốn (ngay cả trong các lĩnh vực vật lý hạt nhân, lý thuyết xác suất hoặc kinh tế). Nhưng nó không làm cho lập luận 'tự chế' ít hợp lệ hơn. Thực tế, tôi muốn giữ nó ở mức 'thủ công'. –

Các vấn đề liên quan