Est-ce qu'une telle mise en œuvre existe-t-elle, qui vous permet de tirer pleinement parti des processeurs multicœurs? P>
4 Réponses :
apparemment. Je ne sais pas grand chose à ce sujet, voir Processeurs multicœurs, première programmation et relation entre logiciel et silicium em> (publié 2008-09-24). P>
Vous voulez prendre "avantage total" de processeurs multicœurs. L'excuse pour la programmation multicœur est que vous avez besoin de performance (vous pouvez faire de la multiplication multipliée par un seul processeur). P>
Dans ce cas, je ne pense pas que j'utilise, car il s'agit fondamentalement d'un interprète (oui, assez rapide).
Pire, pour les processeurs modernes, chaque fois que l'envoi de mots est un appel indirect est probablement une pause de pipeline, ce qui slève réellement la performance du processeur, et une exécution de mots fonctionne sur des éléments de pile au lieu de registres. Donc, en utilisant, vous abandonnez un avantage informatique par rapport à C ou C ++ ou même FORTRAN. Ce que cela signifie que vous êtes presque gaunete de devoir utiliser plus d'un processeur d'accord pour correspondre aux performances d'une langue plus traditionnellement codée et compilée. Pourquoi commencer par un inconvénient? P>
Les gars qui veulent faire MP avec Python Puzzle me pour la même raison. P>
Souhaitez-vous vraiment classer comme un interprète? C'est sûrement à vous de voir ce qui est compilé et ce qui est interprété?
@Sheepez: Oui, il ne génère pas d'instructions de la machine, vous ne pouvez donc pas appeler un compilateur de code natif. En fait, ce qu'il générera n'est pas très compliqué: pour chaque mot, stockez un pointeur correspondant à ce fort mot. AFAIK, cela compilera toute séquence de mot; Les chèques sémantiques sont entièrement laissés à l'exécution du temps. Qui correspond à ce que les interprètes font généralement.
Il y a en fait des implémentations qui compilent des mots en séquences d'instructions d'appel natif. Certains seront même en ligne des mots spécifiques.
Je devrais vraiment vous traiter à un -1 pour cette réponse, mais je suis gentil aujourd'hui. Vous confondez la langue avec la mise en œuvre habituelle d'un interprète de code fileté indirect. C'est une erreur très courante. Il n'y a aucune raison de ne pas être mises en œuvre avec un compilateur traditionnel, effectuant des optimisations traditionnelles, mettant en cache les premiers emplacements de pile dans des registres dédiés. (Et notez que l'architecture X86 de Register-Smart-Smart, y compris des pièces multicores, passe déjà beaucoup de son temps à rebondir des éléments de pile autour, même sur C / C ++ ou même Fortran.)
@John: OP a demandé s'il y avait une mise en œuvre qui le laisserait passer parallèlement efficacement. Ma réponse: probablement non, car la plupart des implémentations sont traditionnelles, et celles-ci sont désastrables pour la programmation parallèle. Si vous connaissez une seule implémentation que vous décrivez les propriétés agréables, et que vous pourriez être utilisée efficacement par OP, vous êtes invités à la poster comme une réponse directe à la question de l'OP. Si vous n'en connaissez pas, alors je pense que ma réponse est raisonnable. Les programmes parallèles réussis ne sont pas sur ce qui pourrait être théoriquement possible.
Il existe d'autres implémentations qui s'exécutent sur le métal nu qui compilent le code de la machine, et si vous faites un peu de recherche avant de commencer à taper que vous verrez cela en fait: P>
Oups désolé je aurais dû simplement ajouter un commentaire ci-dessus ... ne voulait pas dire une réponse. Je ne suis pas en fait une sorte de genre de gars.
Je ne pense pas que cela aborde la question?
J'ai récemment pris conscience de Colorforth qui est la dernière invention de M. Moore (pas une conformité conforme) et est Utilisé sur son nouveau multicore Chips . P>
Il comporte 144 petits ordinateurs d'extrémité sur une seule puce (et aucune horloge!) Pour une efficacité élevée. P>
EDIT: En fait, Colorforth est l'IDE utilisé pour les copeaux. La saveur de (couleur) en cours d'exécution sur la puce est appelée Arrayforth. P>
Maintenant Les tableaux verts ont ouvert Institut Arrayforth . Jusqu'à présent, il n'y a qu'un seul cours d'introduction à suivre; Mais plus est en cours de développement.
La programmation multicœur est possible avec l'IFORTH. Il existe des implémentations 32/64 bits qui fonctionnent sur Win7, Linux et OS X. IForth génèrent du code natif: http://home.iae.nl/user/mhx/i4faq.html p>