Page de Nicolas Georgehttp://www.eleves.ens.fr/home/george/info/prg/projets.html

Mes projets

Voici une liste de mes principaux projets en cours, avec une description de leur avancement, de leurs besoins et d'autres informations. Si vous avez des idées pour l'un ou l'autre, n'hésitez-pas à m'en faire part. Si l'un de ces projets vous intéresse, dites-le moi, que je remonte un peu sa priorité (ma page de programmes me rapporte si peu de mail que vous pouvez y aller sans vergogne).

Projet description avec
Nitab tableur non interactif OCaml
Géométrie construction de figures géométriques OCaml/Gtk
FBTerm émulateur de terminal avec le framebuffer Solaris C
XBabal jeu débile de réflexes C/Xlib
ML-PostScript un moteur PostScript pour Objective Caml OCaml
XWelltris la suite «officielle» de Tetris C/Gtk
Autres autres projets, plus lourds et à plus long terme  

Nitab

Description

Nitab est un tableur non interactif, basé sur des principes similaires à ceux de TeX. Il lit les données sur lesquelles il travailles (séries numériques, formules, graphes à tracer) dans un fichier au format texte pur, qui peut s'éditer avec n'importe-quel outil, et il produit en sortie un fichier graphique présnetant les données sous la forme voulue.

Contrairement à TeX, qui est axé principalement sur les données (le texte), le fichier source de Nitab est écrit dans un langage qui peut être qualifié de langage de programmation. Évidemment, c'est un langage simplifié à l'extrême pour toutes les opérations de base, mais il permet également de réaliser des opérations plus complexes.

Un des avantages de Nitab est de dissocier la structure de donnée de sa présentation : l'information «série de nombres» n'est plus intimement liée à une colonne d'un tableau. Ainsi, il est possible de créer séparément des fichiers de présentation et de les inclure dynamiquement dans le projet.

Avancement

Ouh, j'ai honte : c'en est presque au niveau zéro. J'ai un début de lexer/parser, mais je suis un peu bloqué sur l'implémentation de la structure de donnée pour réaliser le calcul parallèle sur les séries de données. Dès que j'ai fait cette implémentation, je peux me lancer nettement plus loin dans le projet.

Prochaines étapes

Aide possible

J'ai l'habitude de développer mes projets la pluspart du temps seul, mais si vous avez envie de participer et que vous arrivez à me convaincre, tant mieux. En tout cas, un point sur lequel j'aurai besoin d'aide, c'est la réalisation de filtres d'import (et pourquoi pas export) depuis des tableurs traditionnels. Mais il faut pour ça attendre que le projet ait déjà un certain avancement.

Géométrie

Avant toute chose, il faut un nouveau nom, ou plutôt un vrai nom, parceque là, je ne suis vraiment pas inspiré.

Description

Il s'agit d'un logiciel de géométrie plane, un peu à l'imitation de celui qu'on trouve dans la TI-92 : l'utilisateur peut manipuler les éléments géométriques, fixe les règles de construction, et le logiciel se charge du reste, et notamment de répercuter le changement d'un paramètre sur toute la figure.

Avancement

J'avais déjà commencé un tel projet en C il y a quelques mois, mais ça avait été un échec, d'une part parceque je ne maîtrisais pas encore assez Gtk, et d'autre part parceque je n'avais pas assez formalisé la structure de données, ce qui me laissait sur les bras une quantité astronomique de cas à gérer.

J'ai donc recommencé, cette fois-ci en Objective Caml, ce qui va faciliter la gestion des données. Je suis aujourd'hui suffisamment habitué à Gtk pour le projet, et j'ai prévu une meilleure organisation des données.

Le squelette de l'interface est OK, et je me suis lancé dans les objets. Pour le moment, j'ai les points, les droites passant par deux points, les cercles passant par un point, les droites orthogonales, et les intersections de droites et de cercles. Bien sûr, ce n'est pas très structuré, c'est pourquoi il va falloir que je remette ça un peu à plat. Mais tout est utilisable en l'état. Hélas, rien ne bouge, evidemment, mais j'ai une meilleure idée de coment je vais faire la remisa à jour.

Ensuite, il faudra que je m'occupe de l'interface, ce qui est une partie nettement plus effrayante.

Prochaines étapes

FBTerm

Description

FBterm est un émulateur de terminal utilisant directement le framebuffer d'une machine Solaris pour son affichage. Ainsi, il n'exige pas le chargement d'un serveur X, qui prend toujours un certain temps. Mais il évite également la console Solaris brute, qui est une vraie calamité.

Le but n'est bien sûr pas de refaire Screen, qui est escellent. Au contraire, FBTerm s'utilisera de manière très efficace avec Screen. Le but est ici d'offrir un service très spécifique, qu'aucune autre application plus généraliste ne propose.

Avancement

FBTerm permet déjà de faire tourner certaines applications, et notamment tout ce qui fonctionne en ligne de commande simple. On peut même faire tourner Vim, Mutt et Flrn, à condition de rafraîchir à chaque fois qu'ils essaient de faire défiler une portion de l'écran.

Pour des raisons de sécurité, ce programme est en accès privé : il n'effectue pour le moment pas assez de tests pour vérifier qu'il est bien lancé directement depuis la console, il peut arriver qu'il restaure mal les modes des différents périphériques, et il se passe des choses bizares avec les machines d'un autre type que celles sur lesquelles j'ai développé.

Prochaines étapes

XBabal

Description

Il s'agit d'un jeu de réflexes, adapté d'un jeu sur calculatrices HP. Une balle, contrôlée par le joueur, parcourt à toute vitesse un terrain composé de cases et de trous. Elle peut se déplacer latéralement, ou sauter. Par rapport à la version originale, je rajoute des cass bonus et malus, et, sur les conseils d'Alain, je mets des textures sur les casees.

Avancement

Le moteur 3D est fait, et il marche même plutôt bien.

Prochaines étapes

MP-PostScript

Description

Le but est de fournir la plupart des fonctions de base du PostScript pour la production simple de documents imprimés en Objective Caml. Évidemment, pour un projet de grande envergure, refaire un moteur spécifique, plus partuculièrement optimisé, s'impose toujours. Mais pour des projets simples, ça peut être très utile.

Avancement

C'est à peu près fini (ça risque d'ailleurs de quitter cette page prochaînement), et disponible ici : postscript.html.

Amélioration possible

XWelltris

Je voudrais réaliser une adaptation sous X-Window (probablement avec Gtk) du Tetris-like de même nom. Pour l'instant, c'en est au point zéro, mais il ne s'agit pas d'un projet très lourd.

Autres

XWorms

Il s'agit de l'adaptation sous X-Window et en réseu du célèbre jeu sous DOS, où des vers de terre se battent à coup de bazookas, de grenades et de bombes à fragmentation. C'est un projet très, très lourd, et il faudrait de nombreux participants, mais ce serait très intéressant.

XSyndicate

Il ne s'agirait pas ici de refaire le jeu Syndicate à l'identique, mais de construire un vaste jeu en réseau se déroulant dans un univers du même style, avec également le même style d'interface. Outre les problèmes techniques, il faudrait concevoir un principe qui s'accomode correctement des lenteurs du réseau. On peut également décider de limiter l'utilisation à un réseau local rapide.