Il me semble que les undefined behavior du C correspondent à des cas très précis et le plus souvent documenté par l'implémentation.
Le problème c’est pas tant que les undefined behavior soient documentés ou pas, mais que:
- il y en a beaucoup, trop pour tout se rappeler de mémoire (191 si j’en crois le lien donne au dessus)
- il sont parfois particulièrement subtile et facile à rater
Par dessus ca, rajoute le côté très "tu fais vraiment ce que tu veux, mais c’est toi qui tient la tronçonneuse" du C, même sur des choses documentées, et effectivement, il est pratiquement impossible d’ecrire un programme non trivial qui n’ait pas un bug ou deux critique.
Si tu me crois pas, regarde juste le nombre de faille de sécurité critique qui se résume à un simple "ah, ben zut, on a merde sur une ligne de code, c’est con mais c’était pas facile à voir" ces 10 dernières années.
Quand on fait du bas niveau, il ne faut pas se limiter à la spec du langage, mais il faut aussi se servir de la spec du compilo
Et comment tu fais le jour ou le compilo change sa spec sur les undefined behavior?
[^] # Re: Aucun !
Posté par groumly . En réponse au journal Go et Rust, lequel est le remplaçant du C ?. Évalué à 10.
Le problème c’est pas tant que les undefined behavior soient documentés ou pas, mais que:
- il y en a beaucoup, trop pour tout se rappeler de mémoire (191 si j’en crois le lien donne au dessus)
- il sont parfois particulièrement subtile et facile à rater
Par dessus ca, rajoute le côté très "tu fais vraiment ce que tu veux, mais c’est toi qui tient la tronçonneuse" du C, même sur des choses documentées, et effectivement, il est pratiquement impossible d’ecrire un programme non trivial qui n’ait pas un bug ou deux critique.
Si tu me crois pas, regarde juste le nombre de faille de sécurité critique qui se résume à un simple "ah, ben zut, on a merde sur une ligne de code, c’est con mais c’était pas facile à voir" ces 10 dernières années.
Et comment tu fais le jour ou le compilo change sa spec sur les undefined behavior?