Pour continuer où le compte-rendu #1 s'arrêtait, c'est-à-dire samedi
après-midi, Antony m'a invité à venir souper avec lui, Steve
Blackburn et d'autres participants de RESoLVE. Il m'a conseillé
fortement de publier à OOPSLA le plus tôt possible et de profiter du
fait que mon projet est actuellement "sexy".
Avant d'aller souper nous avons pris une bière à l'hôtel. Parmis les
conversations les plus intéressantes que j'ai eues, celle avec Anil
Madhavapeddy était remarquable. Ce dernier était à la fois très
dynamique, avec un débit tellement rapide que je devais le faire
répéter de temps à autre et un enthousiasme particulièrement
communicatif. Anecdote qui ne sera savoureuse que pour ceux qui ont
lu le compte-rendu de POPL (pas juste comme somnifère ;-)), Anil est
le superviseur de Heidi, la rousse de Cambridge, qui apparaît dans
une des photos que je vous ai envoyée (dans le compte-rendu de
POPL). Leur projet est particulièrement excitant, ils travaillent
sur un OS micro-kernel en OCAML qui tourne sur l'infrastructure
d'Amazon. L'objectif est de permettre d'établir des canaux de
communication sécurisés personnels pour plusieurs devices
sur des réseaux différents, potentiellement avec firewalls et
autres. Je pourrai vous donner plus de détails mercredi après sa
présentation.
Le reste du souper était intéressant, bien que comme seul étudiant
parmi un groupe de "seniors" du milieu académique et industriel j'ai
davantage été observateur que participant. L'objectif avoué d'Antony
dans l'invitation était de discuter de leur projet de framework de
VM pour langage dynamique. Dans les faits, on en a peu parlé et la
conversation a dérivé sur la politique américaine et australienne,
les différences culturelles entre les pays, le choix d'un Chair
général pour une prochaine conférence, les aléas de l'organisation
d'une revue par les pairs d'articles, etc. J'ai également su que la
hache a été mis dans le projet Maxine chez Oracle et j'ai eu droit à
des anecdotes internes sur la tentative ratée d'Intel de développer
une VM haute-performance pour Java pour éviter de laisser une partie
critique de la stack informatique dans les mains de son principal
concurrent de l'époque, Sun.
Steve a dit essentiellement la même chose qu'Antony sur l'idée de
faire une VM haute-performance pour JavaScript (ce qui n'est
certainement pas suprenant puisqu'ils travaillent ensembles)
c'est-à-dire qu'avec l'effort industriel actuel derrère le langage
c'est difficile d'obtenir rapidement des résultats comparablement
intéressants. Je ne me rappelle plus ses termes exacts, mais il me
semble qu'il ait dit qu'il n'y avait plus rien à faire avec Java non
plus à ce niveau, ce qui expliquerait qu'ils sont en train de se
tourner vers les langages dynamiques. Il a par la suite argumenté
qu'au niveau industriel c'est toujours possible de mettre des
ressources démesurées pour optimiser même le pire des langages. Pour
supporter son argument, il m'a dit que certains estiment à 1
milliards $ l'argent qui a collectivement été mis sur l'optimisation
de Java. Steve a envoyé une demande de financement en Australie la
semaine dernière pour leur projet de VM et est en attente de
réponse. Atony s'est plaint qu'il était difficile de faire passer
des projets "d'infrastructure" à NSF et a même lancé à la "blague"
qu'il aurait peut-être mieux fait d'aller en industrie pour faire de
l'infrastructure. Il aurait peut-être eu moins de liberté sur le
choix de ce qu'il aurait construit mais au moins il aurait pu le
faire.
Il y a eu des discussions sur la position des gros joueurs, Oracle,
VMWare et de leurs projets en cours, dont je ne me rappelle plus
malheureusement. Dans tous les cas, je suis ressorti avec la nette
impression que Steve et Antony entretiennent des contacts étroits
avec plusieurs personnes en industrie et qu'ils orientent leurs
projet de recherches en fonction de ce qui s'y passe. J'ai également
eu l'impression que leurs projets étaient solides techniquement mais
clairement incrémentaux, ce qui a l'avantage d'être facilement
transférable en industrie et plus facile à vendre pour obtenir du
financement industriel mais le désavantage d'avoir une demi-vie
limitée, ce qui oblige à suivre les tendances industrielles pour
éviter de rater la vague ou de tomber en désuétude.
Dimanche, j'ai pris la majeure partie de la journée pour travailler
sur Photon, pour faire quelques optimisations et expériences
supplémentaires pour l'article et j'ai peu rencontré de gens. J'ai
tout de même parlé avec un allemand de l'université de Dresden. Il
m'a partagé qu'un de ses collègues qui travaille avec les FPGAs a
battu le record du monde pour la résolution du problème des
N-Reines, c'est-à-dire qu'ils ont résolu une instance de 26x26 alors
que le précédent record était 25x25, en exploitant le circuit de
report de retenue qui sert normalement à accélérer les additions
matérielles. Il a pas pu m'expliquer comment le problème pouvait
être converti de cette façon car ce n'est pas son projet mais j'ai
tout de même trouvé l'anecdote intéressante.
Aujourd'hui, j'ai également passé la plus grosse partie de la
journée à travailler sur Photon. J'ai été surpris de voir une
session entière réservée à l'efficacité énergétique dans les centres
de données. En même temps, ça fait du sens étant donné la monté de
"l'informatique nuagique".
Pendant le lunch, j'ai parlé avec Chen Ding,
prof à l'université de Rochester. Après mon pitch de 30s sur Photon,
sa réaction fut "It seems like fun!". Il m'a même dit que
l'instrumentation dynamique de Ruby pourrait peut être être fait
avec une approche similaire. Il m'a ensuite partagé qu'il
travaillait sur le Paraléllisme Sécuritaire en Ruby. Il avait un
fort accent asiatique (chinois?) et j'ai eu de la difficulté à
comprendre le détail de ses explications mais il semble avoir un
intérêt marqué pour les optimisations dynamiques exploitant le
paraléllisme tout en préservant la sémantique séquentielle du
langage original. J'ai tâté l'eau pour voir s'il serait intéressé à
appliquer ses idées à JavaScript, il semblait nettement préférer
travailler avec Ruby ;-). Il connaissait Laurie de McGill et m'a
suggéré de participer à CASCON, histoire de garder contact et d'être
avec la gang de compilation ;-).
Dans le reste de la journée, ce qui m'a marqué c'est le
développement d'approche probabilistes pour le développement de
certaines tâches (par opposition aux méthode déterministes).
D'abord, un présentateur a suggéré l'utilisation de compteurs de
performances pour obtenir de l'information suffisante pour
déterminer la cause de bugs sur du logiciel déployé en production.
Puisque l'approche n'est pas garantie d'obtenir des résultats ça a
soulevé du scepticisme de la part d'une prof plus agée, de
l'université de Virginia je crois. Ensuite, la présentation la plus
intéressante fut une présentation invitée de Vikash K. Mansinghka dans
laquelle il présentait un DSL pour l'apprentissage machine, basé sur
des primitives probabilistes plutôt que déterministes (booléennes).
Il argumentait avoir obtenu un facteur 100x en nombre de lignes de
code et jusqu'à 1000x en vitesse d'exécution avec une implémentation
sur FPGA. Le coeur de l'idée c'est qu'apprentissage machine, les
fondements mathématiques offrent un parallélisme et un
non-déterminisme inhérent qui n'est pas supporté efficacement par
nos architectures séquentielles déterministes modernes. Pour
exprimer les algorithmes, ils ont développé un langage spécifique au
domaine basé sur une variante de scheme sans la mutabilité. Anecdote
de métacircularité, à une question de l'auditoire sur les fondaments
réellement révolutionnaires de leur approche, Vikash a argumenté que
leur langage, Venture, est le premier langage offrant des primitives
probabilistes capable d'implémenter son engin d'inférence dans son
propre formalisme.
La tendance sous-jacente semble suivre ce que David Ungar
argumentait à DLS 2011, c'est à dire qu'il est temps d'abandonner le
déterminisme et les garanties de correctitude pour aller chercher la
prochaine vague d'amélioration majeure de performance (pour les
applications qui s'y prêtent). Ma perception c'est que les méthodes
probabilistes vont dans ce sens.
Bon, j'arrête ici, j'ai un rapport à terminer ;).
Erick