compilateur respectant la norme ansi c

Le problème exposé dans ce sujet a été résolu.

Salut,

Je pense que tu peux utiliser gcc ou encore clang en fournissant l’option -std=c90 lors de la compilation. Dis le bien à ton professeur pour qu’il ne te dissuade pas d’utiliser des compilateurs puissants, open source et éprouvés par l’industrie. Ça serait dommage. :)

merci. gcc est le compilateur que j’utilise, ce pendant, j’ignorais tout de cette option. mais es tu sûr qu’en l’employant ce dernier se décidera à être conforme à 100 % ? il faut me comprendre, je ne veux guère faire les choses à la légère. je désire un code le plus standard et le plus portable possible.

Bon, on reprend…

mais es tu sûr qu’en l’employant ce dernier se décidera à être conforme à 100 % ?

Non, je n’en suis pas sûr, toutefois je fais confiance aux développeurs des compilateurs que j’ai cités.

il faut me comprendre, je ne veux guère faire les choses à la légère.

Pour quelqu’un qui veut faire du C à la sauce norme ANSI, c’est le moins qu’on puisse dire. :)

je désire un code le plus standard et le plus portable possible.

C’est tout à ton honneur et c’est dans l’esprit du langage C. Toutefois ce n’est pas en t’embêtant avec une norme vieille comme le monde comme la norme ANSI que tu t’épargneras de faire des bêtises en C. Il y a d’autres normes plus au goût du jour. Pourquoi ne pas t’appuyer sur la norme C11 ? https://en.wikipedia.org/wiki/C11_(C_standard_revision)

C’est bien à des fins pédagogiques que tu veux faire du C ANSI ?

je te remercie de l’intérêt que tu porte à ma requête. les raisons qui m’incite à programmer en ansi c ne sont pas des moindres et sont en outre, la portabilité et la compatibilité. coder un programme en c90 c’est comme le distribuer au monde entier. par exemple, je sais que ci je dois programmer un système d’exploitation, il sera uniquement écrit en ansi c. est la raison est très simple. exemple: prenons l’exemple du langage lua. il est écrit uniquement en c90 mais regarde le résultat. la plus part des jeux vidéos de console sont codés dans ce langage. d’autre part, la norme ansi c est assez puissante et modulaire pour programmer le plus géant des logiciel ce qui m’amène à la conclusion suivante.
je n’ai pas besoin des norme c99 et c11 pour écrire un programme aussi puissant soit il.

Mais si c’est la portabilité et la distribution dans le monde entier qui te préoccupent, pourquoi ne pas te focaliser sur un langage au goût du jour comme Go ou Rust surtout si tu veux programmer un système d’exploitation ? (bon courage, au passage)

Le C est encore très utile sur des architectures modestes et assez vieilles, mais s’il est question d’écrire "le plus géant des logiciels"… Tu vas te tirer des balles dans le pied. Et là ça n’est même pas une question de norme ou de standard, tu sais ?

Je ne comprends absolument pas pourquoi on voudrait utiliser une norme vieille de presque 30 ans et obsolète depuis 20.

C’est un peu comme si tu décidais de rédiger un texte en français du XVIIe siècle : on peut exprimer ce que l’on veut par ce biais, mais ça reste un mode d’expression dépassé.

+10 -0

Sinon il existe le compilateur compcert (site web qui te donner un code assembleur certifié. C’est à dire, avec la garantie que le code assembleur à la même sémantique que le code original (en gros il n’a pas introduit de bogue). Comme la norme est un peu laxiste sur certains points, ils ont été obligés de la sur-spécifier, notamment pour dire comment doit-être compilée l’expression:

1
++i * i++

Mais il me semble que CompCert garantie une grande portabilité du code.

Je ne comprends absolument pas pourquoi on voudrait utiliser une norme vieille de presque 30 ans et obsolète depuis 20.

C’est un peu comme si tu décidais de rédiger un texte en français du XVIIe siècle : on peut exprimer ce que l’on veut par ce biais, mais ça reste un mode d’expression dépassé.

nohar

Je ne suis pas du tout d’accord avec ta remarque et ton analogie est foireuse. Mais il y a des raisons pour utiliser des vieux langages et aussi de vieilles normes. Par exemple car tu sais que tu as un code qui tourne avec du code intouchable et qui dans la nouvelle norme ne fonctionne plus. Le coût pour repartir de zéro serait trop élevé.

Dans le public, j’entends dire qu’il arrive souvent de voir dans des laboratoires des gens programmer avec des langages dont le compilateur a été écrit il y a 40 ans et dont la norme a évoluée ensuite. Je suppose qu’il y a des raisons techniques et qu’ils ne font pas ça par choix. Bref, en fonction du contexte, les gens utilisent des vieux langages et des vieilles normes. Oui c’est un problème, mais il ne se règle pas facilement.

+1 -0

Je ne suis pas du tout d’accord avec ta remarque et ton analogie est foireuse.

Merci, je suis au courant qu’il existe des choix historiques dans les entreprises (ça fait un bail que je pratique…), mais absolument rien n’indique que le PO est dans ce cas-là, et surtout tu es en train de faire une généralité à partir de cas limites.

+0 -0

Mais si c’est la portabilité et la distribution dans le monde entier qui te préoccupent, pourquoi ne pas te focaliser sur un langage au goût du jour comme Go ou Rust surtout si tu veux programmer un système d’exploitation ? (bon courage, au passage)

pour moi bas niveau est synonime de puissance. le c est un langage puissant, sans doute beaucoup plus puissant que les langages dans tu parle. écrire des grands programme avec rust, python ou autre, non merci trop peu pour moi.

Je ne comprends absolument pas pourquoi on voudrait utiliser une norme vieille de presque 30 ans et obsolète depuis 20.

vieille d’acord, mais pas obsolète. c’est surtout les normes c99 et c11 qui sont des ajouts inutils

Au vu de la dernière réponse à l’emporte pièce de l’ami tutorials x, je pense que je vais gentiment me taire à partir de maintenant et laisser à qui le voudra bien tout le loisir de le détromper. :)

PS: En particulier, lui expliquer ce qu’est Rust serait un excellent départ.

+3 -0

Pour ma part, étant à l’origine développeur C exclusivement de part mon métier, je n’ai appris le C++, le Python que bien des années après. Je ne vois aucune raison sérieuse aujourd’hui de faire du C, à moins de travailler sur le logiciel d’un satellite avec un ordinateur antiradiation construit en 1990. Le C++ inclut quasiment rigoureusement tout le C, tout en apportant l’essentiel des progrès de l’informatique réalisés au cours du dernier demi-siècle. C’est plutôt cool.

Mais quelque chose comme Rust est clairement plus proche de l’avenir.

premièrement, le c est un langage que j’aime bien. deuxièmement, je préfère la programmation impérative à l’orienté objet. on peut dire que le c et le fondement de ce paradigme. et en fin, je suis quelqu’un aimant les défis et aussi l’oint que peut aller le c++, le c reste inégalable et irremplaçable en terme de puissance. la preuve, la plu-part des système d’exploitation, logiciel embarqués sont écrits en c.

Deuxièmement, je préfère la programmation impérative à l’orienté objet. on peut dire que le c et le fondement de ce paradigme.

tutorials x

Quedal. Fortran existait 20 ans avant lui.

le c reste inégalable et irremplaçable en terme de puissance.

tutorials x

Ça veut dire quoi puissant ? Deuxième édition.

La preuve, (1) la plu-part des système d’exploitation, (2) logiciel embarqués sont écrits en c.

tutorials x

(1) Et le bordel qui en résulte est tellement délirant qu’on n’aura jamais la moindre garantie que ça marche correctement.

(2) C++ commence à jouer sur ses plates bandes, mais là n’est pas le point important. Ici, c’est surtout une question de compilateur. Mis à part ça, dans l’embarqué, il est surtout choisit pour sa compilation prévisible et pour les horreurs qu’il autorise à faire quand on en a besoin. Dans ces domaines, C est choisi par contrainte, pas parce qu’il a des avantages sur les autres langages.

premièrement, le c est un langage que j’aime bien. deuxièmement, je préfère la programmation impérative à l’orienté objet. on peut dire que le c et le fondement de ce paradigme. et en fin, je suis quelqu’un aimant les défis et aussi l’oint que peut aller le c++, le c reste inégalable et irremplaçable en terme de puissance. la preuve, la plu-part des système d’exploitation, logiciel embarqués sont écrits en c.

tutorials x

Tu as du mal comprendre mon message : à deux ou trois pinaillages près, le C++ est exactement le C plus d’autres choses, il est donc plus puissant que le C, quelle que soit ta définition de puissance. Il est en tout cas au moins aussi performant, il est plus expressif, et il peut être considérablement plus sûr.

Rust quand à lui est considérablement plus sûr, à peu près aussi rapide, et encore plus expressif.

pour moi puissant veut dire plus performant, plus rapide, et aussi plus permissif sur le matériel. vous pouvez toujours dire ce que vous voulez, mais le c est un langage impératif et bas niveau et conçut pour la programmation système. il surclasse donc c’est autre langage en tout points dans ces éléments

mais allez y, ne vous gênez pas ! ci vous voulez partir, je ne vous retiens pas. de toutes façon je ne suis pas venu ici pour comparer des langages et moi non plus je n’ai pas de temps à perdre.
autre chose, ci vous voulez quitter le topique, inutile de l’écrire dans un message. ce la me minimiserait le nombre de commentaires à consulter pour trouver ce que je cherche, et ça allégerait le sujet.

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