🧵 Rendez votre vie et celle des autres un peu moins pénibles en configurant vos programmes pour qu'ils impriment leurs données internes sous forme d'images ; ✨ un fil ✨
Pratiquement tous les programmes que j'écris peuvent, d'une manière ou d'une autre, exporter leur état interne. Si vous ne deviez retenir qu'une chose de cette discussion, c'est que vous pouvez appliquer cette méthode à vos propres programmes. Ce n'est pas forcément compliqué !
Je ne veux pas dire comme ça. Vous avez déjà vu ces diagrammes de type liste chaînée, avec des flèches pour les pointeurs et un petit symbole pour NULL, etc. Ils sont très utiles pour décrire une implémentation, mais on les utilise rarement en dehors du cadre scolaire. Crédit : Moses Effiong Ekpenyong
Un grand bravo au cours CISC 3130 du Brooklyn College pour leur incroyable schéma de liste chaînée ! libguides.brooklyn.cuny.edu/cisc3130/linke…://t.co/VTw0qbKDXA
En remontant d'un niveau d'abstraction, est-il utile d'afficher le contenu d'un type abstrait de données (TAD) ? Probablement pas. Il serait préférable de montrer quelque chose de plus pertinent pour votre programme. Il peut s'agir du contenu d'une seule structure de données ou de la relation entre deux.
Je travaille beaucoup sur des sujets liés aux compilateurs, mais cette idée s'applique aussi à d'autres domaines. La raison pour laquelle les compilateurs comportent des phases est *parce qu'il existe des données différentes entre chaque phase. Il semble donc tout à fait naturel de les extraire. Il suffit d'ajouter une option à vos outils en ligne de commande ! C'est tout ce qu'il faut.
Voici une structure issue d'une version ancienne d'un shell Unix. Mon programme illustre la relation entre un arbre syntaxique et une table de symboles hiérarchique, alimentée simultanément lors de l'analyse syntaxique. J'espère que vous pouvez en percevoir le lien.
Vous voyez, je ne montre pas comment elles sont stockées, seulement ce qu'elles contiennent. Il s'agit uniquement du contenu, et non de l'implémentation de ces structures de données spécifiques. C'est le niveau d'abstraction approprié pour le débogage d'autres parties du programme.
Voici un autre arbre de décision provenant d'un programme différent. Celui-ci est un IR généré par un compilateur C et C++. À moins que vous ne déboguiez cette partie en particulier, les détails d'implémentation ne sont que du bruit.
Ces structures peuvent devenir imposantes ! Mais même en prenant du recul, distinguer la forme générale d'un objet peut s'avérer utile pour le débogage. Une fois familiarisé avec le sujet, vous y verrez plus clair. En observant les choses, on peut repérer des schémas dans les changements. Notre cerveau est fait pour ça !
Concernant la structuration des programmes : assurez-vous de bien structurer les données. Le code est secondaire. - Le code est plus facile à modifier - La conception des données a tendance à s'infiltrer partout. C'est pourquoi il est important de le contenir dans des phases (ou des modules, ou autre).
Pour les démons avec état, ajoutez une méthode pour interroger l'état actuel via IPC. Effectuez le rendu en dehors de votre programme !
Exportez vos données au format Graphviz, JSON, TSV simple, ou tout autre format qui vous semble le plus approprié. Imprimez-le dans un format *simple*, utilisez des outils externes pour le rendu.
Ce n'est pas parce que vous avez un programme qu'il doit gérer tout ça. Il faut répartir les tâches ! Utilisez différents langages. J'utilise awk. Utilisez le langage que vous préférez.
JSON est un excellent outil de communication entre équipes utilisant différents langages. Dans un contexte commercial, il facilite la collaboration et vous permettra de gagner des points en tant qu'ingénieur principal pour votre capacité à collaborer entre équipes.
Utilisez des couleurs adaptées aux daltoniens et à usage purement fonctionnel. J'aime bien la palettenature.com/articles/nmeth…//t.co/XtUlGdalOb
Le flux de travail est important, tant pour l'acquisition des données que pour leur visualisation. Il est contre-productif de devoir effectuer de nombreuses étapes pour visualiser le résultat, car cela interrompt le travail en cours. La prochaine fois, j'essaierai d'écrire un peu à ce sujet. Prenez soin de vous, merci de votre lecture.











