web-dev-qa-db-fra.com

Machine de Turing vs machine Von Neumann

Contexte

architecture Von-Neumann décrit l'ordinateur à programme enregistré où les instructions et les données sont stockées en mémoire et la machine fonctionne en changeant son état interne, c'est-à-dire qu'une instruction opère sur certaines données et modifie les données. Donc, intrinsèquement, l'état est maintenu dans le système.

Architecture de la machine de Turing fonctionne en manipulant des symboles sur une bande. C'est-à-dire qu'il existe une bande avec un nombre infini de fentes, et à tout moment, la machine de Turing se trouve dans une fente particulière. En fonction du symbole lu à cet emplacement, la machine peut changer le symbole et passer à un emplacement différent. Tout cela est déterministe.


Des questions

  1. Existe-t-il une relation entre ces deux modèles? Le modèle Von Neuman était-il basé ou inspiré par le modèle Turing?

  2. Peut-on dire que le modèle de Turing est un sur-ensemble du modèle de Von Newman?

  3. La programmation fonctionnelle s'intègre-t-elle dans le modèle Turing? Si c'est le cas, comment? Je suppose que la programmation fonctionnelle ne se prête pas bien au modèle Von Neuman.

62
Santhosh

Les machines de Turing sont des concepts théoriques inventés pour explorer mathématiquement le domaine des problèmes calculables et pour obtenir des moyens de décrire ces calculs.

L'architecture Von-Neumann est une architecture pour construire des ordinateurs réels (qui implémentent ce que la machine de Turing décrit théoriquement).

La programmation fonctionnelle est basée sur le lambda-calcul , qui est une autre méthode de description des calculs ou - plus précisément - des fonctions calculables. Bien qu'il utilise une approche complètement différente, il est tout aussi puissant pour la machine de Turing (on dit qu'il est turing complet ).

Chaque programme lambda-calcul (terme) T est écrit simplement en utilisant une combinaison de

  • des variables comme x
  • fonctions anonymes comme λx. T
  • applications de fonction T T

Bien qu'il soit apatride, c'est suffisant pour chaque calcul qu'un ordinateur peut faire. Les machines de Turing et les termes lambda peuvent émuler les uns les autres, et un ordinateur Von-Neumann peut exécuter les deux (à part des restrictions techniques comme fournir un stockage infini, la machine pourrait exiger).

Mais en raison de leur nature sans état et plus abstraite, les programmes fonctionnels pourraient être moins efficaces et moins "intuitifs" sur les ordinateurs Von-Neumann par rapport aux programmes impératifs qui suivent c'est un style de binaire, de mémoire et de mise à jour.

47
Dario

Généralement, on se réfère à l'architecture Von Neumann , contrairement à l'architecture Harvard . Le premier a du code et des données stockés de la même manière, tandis que le second a des chemins de mémoire et de bus séparés pour le code et les données. Tous les PC de bureau modernes sont Von Neumann, la plupart des microcontrôleurs sont Harvard. Les deux sont des exemples de conceptions du monde réel qui tentent d'émuler une machine de Turing théorique (ce qui est impossible car une vraie machine de Turing nécessite une mémoire infinie).

10
rmeador

Je ne sais pas quelle relation historique existe entre les machines de Turing et les architectures von Neuman. Je suis sûr, cependant, que von Neuman était au courant des machines Turing lorsqu'il a développé l'architecture von Neuman.

En ce qui concerne la capacité de calcul, cependant, les machines de Turing et les machines de von Neuman sont équivalentes. L'un ou l'autre peut émuler l'autre (IIRC, émuler un programme von Neuman sur une machine de Turing est une opération O (n ^ 6)). La programmation fonctionnelle, sous la forme du calcul lambda, est également équivalente. En fait, tous les cadres de calcul connus au moins aussi puissants que les machines de Turing sont équivalents:

  • Machines de Turing
  • Calcul lambda (programmation fonctionnelle)
  • machines von Neuman
  • Fonctions récursives partielles

Il n'y a aucune différence dans l'ensemble des fonctions qui peuvent être calculées avec l'un de ces modèles.

La programmation fonctionnelle est dérivée du calcul lambda, elle ne correspond donc pas directement aux machines Turing ou von Nemuan. Chacun d'eux peut exécuter des programmes fonctionnels, cependant, via l'émulation. Je pense que le mappage pour les machines Turing est probablement plus fastidieux que le mappage pour les machines von Neuman, donc ma réponse à la 3ème question serait "non, en fait c'est pire".

4

Le modèle Turing définit les capacités de calcul sans entrer dans l'implémentation, personne ne créera jamais d'ordinateur qui ressemblera littéralement à Turing Machine. (Sauf les passionnés http://www.youtube.com/watch?v=E3keLeMwfHY ).

Le modèle de Turing n'est pas une architecture .

Von Neuman explique comment construire des ordinateurs. Il ne dit rien sur les capacités de calcul. Selon le jeu d'instructions, l'ordinateur produit peut ou non être Turing complet (les moyens peuvent résoudre les mêmes tâches que Turing Machine)

La programmation fonctionnelle (lambda calcul) est un autre modèle de calcul complet de Turing mais qui ne peut pas être intégré nativement dans l'architecture de Von Neumann.

4
Andrey

Le "modèle" de Turing n'est pas du tout un modèle architectural. C'était juste une machine inexistante que Turing a supposé servir de véhicule pour sa preuve du problème de décision .

0
Dinah