Un programme peut-il être mis en œuvre mécaniquement?


13

Est-il possible de construire une implémentation mécanique à but unique (non complète de Turing) de, disons, Microsoft Word? Est-il possible d'implémenter des choses comme les itérateurs, les fonctions de premier ordre, toute la gamme des techniques de programmation? Les engrenages et autres pièces mécaniques pourraient-ils représenter des structures de données ou même des objets de programme? À un certain moment, cela nécessite-t-il de construire une machine équivalente à Turing à usage général, ou chaque fonction, variable, etc., peut-elle avoir sa propre construction mécanique unique sous la forme de volants et / ou d'engrenages, de cliquets, qu'avez-vous? En résumé, je me demande si un logiciel donné sur un ordinateur standard pourrait être compilé sur un modèle mécanique.


Je pense que quelque chose qui exécute Microsoft Word n'a même pas besoin de s'exécuter sur une machine de Turing, car toutes les procédures dans Word devraient être connues pour se terminer (de manière probable) (sauf s'il y a un bogue ofc), à l'exception de la boucle d'événement principale.
Realz Slaw


1
Si cela est possible - ce qui semble probable - alors il devrait être possible de créer une machine non-turing-complete qui agit comme un compilateur, créant des plans pour d'autres machines à partir du code source. Machines qui peuvent ou non être elles-mêmes complètes.
Nick Johnson

@Realz Slaw: pas si vous incluez des E / S, des macros VBA ou des extensions. Par exemple, je doute que Word se plaindrait si vous lui fournissiez un document Word infini. C'est probablement le système d'exploitation sous-jacent qui atteindrait une limite.
reinierpost

@reinierpost mais chaque routine n'a pas besoin d'être complète; ils prendraient soit fin de façon prouvable, soit ne le seraient pas. C'est-à-dire que si vous lui fournissiez un document infini, il ne serait probablement pas terminé. Mon point était que la plupart des programmes que nous faisons n'ont pas à utiliser un langage complet de Turing, parce que nous pouvons le limiter aux programmes dont nous pouvons prouver la fin, en fonction de données non infinies, et ne se termine pas s'ils reçoivent des données infinies; et si vous pouvez le faire, il n'y a aucun problème avec le problème d'arrêt. TLDR; si vous ne pouvez pas prouver que vos routines se terminent ou non, vous êtes un terrible programmeur.
Realz Slaw

Réponses:


23

Oui, ça l'est. Voici comment procéder:

Vous pouvez compiler pratiquement n'importe quel programme que vous aimez sur les circuits. Voir par exemple le travail de Dan Ghica et de ses collaborateurs sur la géométrie de la synthèse, qui montre comment compiler des programmes en circuits.

  1. Dan R. Ghica. Géométrie de synthèse: une approche structurée de la conception VLSI
  2. Dan R. Ghica, Alex Smith. Géométrie de synthèse II: des jeux aux circuits insensibles aux retards
  3. Dan R. Ghica, Alex Smith. Géométrie de synthèse III: gestion des ressources par inférence de type.
  4. Dan R. Ghica, Alex Smith, Satnam Singh. Géométrie de synthèse IV: compilation de la récursivité affine en matériel statique.

Les circuits réapparaissent alors encore et encore dans l'ingénierie. John Baez donne un grand tableau d'analogies de concepts et élabore de nombreuses connexions dans les résultats de cette semaine 288-296. Ainsi, les schémas de circuits générés par le compilateur de Dan pourraient être instanciés sous forme de systèmes mécaniques ou hydrauliques, si vous le vouliez vraiment!

╔══════════════════════════════════════════════════════════════╗
║                 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
Corollaire: les brevets logiciels n'ont aucun sens.
András Salamon

1
Fantastique réponse à une question que je savais à peine poser. Merci pour le graphique ajouté!
Alex Nye

5

Un exemple pratique de ceci est l'ordinateur Tic Tac Toe fabriqué à partir de Tinker Toys au Boston Science Museum (fabriqué à l'origine par une équipe d'étudiants du MIT). Bien sûr, c'est beaucoup plus simple que Microsoft Word.

Voici un article de 1989 de Scientific American le décrivant.

Il y a également eu des machines Turing fabriquées à partir de legos (cela triche un peu parce qu'il utilise l'électricité --- en fait un ordinateur --- pour le mouvement, mais je pense que la conception pourrait être modifiée pour éviter cela) de la ferraille , et plus encore.


J'ai apprécié l'article et la machine lego, merci.
Alex Nye

1

En essayant de traiter spécifiquement votre exemple de création d'un éditeur en matériel, il y a eu un premier ordinateur expérimental construit qui implémentait à la fois le système d'exploitation et l'éditeur entièrement en matériel. Plus tard, l'éditeur a été remplacé par un logiciel, ce qui a considérablement réduit le matériel nécessaire. Cela a été décrit dans un livre sur l'architecture et l'histoire de l'ordinateur. Malheureusement, j'ai oublié le nom et je n'ai pas trouvé les mots clés pour retrouver la source d'origine.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.