Maison > développement back-end > Golang > le corps du texte

Dans quoi est écrit le compilateur Golang ?

(*-*)浩
Libérer: 2019-12-27 14:27:02
original
3143 Les gens l'ont consulté

Dans quoi est écrit le compilateur Golang ?

Dans quel langage le compilateur de Golang est-il écrit ?

Cela ressemble à un problème de « poule et œuf », mais ce n'est pas le cas. (Apprentissage recommandé : GO )

La clé de ce problème est de comprendre que le compilateur lui-même est un programme et que sa fonction est de traduire le code source en un exécutable informatique programme.

Pour les langages locaux tels que C/C++, Go et Rust, le programme cible qu'ils compilent et génèrent est le programme exécutable local de la plateforme cible. Par exemple, si vous écrivez Hello World dans ces trois langues, le résultat de la compilation sous la plateforme Windows doit être un fichier .exe. Ces fichiers .exe ne contiennent aucune information sur la langue source.

Windows ne sait pas quand les exécuter et n'a pas non plus besoin de savoir dans quelle langue ces fichiers .exe ont été écrits avant la compilation. Il lui suffit de les charger en mémoire et d'exécuter les instructions phrase par phrase.

Il en va de même pour les programmes de compilation.

Si vous inventez un nouveau langage CNifeLang, vous devez d'abord écrire un compilateur CNifeLang dans un langage existant, par exemple, utiliser Golang

Vous, j'ai écrit un compilateur CNifeLang en Golang ; , qui peut compiler avec succès n'importe quel code source CNifeLang légal dans un programme cible équivalent.

Ensuite, écrivez un programme en utilisant CNifeLang, qui a la même fonction que le compilateur que vous avez écrit dans Golang. Utilisez le compilateur implémenté dans Golang pour compiler le programme, et vous obtiendrez un compilateur CNifeLang implémenté dans CNifeLang.

Étant donné que la fonction de ce programme est exactement la même que celle du compilateur écrit en Golang, vous pouvez utiliser ce compilateur pour compiler CNifeLang, afin que CNifeLang implémente le bootstrap.

Si le sujet a étudié le cours sur les principes de la compilation, vous constaterez que la compilation n'a rien à voir avec les langages de programmation. Elle dispose d'un ensemble complet et mature de méthodes de fonctionnement. Vous pouvez utiliser n'importe quel langage Turing-complet pour. écrivez un compilateur pour n'importe quel langage formel, et il existe des méthodes mathématiques strictes pour prouver que le compilateur que vous écrivez est correct.

Nos langages de programmation courants ont essentiellement implémenté le bootstrapping, qui est l'un des signes de la maturité d'un langage de programmation. Le compilateur étant un projet complexe, il dispose également d'un système d'évaluation mature. Être capable d'écrire un compilateur mature, utilisable et efficace pour ce langage signifie que le langage est prêt à être utilisé.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal