Sunday, June 22, 2008

ruby 会議


Cette fin de semaine c'etait l'annuel Ruby Kaigi (lit : "reunion sur le Ruby"). Ruby est un langage de programmation de haut niveau (3e generation, abstrait, etc.) C'est le langage que j'utilise au bureau pour developper MS2 (en japonais). Un langage de haut niveau integre beaucoup d'abstractions. Par exemple, le meme code ruby peut fonctionner autant en windows qu'en linux ou sur mac. Ruby possede aussi toutes les librairies pour rendre les taches classiques vraiment simple.

Par exemple, en C++ une simple boucle (un des principes de base de la programmation) ce traduit comme ceci :

for (int i = 0; i < 5; i++) {
  cout << "This line will show up 5 times (" << i << ")" << endl;
}


Pas des plus evident pour les non-inities. En ruby l'exact meme resultat pourrait etre obtenu comme cela :

5.times do |i|
  puts "This line will show up 5 times (#{i})"
end


Meme nombre de ligne, mais personnellement je trouve la maniere Ruby plus comprehensible. Evidement, pour les gens qui ne connaissent rien a la programmation, c'est peut-etre tout aussi esoterique.

Quoiqu'il en soit, cette fin de semaine j'ai entendu parler de tout ce qui se passe avec Ruby presentement. Des projets "cool" en developpement aux nouvelles fonctionnalites dans les prochaines versions du langage en passant par les facons d'integrer Ruby dans une entreprise.

90 pourcent de la fin de semaine c'est passe en japonais avec seulement trois ou quatre presentations en anglais. Heureusement, de sympatiques informaticiens bilingues ont su traduire les grandes lignes sur un ecran texte pour les presentations en japonais. Avec les fiches Power Point et ma faible comprehension du japonais je ne m'en suis pas sorti trop mal. Mais ca demande une concentration qui me rend tres somnolent apres une heure seulement ! Pour la deuxieme journee j'ai emmene mon laptop pour au moins avoir quelque chose a faire pour me garder reveille, meme si ca veut dire que je porte moins attention aux presentations !

Les conferences ont eu lieux dans le centre de conference a Tsukuba a environs 45 minutes du centre de Tokyo sur la ligne de train du meme nom.

Ma compagnie paye la conference a la condition que je fasse un bref rapport sur les differentes presentations qui ont eu lieu durant la fin de semaine. Comme au moment ou j'ecris cela c'est encore frais dans ma memoire et que, en fait, ca pourrait interesser une ou deux personnes, je vais essayer de resumer un peu les conferences auquelles j'ai assistees. Pour les personnes qui ne comprennent rien a ce que je raconte depuis le debut de ce blog, c'est votre signal pour arreter de lire !

JRuby :
  • Une des premieres conference samedi a fait la presentation de JRuby. Normalement, l'interpreteur de Ruby est ecrit en C. Ceci est un port de l'interpreteur en Java. Ce qui est interessant c'est qu'en plus de pouvoir utiliser les fonctions communes de Ruby, JRuby permet d'inclure les librairies de Java, meme l'impressionnante librairie Swing. Comme Java est tres implique dans les services Web et que le langage Ruby (avec Ruby On Rails) est aussi tres actif sur le web, c'est une alliance fort interessant. Le presentateur a d'ailleur demontre comment envolloper une application rails dans un WAR et ensuite deployer sur un serveur Tomcat.


Rubinius :
  • La version 1.9 de ruby (presentement en developpement) presente plusieurs nouvelles fonction pour faire de la virtualization. Le projet Rubinius (de ce que j'en ai compris) essaye de faire la meme chose mais a ca maniere. Normalement, l'interpreteur Ruby roule dans le systeme d'exploitation. L'idee d'une machine virtuelle c'est que l'interpreteur Ruby roule un AUTRE interpreteur. Ceci permet en theorie d'obtenir plus d'information sur l'environnement et l'etat dans lequel roule le programme. Et comme Ruby permet quelques passe passe de Meta-Programmation completement saute, avec la machine virtuelle il est par exemple possible de definir des nouvelles methodes pour obtenir le contexte d'une application et d'agir sur ce contexte plutot que dans le contexte de la methode. La personne qui decide de faire ce genre de design devrait toutefois avoir une foutu de bonne raison ! Le gros probleme avec Rubinius c'est que toute cette complexite a un prix : la performance. Pour l'instant, c'est vraiment pas fameux il semble.


Internationnalization
  • J'ai l'impression que la moitier de la journee de samedi a ete passe a discuter differentes facettes du probleme de l'internationnalisation. Comment convertir les millions d'encodage de pars le monde d'une facon simple et efficace. Personnelement, le sujet est vraiment compliquer et pour une raison que j'ignore je n'arrive tout simplement pas a m'y interesser serieusement ce qui fait que j'ai dormi la majeure partie de la presentation.


Samedi apres-midi
  • Il y a eu un paquet de plus courtes presentations en fin de journee samedi. Entre autre un professeur d'universite qui est venu expliquer pourquoi, dans un court d'introduction a l'informatique il a choisit d'utiliser Ruby. Ruby est simple, flexible, et IRB permet l'execution et le debugage en temps reel. Une presentation sur RSpec, qui est un "framework" pour du developpement oriente test (Test Driven Developpement). Ce que je retiens de la presentation c'est la presentatatrice qui a dit : "70 pourcent de notre code est RSpec". Pour elle ca semblait etre une tres bonne chose, mais il me semble que c'est un peu trop extreme a mon gout. J'ai attrape la fin d'une presentation ou le type faisait des demonstrations interessante de scripting avec ruby et VIM ou il postait du texte de VIM a mixi en utilisant une commande avec un "hook" en Ruby. Une courte discussion de 5 minutes aussi sur une facon de securiser DRuby, un moyen de distribuer du Ruby.


Ruby-Cocoa et MacRuby :
  • Un employe de Apple est venu faire une presentation sur les deux projets sur lequel il travail presentement. Deux maniere d'utiliser Ruby plutot que du Objective-C. Considerant que 80% des gens present se promenait avec des Mac, la periode de question fut assez anime. Pour ma pars, je n'ai jamais toucher a un Mac de ma vie, alors l'idee de developper des application Mac en Ruby m'affecte tres peu.


REST Style :
  • Un type est venu faire une presentation sur comment designer une application REST. Il s'agit de developper des applications web en utilisant des URLs RESTful. Utiliser des URL intelligent qui represente bien l'architecture du site et son comportement c'est particulierement important pour les SEO (Search Engine Optimisation). Quand un site est completement fait dans un language scripter et dynamique, ca devient facile d'oublier ce qui se passe avec l'URL.


Scaling :
  • Il y a eu aussi une discussion sur comment elargir les performances quand un service est tres en demande. Le grand gagnant de la discussion ? Mettre en memoire tout ce qui est statique (Memoire cache). C'est le seul moyen d'attendre des performances decente avec un minimum de materiel quand il s'agit de traiter plusieurs centaines de requetes a la seconde !


Finalement il y a eu beaucoup de presentation sur toutes sortes de librairies et de logiciels fait en ruby. Dans ceux interessant : JPMobile, Sequel, Datamapper et plusieurs autres !

No comments: