2009-03-29 20 views
12

Tôi tự hỏi liệu MATLAB có phải là Turing complete (= tính toán phổ dụng, tức là "nếu nó có thể được sử dụng để mô phỏng bất kỳ máy Turing một lần nào") không?Tôi tự hỏi liệu MATLAB là Turing hoàn thành (tính toán phổ quát)?

+0

Tôi đã viết lại câu hỏi của mình để truyền tải những gì tôi thực sự muốn nói. –

+1

Tại sao không thực hiện một máy Turing ở Matlab để chứng minh nó cho chính mình? – nibot

+0

Lưu ý rằng máy Turing thực sự yêu cầu băng vô hạn, vì vậy tôi nghĩ, nói đúng, mọi ngôn ngữ chỉ có thể là "Turing complete" miễn là chúng tôi giả định một lượng lớn bộ nhớ tùy ý. – nibot

Trả lời

38

Turing hoàn thành thực sự là một thanh khá thấp cho các ngôn ngữ trong thế giới thực. Theo Wikipedia (tôi nhấn mạnh):

Để hiển thị rằng cái gì là Turing hoàn tất, nó là đủ để chứng minh rằng nó có thể được sử dụng để mô phỏng một số Turing hệ thống hoàn chỉnh. Ví dụ, một ngôn ngữ bắt buộc là Turing hoàn chỉnh nếu nó có có điều kiện nhánh (ví dụ, "nếu" và "goto" báo cáo, hoặc một "chi nhánh nếu không" hướng dẫn. Xem OISC) và khả năng thay đổi bộ nhớ tùy ý vị trí (ví dụ: khả năng duy trì số lượng tùy ý biến). Vì điều này hầu như luôn xảy ra, hầu hết nếu không phải tất cả các ngôn ngữ mệnh lệnh đều được hoàn tất nếu chúng tôi bỏ qua bất kỳ giới hạn nào của bộ nhớ hữu hạn.

Ngoài ra, MATLAB có nhiều tính năng bạn mong đợi từ tương đối hiện đại 3GL/4GL. Nó hoàn chỉnh với một VM, I/O, cấu trúc giao diện người dùng, toán tử toán học (rõ ràng), kiểu dữ liệu, hàm do người dùng định nghĩa, vv Bạn thậm chí có thể cung cấp các chương trình Matlab bên ngoài môi trường Matlab.

Lưu ý rằng có hay không một ngôn ngữ tốt là một câu hỏi hoàn toàn khác.

+0

Và u cũng có thể sử dụng libs matlab bên ngoài Matlab – Rodrigo

+0

nhưng nó cũng sẽ có thể viết một "trình biên dịch" MATLAB hoàn toàn trong MATLAB, hoặc viết lại MATLAB chính nó trong MATLAB tương ứng? – karsten

+0

@karsten tất nhiên. Tôi không thể tưởng tượng một điều như vậy là rất thực tế, nhưng tôi không thấy lý do tại sao nó sẽ không thể. –

3

Tôi giả sử bạn phân biệt giữa ngôn ngữ lập trình và ngôn ngữ kịch bản, và vì bản chất của MATLAB nó xuất hiện như một ngôn ngữ kịch bản? Nếu đây là trường hợp, ý kiến ​​của bạn có thể phụ thuộc vào những gì bạn xem xét một ngôn ngữ lập trình.

Tôi tin rằng MATLAB là Turing-hoàn chỉnh và có một cú pháp hợp lý chặt chẽ và có thể sử dụng, vì vậy tôi muốn gọi nó là một ngôn ngữ lập trình. Đồng thời, mặc dù csh có lẽ là turing-complete, nhưng nó rất đáng kể để chương trình trong đó tôi muốn gọi nó là một ngôn ngữ kịch bản.

+0

Đối số "lập trình so với tập lệnh" có thể phức tạp hơn đối với MATLAB vì nó rút ra sự phân biệt giữa "tập lệnh" và "tệp m" (tức là "hàm"). – gnovice

+1

csh = c shell, một trong các ngôn ngữ kịch bản lệnh shell thường được tìm thấy trên linux, unix, bsd, v.v. –

+1

lol, còn ksh thì sao? k sắc nét ...:) –

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