0

je suis en train de lire un livre sur la conception du compilateur et il y a une partie dans ce qui dit,Cette affirmation concernant les langages de programmation fonctionnels est-elle correcte?

La principale différence dans les compilateurs de langues différentes concerne le code généré par eux. En général, on peut dire que les compilateurs pour les langages impératifs et orientés objet génèrent le code en langage assembleur; tandis que les compilateurs de langage fonctionnel génèrent en C ou en C++.

La dernière partie à propos de C/C++ est-elle correcte? Je n'ai rien trouvé à travers une recherche sur Google alors je demande ici.

+1

Oui, C est un format intermédiaire populaire pour les langages de plus haut niveau car il existe des compilateurs C pour chaque architecture. De http://yosefk.com/blog/c-as-an-intermediate-language.html: "* Il est extrêmement portable, il compile en un instant, optimise bien, et vous obtenez l'interopérabilité avec des tas de choses. *" – Bergi

+2

C'est [pas seulement les langages fonctionnels] (http://stackoverflow.com/questions/6498850/programming-languages-that-compile-into-cc-source). Cependant, les langages utilisant le paradigme fonctionnel sont généralement de plus haut niveau, donc vous les trouverez plus probablement dans cette catégorie. – Bergi

+2

Voir aussi le doublet inter-site [Quand est-il logique de compiler d'abord ma propre langue vers le code C?] (Http://softwareengineering.stackexchange.com/q/257868/66652) sur [SoftwareEngineering.SE] – Bergi

Répondre

5

La dernière partie à propos de C/C++ est-elle correcte?

Non, ce n'est pas le cas.

Certaines langues sont compilées en C, mais ce n'est pas spécifique aux langages fonctionnels. Si cela est plus courant parmi les langages fonctionnels que dans les langages fonctionnels, ce n'est certainement pas le cas dans la mesure où l'on pourrait appeler cela une propriété des langages fonctionnels.

En outre, ce n'est certainement pas le cas que la plupart des langages de programmation fonctionnelle du monde réel sont compilés en C (par leur implémentation officielle et/ou la plus utilisée). Si je liste les dix premiers langages de programmation/implémentations fonctionnels auxquels je peux penser (Haskell (GHC, Hugs), OCaml, F #, Scala, Clojure, Racket, Common Lisp (SBCL, CLisp)), aucun d'entre eux ne compile en C (pour le meilleur de ma connaissance). À un moment donné, GHC avait un backend C, mais cela a été abandonné.

Deux langages, auxquels je peux penser, dont les implémentations primaires compilent en C sont Vala et Haxe, qui ne sont pas des langages fonctionnels. Dans l'un des fils liés, Chicken Scheme a été mentionné. C'est donc une implémentation relativement bien connue qui utilise C. Cela ne suffit pas à justifier l'affirmation selon laquelle c'est «généralement» le cas.

+0

Mon compilateur de langage fonctionnel émet LLVM-IR. –