La norme officielle est disponible sur le site de l'ISO. Le site est d’ailleurs bien fait, puisque tu peux aussi voir qu’il y a eu des amendements à cette norme. Comme j’imagine que tu n’as pas d’argent pour acheter ça, sache que tu peux lire librement les épreuves finales (final draft en anglais), qui est normalement identique en terme de contenu (correction mineures de mise en page, typographie, orthographe, etc). Il y a des liens sur cette page pour accéder à ces drafts.
Ce genre de choses est d’ailleurs vrai pour beaucoup de normes : la version officielle est payante, mais on trouve très souvent le draft. Garde ça en tête quand tu cherches ce genre de documents.
Petite question au passage, pourquoi tu as besoin de la norme de Fortran 95 ? Sachant que la plus récente est Fortran 2018.
Fortran 95 est le plus utilisé parce que c’est celui qui a eu le plus de succès… C’est un peu le serpent qui se mort la queue, dit comme ça.
Il y a eu probablement beaucoup de projets qui ont été programmés avec cette version, et les nouveautés des versions suivantes n’ont pas été suffisantes pour convaincre les développeurs de sauter le pas. On garde ainsi un certain héritage du passé.
Les langages concurrents ont aussi évolué en parallèle, et Fortran n’est plus forcément un choix judicieux. On pourrait préférer d’autres langages pour un nouveau projet.
Quoi qu’il en soit, tu n’auras pas nécessairement besoin de la norme si tu débutes en Fortran. La norme n’est vraiment indispensable que pour un usage avancé (vérification de détails du langage ou écriture d’un compilateur, par exemple). Rien n’empêche de la lire cependant. ;-)
Justement j’ai aussi envie de comprendre comment fonctionne un compilateur exactement.
Les compilateur sont écrit en langage normal(c++, c++ etc…) ou en langage assembleur ?
Et j’ai aussi une autre question,où peut-on trouver le code source d’un compilateur ?
Justement j’ai aussi envie de comprendre comment fonctionne un compilateur exactement.
La norme va te dire comment le compilateur doit se comporter, pas comment le compilateur fonctionne. Pour ça, tu as des tonnes de documents sur internet qui expliquent avec plus ou moins de détails comment ça se passe.
Les compilateur sont écrit en langage normal(c++, c++ etc…) ou en langage assembleur ?
Les touts premiers compilateurs étaient écrit en assembleur comme on n’avait que ça à portée de main. Une fois que tu as un premier compilateur qui fonctionne, tu peux écrire ton compilateur dans le langage que tu veux. La suite de compilateurs gcc (dont fait partie gfortran) est écrite principalement en C par exemple. Le compilateur rust est écrit en rust, etc. En pratique, tu peux écrire un compilateur dans n’importe quel langage.
Celui de gcc est ici par exemple. En pratique, il suffit de taper sur google "<nom du compilateur> source code" pour le trouver si il est open source…
Tu peux écrire le compilateur dans le langage de ton choix, tant qu’il existe un compilateur pour ce langage. Les compilateurs pour les premiers langages de l’histoire ont été écrits en assembleur parce que leurs créateurs n’avaient pas le choix !
Il est probablement plus simple de partir de l’existant pour écrire un compilateur à l’état de l’art pour un "vrai" langage. Par exemple, il existe des plateformes pour aider les développeurs de compilateurs, telles que LLVM. Si tu veux apprendre à compiler un langage "jouet", il est peut-être plus intéressant de partir de zéro.
Par exemple si je veux créer un langage compiler nommée "AZ" à partir de python et écrire son compilateur en C++, Je devrais écrire une nouvelle norme de mon langage inspirer de python, garder la syntaxe de python et écrire un compilateur en C++ ?
Dans ce cas mon langage serait interopérable avec tout les langages compiler en C++ non ?
Dans python tu as des éléments qui te permettent de faire les composantes d’un compilateur il me semble, je ne peux pas te préciser vu que je suis debutant, mais hier j’ai épluché la doc python et j’ai vu un analyseur syntaxique utilisable et le détail de la grammaire de python aussi, je sais que python a des outils pour faire au moins un interpreteur, aprés pour la compil faut voir plus en détail la doc je pense.
Moi aussi j’aimerais bien écrire un compilateur ou au moins un interpréteur, mais il faut qu’il ait une utilité car les compilateurs et interpréteurs sont déjà innombrables !
Par exemple si je veux créer un langage compiler nommée "AZ" à partir de python et écrire son compilateur en C++, Je devrais écrire une nouvelle norme de mon langage inspirer de python, garder la syntaxe de python et écrire un compilateur en C++ ?
Oui, tu devras définir une norme, qui peut se séparer en une grammaire (définissant ce qui constitue du AZ correct) et une sémantique (définissant ce que ça signifie pour l’ordinateur). Si tu partais de Python, tu modifierais ces choses-là déja définies pour Python.
La rôle d’un compilateur est de vérifier qu’un programme est correct (à l’aide de sa grammaire) et de le transformer (en assembleur par exemple) en respectant la sémantique. C’est possible d’utiliser le C++ pour ça, mais tous les langages généralistes en sont capables.
Alors ta question n’est pas claire. Le langage utilisé par le compilateur n’est pas important, c’est ce qu’il sort qui l’est. Souvent, ce sont des binaires sous forme de bibliothèques, qui seront compatibles avec tous les langages qui savent accéder à ce type de bibliothèque.
Après, dans le cas où ton langage serait transformé vers du C++, alors oui, il pourrait probablement être intégré avec d’autres programmes qui sortent du C++, mais c’est une autre histoire.
@Abou : on peut effectivement écrire des analyseurs syntaxiques en Python. C’est un élément de base pour un compilateur ou interpréteur.
Pour ma part, j’ai testé Lark, qui est relativement facile à prendre en main.
Si tu as envie de t’amuser en dehors des sentiers battus, tu peux faire un analyseur syntaxique pour un langage de ta création pas forcément généraliste (il existe plein de DSL amusants comment gcode). Par exemple, on pourrait imaginer un langage dédié à la récupération de données de programme télé.
Merci Aabu, effectivement cela m’intéresse, pas pour tout de suite car je programme des jeux en ce moment, merci encore de l’info !
Au passage, j’aime beaucoup tes interventions, toujours bien visées et utiles
Comme d’autres intervenants d’ailleurs, la liste est longue
Connectez-vous pour pouvoir poster un message.
Connexion
Pas encore membre ?
Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte