Je suis assez d'accord avec l'ensemble de ton message, je parlais surtout de tes commentaires sur la gestion de la mémoire.
Effectivement, dans ce cas, on paie en C le fait que l'allocation sur la pile est super rigide,
Corrige moi si je me trompe cependant, mais le fait que les tailles soient dynamiquement calculée induit le fait que la taille du tableau est stockée quelque part sur la pile à côté du tableau, et que le compilo écrit lui même le calcul pour retrouver les adresses des adresses mémoires des cases du tableau ?
Du coup, on pourrait aller un peu plus loin en stockant dans la struct non plus le tableau en entier mais les adresses plus les tailles du tableau ... C'est une pure limitation du langage en fait, vu que du coup il est obligé de tout stocker en mémoire, exactement comme si on écrivait une classe ou une struct et les fonction qui vont avec pour gérer des structs ...
Ce qui me fait dire que dans le cas ou tu voudrais splitter ta fonction, tu aurais tout intérêt t à faire exactement ça et utiliser une structure de matrice, ou tu pourrais manipuler la mémoire de la pile si tu voulais ...
Bref, autant je suis d'accord avec ton argument "lisibilité" dans ce cas, autant l'argument "gestion de la mémoire" me convainc pas du tout :)
[^] # Re: Langage idéal...
Posté par thoasm . En réponse au journal Nimrod, ça se rapproche du langage idéal. Évalué à 2.
Effectivement, dans ce cas, on paie en C le fait que l'allocation sur la pile est super rigide,
Corrige moi si je me trompe cependant, mais le fait que les tailles soient dynamiquement calculée induit le fait que la taille du tableau est stockée quelque part sur la pile à côté du tableau, et que le compilo écrit lui même le calcul pour retrouver les adresses des adresses mémoires des cases du tableau ?
Du coup, on pourrait aller un peu plus loin en stockant dans la struct non plus le tableau en entier mais les adresses plus les tailles du tableau ... C'est une pure limitation du langage en fait, vu que du coup il est obligé de tout stocker en mémoire, exactement comme si on écrivait une classe ou une struct et les fonction qui vont avec pour gérer des structs ...
Ce qui me fait dire que dans le cas ou tu voudrais splitter ta fonction, tu aurais tout intérêt t à faire exactement ça et utiliser une structure de matrice, ou tu pourrais manipuler la mémoire de la pile si tu voulais ...
Bref, autant je suis d'accord avec ton argument "lisibilité" dans ce cas, autant l'argument "gestion de la mémoire" me convainc pas du tout :)