"puisqu'il n'est pas portable": Un logiciel sur une cible aussi proche du hardware n'est jamais portable. La portabilité est une illusion extapolée du fait que le source C est "relativement" portable lorsqu'on travaille avec un OS sous-jacent (et encore, pour moi la vraie portabilité c'est la portabilité de l'exécutable). Mais cette extrapolation est fausse sans OS pour du logiciel lié à son hardware. Déjà au niveau PIC le code source n'est même pas portable d'un compilateur à l'autre concernant la même cible, alors inter-famille mieux vaut ne même pas y penser (je fais impasse évidemment sur "printf "hello word", car on n'utilise pas un micro de ce type pour faire ça).
"est illisible": c'est encore une célèbre idée reçue complètement infondée. Ce n'est pas le langage qui fait la lisibilité, c'est le programmeur. Il y a des déclarations en C qui nécessitent de faire griller ses neurones et utiliser une feuille de papier pour essayer de comprendre ce que ça représente (tout le monde a déjà vu ça), et il y a même des concours à qui sort la ligne C la plus illisible possible.
"n'apporte que peu de vitesse supplémentaire": De nouveau, c'est une généralisation de choses qui ne le sont pas. Si on prend un PIC16Fxxx et qu'on écrit du code en C, on constate que le taux d'expansion est énorme et que le code produit est catastrophique au niveau efficacité. Le fait que 90% des applications n'ont besoin que de 10% de la puissance processeur n'y change rien: c'est inefficace. Logique : aucune gestion de pile, un seul pointeur indirect, données sur 8 bits, pas assez de RAM, jeu d'instructions insuffisamment étoffé, présence de banques qui plombent l'accès aux variables, etc. Si on prend un autre 8 bits: le 18F, le code C produit devient beaucoup plus efficace, MAIS il garde l'inconvénient de travailler sur des données 8 bits, le C n'étant pas vraiment conçu pour travailler en 8 bits natifs. Du reste, j'ai des applications dont les routines d'interruption nécessitent de maîtriser les temps de cycle, donc hors de portée du C. Sans compter des applications sur 12F qui entrent au chausse-pied et donc exit le C.
Partager