- Pas de passage d'argument par paramètres
Ca c'est dommage. Et ça ne va pas dans le sens de l'efficacité, autant en taille qu'en vitesse. Le bench qu'a posté Thibaut montre que le code est environ 5% plus petit, mais il est aussi plus de 10% plus lent (mais c'est inline qui est responsable, et pas le passage par paramètres)...
- Plein de truc inutiles dont 98% des programmeurs C ce fichent totalement et dont on peut facilement se passer.
Certes, mais quels sont exactement ces trucs inutiles ? C'est pour ça que je voudrais que Pollux s'exprime.
Voyons un peu une partie des extensions du GNU C (dont une partie est dans le C99...):
- les cast constructors/compound literals (très pratique et gagne du temps et de la place si les paramètres sont constants)
- les nested functions (permet entre autres d'éviter de passer plein de paramètres sur la pile dans certains cas, les nested functions héritant des paramètres et des variables des fonctions qui sont juste au-dessus: dans tthdex, ça m'évite de passer 5 paramètres à une fonction...)
- l'ASM inline avec opérandes C (une partie qui est loin d'être négligeable de tthdex l'utilise pour être plus rapide et plus petit)
- le keyword inline (ça peut améliorer la vitesse, *légèrement*)
- les attributs de fonctions ou de variables ( __attribute__((__stkparm__)) ou __regparm__(n), et plein d'autres attributs...)
- les tableaux de taille nulle ou variable (comment définissez-vous de manière simple la structure BITMAP d'AMS sans les tableaux de taille variable ?)
- conditionals with omitted operands (pratique, même si ça n'est pas indispensable)
- les types 'enum' incomplets (une bonne partie de TIGCCLIB est basée là-dessus...)
...
(et dans une moindre mesure)
- initialisation de variables avec des paramètres non-constants, inconnus au compile-time
- typecast dans le type union
- long longs
...
Il ne faut pas se dire compatible avec TIGCC si l'une quelconque des nombreuses extensions citées plus haut, qui sont utiles et vont dans le sens de l'efficacité, n'est pas supportée (le passage par registres ne fait pas partie de GCC, je le sais).
Voila ce qui manque a TIGCC:
- Compilateur leger et optimiser pour la calc
- Programmation On-Calc
Certes. Cependant, je continue à me demander si la majorité des personnes est prête à programmer on-calc (tout le monde sait que faire planter VTI n'a pas de conséquences; mais faire planter une calculette réelle peut en avoir)... Même si la quasi-absence de compilateur C on-calc ne donne aucune statistique sur la proportion de personnes qui veulent programmer on-calc.