Chúng ta có thể biểu diễn tất cả các chương trình máy tính dưới dạng biểu đồ không?


7

Tôi đã suy nghĩ vào một ngày khác, và tôi nhận ra rằng tất cả các chương trình máy tính dường như có thể biểu diễn dưới dạng biểu đồ (ví dụ cây cú pháp trừu tượng) hoặc, khi biểu thức chung được kết hợp, biểu đồ cú pháp trừu tượng.

Tôi nhận thấy rằng có lẽ bất kỳ chương trình máy tính nào cũng có thể được biểu diễn dưới dạng một trong những biểu đồ + ngữ nghĩa đánh giá kèm theo nó. Tôi tò mò liệu có ai biết điều này có đúng với máy turing không (tôi giả sử bạn có thể có được một biểu đồ vô hạn tiềm năng, nhưng đây là toán học nên không sao). Tôi đã suy nghĩ về nó và rất nhiều thứ như các hệ thống loại mạnh và rất phù hợp với sự trừu tượng này (chúng áp đặt các ràng buộc về cấu trúc trên biểu đồ). Thậm chí, bạn có thể xem xét hệ thống loại chương trình của riêng mình và biểu thị đó là một biểu đồ + ngữ nghĩa đánh giá khác nhau hoạt động trên biểu đồ chương trình ...

Chỉ tò mò liệu đây có phải là một sự tương đương được biết đến hay không.


Đây là một khái niệm khá cơ bản để tối ưu hóa thiết kế trình biên dịch.
keshlam

1
Tôi có thể biểu diễn bất kỳ phương trình toán học bằng đồ thị. Điểm là gì?
Val

một câu trả lời khá kỳ quái: bước đi ngẫu nhiên lượng tử thời gian liên tục được biết là có khả năng tính toán phổ quát - thực tế là máy tính lượng tử đáng tin cậy cũng vậy. ngay cả các sơ đồ mạch là các đồ thị kỹ thuật với các đỉnh đóng vai trò là các hàm và chúng cũng có khả năng tính toán phổ quát. không hoàn toàn như những gì bạn nghĩ, có vẻ như :)
diễn ra vào

Câu trả lời:


10

Tôi không biết nếu đó là một sự tương đương đặc biệt nổi tiếng, nhưng nó khá đơn giản khi bạn nghĩ về nó.

Máy Turing được biết là tương đương với Công cụ Lambda (chưa được đánh dấu). Luận án Church-Turing đề xuất rằng đây là hình thức tính toán mạnh mẽ nhất.

Công cụ tính toán Lambda là một hệ thống viết lại thuật ngữ được định nghĩa cú pháp. Về cơ bản, nó là một ngôn ngữ lập trình rất đơn giản. Vì vậy, nó có thể được phân tích cú pháp thành một cây cú pháp trừu tượng (biểu đồ).

Vì vậy chúng tôi có:

  1. Mỗi chương trình máy tính đều có thể biểu diễn trong phép tính lambda chưa được đánh dấu.
  2. Mỗi chương trình tính toán lambda có thể được phân tích cú pháp thành một cây cú pháp trừu tượng

Điều này có nghĩa là mọi chương trình máy tính có thể được biểu diễn dưới dạng cây cú pháp trừu tượng Lambda.

Những cây này có thể không có nhiều tính chất thú vị. Ví dụ, chúng chắc chắn không phải là duy nhất, tức là hai cây khác nhau có thể thực hiện các tính toán giống hệt nhau.


1
Bạn cũng có thể sử dụng ngôn ngữ lập trình Turing-hoàn thành mục đích chung (tốt nhất là có cấu trúc). Ngoài ra, trong các chương trình phân tích tĩnh được biểu diễn dưới dạng biểu đồ với các chu kỳ.
bellpeace

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.