• [^] # Re: Étudiant qui lève le doigt

    Posté par . En réponse au journal Alpha: une machine bêta avec écran.. Évalué à 4.

    Pour un exemple concret : depuis que j'ai fait de l'assembleur, j'ai enfin arrêté de faire des segfault au bout de 100 lignes de C ! (et ma femme est revenue, et j'ai gagné au loto ;-))

    Il y a plein de trucs qui sont « évidents » en assembleur, mais cachés dans les langages de plus haut niveau. Sauf quand on a un usage un peu pointu/astucieux/crade (suivant les goûts ;-)), auquel cas on a un bug incompréhensible, parce que, justement, le langage cache sa raison. Avoir fait de l'assembleur, ou au moins étudié la chose, nous donne au moins une chance de voir d'où vient le problème.

    Après, connaître l'assembleur seulement, ça ne sert pas à grand chose (sauf pour l'étude de l'algorithmique, ce genre de choses, qui font que Knuth a écrit MMIX de cette manière). Il faut se pencher sur le fonctionnement de la machine elle même : l'alignement de la mémoire, son organisation, les registres qui se modifient tout seuls (sur les architectures (削除) pourries (削除ここまで) traditionnelles), Les accès mémoire directs, indirects, indirectement indirects (variable, pointeur, pointeur de pointeur…)… Le fonctionnement de la pile, l'interface avec les langages de plus haut niveau…

    Ça ne m'a pas trop servit sur des langages de plus haut niveau encore, par contre… (Javascript, Python… Mouais, là, l'assembleur devient vraiment lointain).

    Enfin, je ne sais pas pour les autres langages, mais pour le C, connaître les limitations de la machine sous-jacente est un vrai bonus, même si le C est censé être « abstrait ».