Bất kỳ chương trình có thể được thực hiện cơ học?


13

Có thể xây dựng một mục đích cơ học duy nhất (không hoàn thành Turing) của Microsoft Word không? Có thể thực hiện những thứ như vòng lặp, hàm bậc nhất, toàn bộ các kỹ thuật lập trình không? Có thể bánh răng và các bộ phận cơ khí khác đại diện cho cấu trúc dữ liệu hoặc thậm chí các đối tượng chương trình? Tại một thời điểm nhất định, điều này đòi hỏi phải xây dựng một máy có mục đích chung Turing, hoặc mỗi chức năng, biến, v.v., có cấu trúc cơ học độc đáo của riêng mình dưới dạng bánh đà và / hoặc bánh răng, bánh răng, bạn có gì? Tóm lại, tôi tự hỏi nếu bất kỳ phần mềm nhất định trên một máy tính tiêu chuẩn có thể được biên dịch thành một kế hoạch chi tiết cơ học.


Tôi nghĩ, một cái gì đó chạy Microsoft Word thậm chí không cần chạy trên Turing Machine, vì tất cả các quy trình trong Word nên được biết là (có thể) chấm dứt (trừ khi có lỗi ofc), ngoài vòng lặp sự kiện chính.
Realz Slaw


1
Nếu điều này là có thể - có vẻ như có khả năng - thì có thể tạo ra một máy không hoàn chỉnh, hoạt động như một trình biên dịch, tạo bản thiết kế cho các máy khác từ mã nguồn. Máy móc có thể hoặc không thể tự hoàn thiện.
Nick Johnson

@Realz Slaw: không phải nếu bạn bao gồm I / O, macro VBA hoặc phần mở rộng. Ví dụ, tôi nghi ngờ Word sẽ khiếu nại nếu bạn cung cấp cho nó một tài liệu Word vô hạn. Có lẽ hệ điều hành cơ bản sẽ đạt đến giới hạn.
Revierpost

@reinierpost nhưng mỗi thói quen không cần phải hoàn thành; họ có thể chấm dứt hoặc chứng minh là không. Tức là nếu bạn cho nó ăn một tài liệu vô hạn, nó chắc chắn sẽ không chấm dứt. Quan điểm của tôi là hầu hết các chương trình mà chúng tôi tạo ra không phải sử dụng ngôn ngữ hoàn chỉnh Turing, bởi vì chúng tôi có thể giới hạn nó ở các chương trình mà chúng tôi có thể chứng minh chấm dứt, đưa ra dữ liệu không vô hạn và không chấm dứt nếu được cung cấp dữ liệu vô hạn; và nếu bạn có thể làm điều này, không có vấn đề gì với Vấn đề Ngừng. TLDR; nếu bạn không thể chứng minh thói quen của mình chấm dứt hay không, bạn là một lập trình viên tồi tệ.
Realz Slaw

Câu trả lời:


23

Vâng, đúng vậy. Đây là cách bạn làm điều đó:

Về cơ bản, bạn có thể biên dịch bất kỳ chương trình nào bạn muốn mạch. Xem ví dụ công việc của Dan Ghica và cộng tác viên của ông về Hình học tổng hợp, trong đó cho thấy cách biên dịch chương trình thành các mạch.

  1. Dân R. Ghica. Hình học tổng hợp: Một cách tiếp cận có cấu trúc để thiết kế VLSI
  2. Dan R. Ghica, Alex Smith. Hình học của Tổng hợp II: Từ các trò chơi đến các mạch không nhạy cảm
  3. Dan R. Ghica, Alex Smith. Hình học tổng hợp III: Quản lý tài nguyên thông qua suy luận kiểu.
  4. Dan R. Ghica, Alex Smith, Satnam Singh. Hình học tổng hợp IV: biên dịch đệ quy affine vào phần cứng tĩnh.

Mạch sau đó bật ra để xuất hiện trở lại trong kỹ thuật. John Baez đưa ra một bảng tương tự lớn về các khái niệm và tìm ra rất nhiều kết nối, trong Tìm kiếm 288-296 của Tuần này. Vì vậy, sơ đồ mạch mà trình biên dịch của Dan tạo ra có thể được khởi tạo thành hệ thống cơ hoặc thủy lực, nếu bạn thực sự muốn!

╔══════════════════════════════════════════════════════════════╗
║                 displacement  flow      momentum     effort  ║
╠══════════════════════════════════════════════════════════════╣
║ Mechanics      position      velocity  momentum     force    ║
║ (translation)                                                ║
║                                                              ║
║ Mechanics      angle         angular   angular      torque   ║
║ (rotation)                   velocity  momentum              ║
║                                                              ║
║ Electronics    charge        current   flux         voltage  ║
║                                        linkage               ║
║                                                              ║
║ Hydraulics     volume        flow      pressure     pressure ║
║                                        momentum              ║
╚══════════════════════════════════════════════════════════════╝
  1. http://math.ucr.edu/home/baez/week288.html
  2. http://math.ucr.edu/home/baez/week289.html
  3. http://math.ucr.edu/home/baez/week290.html
  4. http://math.ucr.edu/home/baez/week291.html
  5. http://math.ucr.edu/home/baez/week294.html
  6. http://math.ucr.edu/home/baez/week296.html

12
Hệ quả: bằng sáng chế phần mềm không có ý nghĩa.
András Salamon

1
Câu trả lời tuyệt vời cho một câu hỏi tôi hầu như không biết làm thế nào để hỏi. Cảm ơn các biểu đồ được thêm vào!
Alex Nye

5

Một ví dụ thực tế cho điều này là máy tính Tic Tac Toe được tạo ra từ Đồ chơi Tinker tại Bảo tàng Khoa học Boston (ban đầu được tạo bởi một nhóm sinh viên MIT). Tất nhiên, điều này đơn giản hơn nhiều so với Microsoft Word.

Đây là một bài viết năm 1989 từ Khoa học Mỹ mô tả nó.

Cũng có những máy được làm từ Turing Legos (lận này một chút vì nó sử dụng điện --- thực sự là một máy tính --- cho phong trào, nhưng tôi nghĩ rằng việc thiết kế có thể được sửa đổi để tránh điều này) kim loại phế liệu , và nhiều hơn nữa.


Tôi rất thích bài viết và máy lego, cảm ơn.
Alex Nye

1

Cố gắng giải quyết cụ thể ví dụ của bạn về việc tạo một trình soạn thảo trong phần cứng, đã có một máy tính thử nghiệm ban đầu được xây dựng để thực hiện cả hệ điều hành và trình soạn thảo hoàn toàn bằng phần cứng. Sau đó, trình soạn thảo đã được thay thế bằng phần mềm, điều này làm giảm đáng kể phần cứng cần thiết. Điều này đã được mô tả trong một cuốn sách về kiến ​​trúc và lịch sử máy tính. Thật không may, tôi đã quên tên và không tìm thấy từ khóa để theo dõi nguồn gốc.

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.