Journey of Coding – Log 1 – Introduction

December 1, 2020

Depuis le 28 octobre, je n’ai pas vraiment écrit d’article. Ce n’est pas faute d’en avoir en stock dans les brouillons, mais je n’arrive pas vraiment à me lancer.

Je ne suis pas encore tout à fait à l’aise avec l’orthographe du coup écrire n’est pas encore quelque chose de simple.

Bref, nous sommes le 1 Décembre et je me suis dit que ce serait cool d’enfin me lancer à coder un projet qui occupe mon cerveau depuis pas mal de temps.

Pour faire simple, l’idée est de fabriquer un moteur qui permet de mettre au point des applications natives à l’aide d’interface nodale, de JavaScript ou de Python.

En gros React Native, mais pour Raspberry Pi avec comme cible l’éducation à la programmation, les artistes, les bidouilleurs, enfin à quiconque à envie de faire une installation ou de s’amuser avec un Raspberry Pi sans s’arracher les cheveux.

Pour ce faire j’ai besoin d’un moteur graphique accéléré matériellement, d’une gestion de layout et d’un interpréteur de JavaScript.

Je ne suis pas un développeur logiciel, mais développeur web ça s’annonce compliqué mais j’ai foi en stackoverflow et github pour réussir à assembler toutes les pièces de ce puzzle et puis parallèle j’apprends le C++ avec le livre C++ Primer qui me permet de comprendre un peu moins tout ce monde.

Après cette intro qui cadre un peu mieux le sujet voici donc le premier log du développement de ce projet.

Ce soir, l’idée est de relancer le bout de projet que j’avais essayé, il va me servir de bac à sable pour tester les différents points techniques du projet.

Programme du soir :

  • Redémarrage du projet
  • Écriture d’un readme sur comment lancer le projet
  • Ajout des liens de références (en particulier la doc de glfw et cmake)
  • Implémentation d’une chaine de build
  • Lancement d’une fenêtre OpenGL
  • Chargement et évaluation d’un script JavaScript avec QuickJS
  • Création d’un bridge entre OpenGL -> QuickJS et Yoga -> QuickJS

Notes :

Interface nodale : Interface graphique de programmation et/ou de configuration sous forme de boites relié les unes aux autres

OpenGL : Librairie permettant de faire de l’affichage 2D/3D utilisé notamment dans les jeuxvidéos.

glfw : Librairie graphique permettant d’utiliser OpenGL simplement, gère les inputs (clavier, manettes, ..)

cmake : Outils de génération de compilation ne compile pas, mais prépare les fichiers pour une compilation. Permet de travailler avec plusieurs librairies facilement.

QuickJS : Moteur d’interprétation JavaScript léger, prends en charge ES2020. Permet d’être embarqué dans n’importe quelle application.

Yoga : Gestionnaire de layout en flexbox (comme sur le web), développé par Facebook et utilisé dans React Native.