181 votes

Quand quelqu'un écrit un nouveau langage de programmation, qu'est-ce qu'il écrit IN?

Veuillez excuser mon ignorance. Je suis tenté sa chance en PHP et obtenir mes pieds mouillés de la navigation de la SORTE, et se sentent obligés de poser une question que je me le demandais depuis des années:

Lorsque vous écrivez un tout nouveau langage de programmation, que pensez-vous de l'écrire ?

C'est probablement ce qui a l'air vraiment ridicule à tous les programmeurs, pour qui j'ai un immense respect, mais c'est un embarrassant de poulet et de l'oeuf chose pour moi. Que faites-vous? Dire à vous-même aujourd'Hui, je vais inventer une nouvelle langue! et puis le feu... le bloc-notes? Sont tous les compilateurs construit précédemment sur les langues existantes, de telle sorte que si l'on dérange, on pourrait faire un tableau de tous les langages de programmation jamais conçu sur un monstrueux ramification de l'arbre qui a finalement mis à la terre à... je ne sais pas, quelque chose de vieux?

Avec ma faible intelligence, je trouve cela fascinant... s'il vous Plaît, m'éduquer!

219voto

Matthew Points 586

Ce n'est pas une question stupide. C'est une excellente question.

Comme déjà répondu à la réponse courte est "une Autre langue".

Bien que conduit à certaines questions intéressantes? Ce que si c'est la première langue écrite pour votre élément matériel particulier? Un réel problème pour les personnes qui travaillent sur les systèmes embarqués. Comme déjà répondu "d'une langue sur un autre ordinateur". En effet, certains appareils embarqués ne sera jamais un compilateur, leurs programmes seront toujours compilées sur un autre ordinateur.

Mais vous pouvez le repousser encore plus loin. Quel est le premier des programmes de jamais écrit?

Eh bien la première compilateurs de "haut niveau de langues" aurait été écrit dans ce qui est appelé la "langue de l'assembly". Le langage assembleur est un langage où chaque instruction dans la langue correspond à une instruction du PROCESSEUR. Son très faible niveau de langue et extrêmement détaillé et très intensive en main pour écrire.

Mais même la rédaction de l'assemblée de la langue nécessite un programme appelé un assembleur pour convertir le langage d'assemblage en "langage machine". Nous revenons plus loin. La première assembleurs ont été écrits dans le "code machine". Un programme entièrement composé de nombres binaires qui sont un direct-to-one correspondance avec le langage brut de l'ordinateur lui-même.

Mais il n'est toujours pas la fin. Même un fichier avec juste des chiffres bruts dans il toujours des besoins de traduction. Vous avez encore besoin pour obtenir ces chiffres bruts dans un fichier dans l'ordinateur.

Eh bien croyez le ou pas, les premiers ordinateurs ont une ligne de commutateurs sur la face d'eux. Vous avez retourné les commutateurs jusqu'à ce qu'ils représentaient un nombre binaire, puis vous taper un autre interrupteur et que chargé seul numéro dans la mémoire des ordinateurs. Ensuite, vous avez continué à aller feuilleter commuté jusqu'à ce que vous avait chargé un minimum de programme d'ordinateur qui peut lire les programmes à partir de fichiers du disque ou des cartes perforées. Vous effleuré un autre interrupteur et il a commencé le programme en cours d'exécution. Quand je suis allé à l'université dans les années 80, j'ai vu des ordinateurs qui ont cette capacité, mais n'a jamais été donnée au travail de chargement dans un programme avec les commutateurs.

Et même plus tôt que les programmes d'ordinateur câblée avec des panneaux de prise!

25voto

Prof. Falken Points 10242

La réponse la plus commune est - C. La plupart des langues sont implémentés en C ou dans un hybride de C avec des rappels et un "analyseur lexical" comme Flex et analyseur générateur comme YACC. Ce sont des langues qui sont utilisés pour un seul but - pour décrire la syntaxe d'une autre langue. Parfois, quand il s'agit de langages compilés, ils sont d'abord mis en œuvre dans C. Alors que la première version de la langue est utilisée pour créer une nouvelle version, et ainsi de suite. (Comme Haskell.)

17voto

RichardOD Points 19942

Beaucoup de langues sont bootstrap - c'est écrit en eux-mêmes. Pourquoi vous voulez faire cela, il est souvent une bonne idée de manger votre propre dogfood.

L'article de wikipédia je me réfère à la traite de la poule et de l'œuf question. Je pense que vous trouverez qu'il est tout à fait intéressant.

12voto

silentbicycle Points 868

Assez beaucoup n'importe quelle langue, mais à l'aide de celui qui est adapté pour travailler avec des graphiques et d'autres structures de données complexes va rendre les choses beaucoup plus facile. La Production de compilateurs sont souvent écrits en C ou en C++ pour des raisons de performances, mais les langues comme OCaml, SML, Prolog et Lisp sont sans doute mieux pour le prototypage de la langue.

Il y a aussi plusieurs "petites langues", utilisé dans le langage de conception. Lex et yacc sont utilisés pour la spécification de la syntaxe et de la grammaire, par exemple, et ils compiler C. (Il y a des ports pour d'autres langues, telles que ocamllex / ocamlyacc, et beaucoup d'autres outils similaires.)

Comme cas particulier, de nouveaux dialectes Lisp sont souvent réalisés dans des implémentations Lisp, car ils peuvent se greffer sur la plupart de la même infrastructure. L'écriture d'un interpréteur Scheme peut être fait dans le Régime en vertu d'une page de code, à quel point on peut facilement ajouter de nouvelles fonctionnalités.

Fondamentalement, les compilateurs sont des programmes qui lisent dans quelque chose et de le traduire en quelque chose d'autre de conversion de LaTeX source DVI, la conversion de code C à l'assemblée puis au langage machine, la conversion d'une grammaire de la spécification code C pour un analyseur syntaxique, etc. Son concepteur spécifie la structure du format de la source (l'analyse), quelles sont les structures veux dire, comment simplifier les données (optimisation), et le type de sortie à générer. Les interprètes de lire la source et de l'exécuter directement. (Les interprètes sont généralement plus simples à écrire, mais beaucoup plus lentement.)

4voto

Kaivosukeltaja Points 6219

Généralement, vous pouvez utiliser à peu près langue que vous aimez. PHP a été écrit en C, par exemple. Si vous n’avez aucun accès à n’importe quel compilateur que ce soit, vous allez devoir recourir à l’écriture de langage d’assemblage et de compilation pour code de machine à la main.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X