S01E83 — 19-10-2024.
Du code chirurgical.
jour 83.
Plus je travaille sur mon tokenizer, plus je prends gouts et comprends le besoin d’avoir une implémentation affinée. Je sais que je t’en est déjà parlé hier, mais de la même manière dont la syntaxe est négliger beaucoup néglige l’importance d’avoir une analyse syntaxique chiadée. Déjà, c’est le premier module que tu dois implémenter dans un compilateur. Et souvent, j’ai pu observé qu’une implémentation approximative devenait un calvaire à gérer.
Des symboles qui ne sont pas tranformés en jetons correctmeent. Ah oui, un autre truc, c’est qu’il faut aussi avoir un Tokenizer qui soit tout terrain. Je m’explique, habituellement, on développe un Tokenizer pour l’analyse lexicale, un autre pour le formatage, un autre pour la coloration syntaxique. C’est izi pour des tokenizer simple mais si tu dois avoir une syntaxe un peu plus complexe. Le mieux est d’avoir un Tokenizer capable de gérer plusieurs cas. Je sais, certains vont te parler de tout séparé, mais crois-moi lorsque tu auras un langage qui est une combinaison de plusieurs langages, tu n’auras aucunement envie de faire une séparation. Ça c’est les bayes des mecs qui n’ont jamais eut écrit… allez… plus de cinq Tokenizer dans leur vie.
Surtout que la différence concerne seulement la prise en compte des espaces. C-q-v-d que si j’ai besoin de créer des jetons de types espace, mon Tokenizer doit être capable de le faire et dans le cas où, j’ai besoin qui les mange, je lui fait les manger. Tu peux gérer ça facilement avec une propriété booléenne qui va dire au tokenizer ce qu’il doit faire en terme d’espace. Et ça ce n’est pas la mer à boire. Je ne l’ai pas emcore implémenter mais c’est l’approche que je vais suivre. Je ne vais pas me prendre la tête à réimplémenter à nouveau un tokenizer gigantestque juste parce que c’est plus propre.
Un, je suis tout seul à travailler sur mon langage, deux, j’m’en bats les couilles que mon fichier fasse plus de cinq milles lignes. D’ailleurs, 5k en terme de ligne c’est un petit fichier pour moi. Oui, j’aime aussi, les petits fichiers tout skinny, blablabla mais là un langage c’est dix ans de travail acharné et avoir du résultat aide à rester motivé. Si tu as trop de sépration inutile, tu vas te rendre compte que ce n’est pas simple à parcourir et même à débugger car tu dois toujours ta rappeler dans quel fichier, je dois regarder pour corriger ce qui ne va pas. Alors que dans un seul fichier, c’est gérer, c’est ici, maintenant dérbouille-toi.
Encore une fois, je ne détient pas la vérité, je n’ai pas fais d’étude en informatique, je n’ai pas de license, de master ou de doctorat. Donc ces personnes peuvent avoir un discours différent du mien. Ma devise est plutôt, si ça marche, je continue d’avancer. Parce qu’en soit c’est tout ce qui compte.
Qui va regarder ton code ? Qui va contribuer à ton code ?
Si tu es un mec solitaire comme moi. Personne ne va venir sur ton repo, personne ne va contribuer, personne ne va réellement t’aider. Ce qui est logique car je ne communique rien sur mon projet. Et même lorsque je fais, les compilateurs, c’est une niche, de la niche, dans la niche d’une niche ultra caché. Les gens qui s’y essayent abandonnent tous dès qu’il arrive au système de types — si tu ne me crois pas je t’invite à recherche compiler, language ou programming language sur Github et voir le nom de projet qui sont mort dans le film.
Une fois que tu as compris, que tout repose sur ta motivation et détermination, tu dois trouver des satisfactions dans chacune de tes avancés. Par exemple, avant, je ne passais que quelques jours dans sur chaque module. Lorsque j’ai vu que Cliff Click vient de passer trois ans de sa vie pour avoir un système de type fonctionnel. Tu comprends que le mental est une force incroyable.
C’est cet état d’esprit que je vise, une rigueur implacable. Ce qui ne va pas t’empêcher de sortir, de faire des amis. Ne prends pas mon cas comme quelque chose de commun. De base, je n’aime pas trop les humains, j’en suis moi-même un. Bizarrement, je n’aime pas sortir, le monde, etc. Je ne sais pas pour toi mais dès que je sors, les gens m’interpellent. Ils veulent me parler, converser, etc. Alors que si tu ne me parles pas de compilateurs, de programmation ou sujets tech, je m’ennuie très vite.
Un monde 100% tech, n’existera pas et j’en suis bien content. Juste que je suis dans une mentalité d’évolution donc parler constamment de ce sujet Tech me donnne l’impression de rester connecté, d’apprendre et d’avancer.