rss

Mono at school : Scheme interpreter

4

Category : C#, English, Mono, Programming, School

419031515_989b354b68_o

If you remember the last capharnaüm, I was talking about working on an Scheme interpreter written in C# for a course this semester. Now that this semester is over, I felt just like it was about time to unveil it to the world.

First of all : it’s a prototype. That means it can probably kill kitties among other possibilities.

Actually, the main goal of the project was to find ways to plug things like the DLR and Irony together into a working state.

As of today I think we did it. Our interpreter is already able to do basic Scheme. For the moment, defines (both with constants and lambdas) and most basic standard functions/operators on atoms and list are there.

Following are some snippets that work perfectly fine :

(display (+ (* 2 (* 2 10)) 2))
> 42

(define foo "bar")
(define bar "foo")
(display (string-append bar foo))
> foobar

(define foo (list 1 2 3))
(display (car (reverse foo)))
> 3

(define fact
    (lambda (n)
       (if (= n 0)
          1
          (* n (fact (- n 1))))))
(display (fact 4))
> 24

The cool part is that it works very well with Mono (well it was more getting DLR and Irony to work with Mono in the first place). However, we added some specific extensions which allows to consume CLI library’s methods, making it useful for a simple glue language.

In it’s current state, it’s a simple wrapper around some reflection code which makes possible simple thing like

(display (call "System.Environment" "MachineName"))
> phoenix

But it would be simple to extend that to include instantiation of .NET object.

Ultimately this interpreter could be used in a variety of scenarios like application scripting, Silverlight/Moonlight logic code or simply for the joy of recoding the universe.

In addition, the architecture is based on a pipeline pattern where each part of the interpretation process is split among several components interacting together with event dispatch. With this approach it is super easy to customize the interpreter to your will. It also improves the testability of each part of the interpreter though the test suite is rather poor (very poor in fact) at the moment.

Code is available on the google code repository and there is a tarball for quick compile. French report is also available there (though it’s not that shiny).

Oh, before I forget the most important, we nicknamed our interpreter « Béchamel » as the French sauce. Bonus point for the one who is able to mix the sound of the word as we did in order to make « Scheme » appears.

Résultats A08

2

Category : French, General, Life, School

PS29 → Admis (C)
MT26 → Admis (D)
LO27 → Admis (A)
TX20 → Admis (B)
LJ00 → Refusé (FX)
EI01 → Admis (D)

Troisième semestre à l’UTBM, dernière ligne droit avant la branche informatique de l’UTBM, plus ou moins les résultats auquel je m’attendait.

Une fois n’est pas coutume je vais me forcer à faire un descriptif de toute les UVs :-) .

PS29 – Rigid body mechanics

Je m’étais dit que j’arrêterai tout ce qui touchait de prêt ou de loin à de la mécanique après la claque qu’était TN21 le semestre dernier mais finalement, cursus anglophone oblige, je me lance pour une dernière UV de méca.

Au final, c’était plus de l’espèce de physique de terminale mélangé avec ce qu’on avait déjà fait en SI (liaisons, PFS, PFD, …) le tout avec par dessus une grosse couche de matrice, de torseur et plus généralement de tout ce qui est lourd et gras en mécanique. En gros, une fois qu’on a fait abstraction de la lourdeur de la méthode et de l’écriture on retrouve le bon vieux ma = ∑Fext .

La petite particularité était donc que l’UV était donné intégralement en anglais par Mr. Sauhet en lieu et place du prof habituel de PS25. Même si les matières qu’il enseigne ne me transcende pas vraiment, c’est un prof sympathique et il a un anglais cocasse (parce qu’il semble tiré d’une pièce de Shakespeare écrite en vieil anglais :-D ).

Résultat : C. C’est assez inattendu mais on ne va pas s’en plaindre :-) .

MT26 – Suite / Séries / Fonctions de variable complexe

Une UV de mathématique comme on les aime et pour une fois ce n’est pas ironique. De toutes les UVs de math que j’ai pu faire jusqu’à maintenant c’est la plus intéressante. Si on comprend bien le principe et la distinction entre les différents objets (suites/série, nombre/fonction) qu’on manipule alors on peut faire des choses très sexy. La fin sur les fonctions holomorphes et le théorème des résidus est moins intéressante mais par chance elle n’est au programme du final que l’année prochaine :-) .

Le projet consistait à coder en Mapple plusieurs algorithmes de calcul d’intégrale via des méthodes géométriques (rectangle, trapèze, polynôme de Lagrange). Rien de très transcendant mais on arrivera peut être à les faire passer sous Scilab ou Octave avec les gens de PS25.

Résultat : D. Je pensais avoir un peu plus compte-tenu que je l’avais bien bossé mais c’est déjà bien :-) .

LO27 – Algorithmic and programming : level 2

De l’informatique. No comment, que de la base mais en anglais. Le prof était bien (du peu que j’ai vu) et il travaille sur des choses intéressantes. En plus, comme il était en avance sur le cours de LO21 (LO27 mais en français), il a pu montrer des choses plus intéressantes comme des éléments sur la construction des compilateurs, les graphes et les algorithmes de recherche de chemin.

Résultat : A. Encore L022 et j’ai le grand chlem A des UV d’info de TC.

TX20 – Travaux de laboratoire

Même si on a jamais vu la tête d’un laboratoire. UV intéressante parce que c’est un projet personnel (depuis le choix du sujet jusqu’à les réalisation). Résultats : quelques hacknights à la caféine et au nanar chez Dise, génial quoi :-) . Je ferai le bilan avec plus de détail dans un autre post.

Résultat B. No comment.

LJ00 – Japonais niveau 0

UV d’initiation au Japonais. La prof est japonaise et, dans un sens, c’est peut être ça le problème parce qu’elle a l’air de penser que nous aussi nous sommes Japonais :-p . Concrètement c’est 3h ininterrompu de Japonais où on essaie plus ou moins de déduire le sens de ce qu’on nous raconte et de prendre des notes à l’arrache. Le final consiste à pisser 1000 caractères (argh) et à les apprendre par coeur pour les recracher sans feuille au final (argh²).

Globalement, c’est intéressant si le Japonais vous intéresse par contre je ne la conseille pas à ceux qui ont besoin d’une UV de langue easy.

Résultat : FX. Dommage, mais je suis content de l’avoir suivi (et au moins moi j’ai vu Biji-san :-P ).

EI01 – International outlook

Culture générale en anglais, prérequis pour le cursus anglophone également. Le principe c’est qu’on a plein d’intervenant qui vienne parler de sujet qui vont de l’économie à l’écologie en passant par l’Europe.

C’est dur de donner une moyenne à générale de l’UV vu la quantité d’intervenant différent. La qualité du cours dépend réellement de celle de l’intervenant qui, entre leur niveau d’anglais et l’intérêt de leur sujet, varie de très bien à carrément médiocre.

Résultat : D. Cool, je pensais pas l’avoir :-) .

February previsions

Category : C#, English, General, Google Summer of Code 2008, Life, Mono, Programming, School

Mono

Thanks to the change of school semester at my school, I’m going to have a break in February of almost 4 weeks during which we are supposed to participate to some activities chosen among a list.

The cool thing is that I managed to make « contributing to Mono » one of those activities. Thus, I will have 4 weeks to work on Mono and integrating SoC’s ParallelFx work into the mainline tree with the blessing of my school. Yay :-) !

FOSDEM

There are also a bunch of other nice things I will be able to do this February. Going to FOSDEM is one of those (I took the train tickets this afternoon) which mean I can now wear the pretty badge too :

I'm going to FOSDEM, the Free and Open Source Software Developers' European Meeting

Unless we have trains problems on the way, we should be there for the Fosdem’s Beer Event too, so if you want to discuss Mono, ParallelFx or whatever around an (excellent) Belgian beer be sure to come by ;-) .

Prologin

Finally, I was qualified to go into the semi-finals of Prologin, the French algorithmic contest for young people, this year again. It will be a good occasion to see old faces.

For the first time there are also proposing C# as a qualification language. Hopefully, it will mean no on-the-fly C++ learning for me this time :-) .