Salut à tous,
J'espère que ce compte-rendu servira à la fois à orienter notre
travail courant et donner un exemple à nos nouvelles recrues (je
pense à toi Alex ;-)) de ce que la participation à une conférence
apporte au processus de recherche académique. Pour résumer en une
ligne, on a plein d'opportunités de collaboration et mon système est
utile!
Pour résumer en deux paragraphes, le plus gros retour sur
investissement de cette conférence est la liste des collaborations
et utilisateurs potentiels pour mon système:
- Peter Thiemann, prof en Allemagne à l'Université de Freiburg
est intéressé à utiliser Photon pour vérifier des propriétés de
sécurité sur les programmes en interceptant toutes les
opérations du modèle objet. Il est intéressé à ce que je vienne
passer quelques semaines dans son lab pour collaborer, encore
plus si j'arrive avec mon propre financement.
- Martin Bodin à l'INRIA est en train de formaliser la
sémantique de JavaScript dans Coq avec l'objectif d'être aussi
près de la spécification officielle que possible. Cela va lui
servir à prouver des propriétés sur des analyses qu'il concevra
éventuellement. Bien qu'une collaboration directe n'était pas
évidente, nous allons rester en contact.
- Le email de Vineet Rajani, étudiant en Allemagne, m'a été
référé. Celui-ci aurait besoin de pouvoir instrumenter à
l'exécution une VM JavaScript pour vérifier la préservation de
secrets. Je vais le contacter dans les prochaines semaines pour
clarifier le tout.
- Lorenz Breidenbach, étudiant sous-gradué en 3e année à ETH
Zurich et actuellement en échange à Imperial College à Londre a
également besoin d'instrumenter JavaScript pour vérifier tous
les accès à l'environnement dynamique (scope chain) pour valider
avec des programmes de test qu'aucun contre-exemple n'est trouvé
sur les propriétés qu'il cherche à prouver. Une collaboration à
l'été, après ses cours et les miens, est envisageable. Il sera
alors de retour à ETH. Il pense continuer à la maîtrise alors
c'est une collaboration qui à un peu plus long terme pourrait
donner des fruits.
L'idée plus générale c'est que beaucoup de travail de nature
théorique est en cours sur JavaScript. Cependant, les gens ont
besoin d'instrumenter les VMs pour valider empiriquement ou pour
développer certaines propriétés/transformations. On a le potentiel
d'être beaucoup plus efficace à faire l'implémentation qu'eux donc
une collaboration est naturelle, puisque nos travaux sont
complémentaires. Ça ouvre la porte à plusieurs publications
relativement faciles comme 2e ou 3e auteur en autant qu'on
participe au travail de vérification empirique. De plus, ça va
informer les cas d'utilisation que j'utiliserai pour mes propres
publications comme auteur principal. Je pense donc continuer
d'aller à POPL, les opportunités de collaboration me semblent plus
abondantes là qu'à SPLASH ou PLDI.
Pour les gens intéressés, voici donc la version longue et
narrative de ma participation à la conférence de la semaine
dernière. Je pense la traduire en anglais pour donner du feedback
aux organisateurs et aux donateurs qui ont rendu l'évènement
possible, en particulier pour le Programming Language Mentoring
Workshop. S'il y a des choses propres au lab que vous préfériez
voir omise de la version anglaise, dîtes-le moi.
Erick
~~~~~~~~~~~~~~~~~~~~~~~~~
La dernière semaine fut extrêmement stimulante et profitable. Mon
objectif initial de participation était d'avoir l'occasion
d'interagir avec des mentors en dehors de notre groupe pour avoir
une perspective plus large de la recherche académique. Mon second
objectif était de me pratiquer à présenter mon travail, à la fois
pour devenir plus habile et efficace à le faire et pour obtenir de
la rétroaction sur le travail réalisé, complémentaire aux
commentaires que j'ai déjà reçu de Marc et Bruno. Après une
semaine, je dois dire que mon besoin de mentorat était moins fort
qu'initialement et que j'ai obtenu plus de feedback que j'aurais
imaginé au départ! Je veux vous présenter à la fois les points
marquants de la dernière semaine et m'assurer de laisser une trace
écrite de cette participation.
Pour mettre les choses en perspective, il s'agit de ma quatrième
participation à une conférence académique de premier niveau. J'ai
assisté à OOPSLA 2007 [1] à Montréal (maintenant SPLASH), PLDI
2010[2], SPLASH 2011 [4] et maintenant c'était POPL 2013 [3]. Ces
trois conférences sont organisées par SIGPLAN [5], un groupe
d'intérêt de l'ACM, qui cherche à faire avancer le développement
technique de technologies liées aux langages de programmation. Mes
deux premières participations furent à titre d'observateur. La
troisième comme co-auteur avec Maxime de notre travail sur Tachyon
(Maxime avait fait la présentation) et la dernière comme
participant, avec deux présentations, d'une et de 10 minutes sur mon
travail de maîtrise, où je peux dire pour la première fois que j'ai
des contributions originales. De manière plus générale, on peut dire
que je passe progressivement de "consommateur" à "producteur
d'idées" et que la satisfaction que je retire de mes participations
évolue en parallèle.
Pour la deuxième année cette année, les organisateurs de POPL
proposent un atelier d'une journée à des étudiants sous-gradués et
gradués l'expérience d'une conférence de premier niveau et de
l'interaction avec la communauté de chercheurs. Cet atelier se
nomme Programming Language Mentoring Workshop, PLMW. Je n'ai pas les
chiffres exacts mais nous étions potentiellement plus de 100
étudiants à y participer, principalement des États-unis et de
l'Europe, avec quelques fiers représentants canadiens de McGill et
de l'UdeM (moi!). La majorité des étudiants étaient sous-gradués,
plusieurs en avant-dernière année de leur programme de Bacc (il se
trouve que le Royaume-Uni, l'Europe, les États-Unis et le Canada ont
des systèmes d'éducation différents et les gens ne rentrent pas au
doctorat au même moment, alors j'ai choisi de calculer à partir du
moment où les gens entrent au doctorat). Fait intéressant, j'ai
l'impression que le nombre de filles ayant participé était plus
élevé que leur représentation aux études graduées en informatique et
j'aurais tendance à croire que c'était délibéré de la part des
organisateurs. J'ai personnellement trouvé que ça a rééquilibré un
problème de notre domaine et ça a rendu l'expérience plus
intéressante.
À proprement parler, PLMW a lieu la deuxième journée de la
conférence mais les participants sont invités à participer à
l'ensemble de la conférence. La première journée nous avons donc eu
droit au TutorialFest, qui a pour objectif d'amener les participants
à comprendre un sujet particulier. L'offre comprenait une
présentation sur un modèle de programmation concurrente à mémoire
partagée sur les processeurs modernes, qui surprenamment peuvent
exhiber des incohérences dans les accès mémoires pour offrir de
meilleures performances. Le modèle proposé abstrait et formalise le
comportement légèrement différents de ces processeurs. Une deuxième
présentation a survolé l'évolution et l'état de l'art sur la
vérification automatique de terminaison de programmes. La partie
excitante de cet atelier est que l'état de l'art commence à
s'appliquer à un sous-ensemble intéressant de langages répandus (C,
Java et Haskell). Une troisième présentation a montré un usage
avancé de Coq, un assistant à la preuve interactif, permettant
d'abstraire des patrons réguliers. L'exemple s'appliquait à la
sémantique d'un langage de programmation jouet. Je vous réfère au
reste du programme pour plus de détails [15]. Ces présentations
furent intéressantes mais vous devez garder en tête qu'un "tutoriel"
dans cet atelier c'est en fait une présentation magistrale et non un
laboratoire interactif.
En parallèle aux présentations, j'ai eu l'occasion de connaître
plusieurs étudiants. Mon co-chambreur est portugais et travaille sur
la complexité Kolmogorovienne, qui décrit les ressources minimales
nécessaires pour représenter un objet à l'intérieur d'un ordinateur.
Son travaille de maîtrise consiste à spécifier un sous-ensemble
"intéressant" des objets à représenter pour une définition
"d'intéressant" qu'il reste à clarifier. Il se trouve qu'en plus
d'être jovial, intéressé et surprenamment bon vulgarisateur, il
avait également une propension à ronfler suffisamment pour réveiller
un éléphant. Je vous conseille d'apporter des bouchons pour éviter
certains désagréments potentiels du partage de chambre, si vous
décidez de participer dans le futur. Un de mes meilleurs "nouveaux
amis", Adhitya, est indien et fait sa maîtrise à Georgia Institute
of Technology sur la programmation système. J'ai également
rencontré, Heidi, étudiante à Cambridge dans le lab qui a créé le
Raspberry Pi. En plus d'être éloquente et vraiment brillante (elle a
joint le lab en deuxième année de bacc), elle est en plus un exemple
flamboyant de l'importance d'intégrer les roux dans la communauté de
recherche. Parlant de roux, j'ai également rencontré Thomas, un
autre roux, allemand cette fois, qui est actuellement en
questionnement à savoir s'il veut faire un PhD. Selon lui et son
collègue Mattias, le système allemand de financement à la recherche,
davantage orienté vers des projets que vers les individus, rend
difficile le bootstrap d'une carrière en recherche. Voici une photo
de la communauté rousse:
La deuxième journée, à PLMW, nous avons eu droit à un mélange de
présentations techniques et générales sur une carrière en recherche.
La première présentation, de Peter O'Hearn, fut
très intéressante et touchait l'analyse statique de programmes pour
déterminer des classes d'erreurs fréquentes. Elle contenait une
rétrospective de l'évolution du domaine dans les 10-15 dernières
années, de ses premières applications à la détection d'erreurs dans
des pilotes de bas niveau sur windows à la mise à l'échelle à des
plus gros programmes. C'était vraiment excitant de voir comment
l'évolution du domaine rend possible l'application des techniques à
un nombre grandissant d'application dans le "vrai monde". Elle
contenait également une présentation intuitive de l'interprétation
abstraite qui ne requérait pratiquement aucune math et constitue à
ce jour la meilleure introduction que j'ai eu [14].
La deuxième présentation fut introduite par Philippa Gardner, qui a
mis l'emphase sur l'importance de la communauté de POPL et du
plaisir qu'elle a de revoir des collègues, année après année, avec
qui elle a eu l'occasion de travailler dans le passé. Elle a
présenté son collègue Davide Sangiorgi en disant: "we mate... (!)
euh met [sic] while ...". J'en ai conclu soit que l'excitation l'a
fait fourcher de la langue ou que les liens dans la communauté de
POPL sont plus étroits que j'aurais anticipé. Cette deuxième
présentation a porté sur le raisonnement formel sur des systèmes
concurrents, à plusieurs processus.
Les deux présentations de cette première session furent les plus
intéressantes pour quelqu'un qui n'était pas familier avec le
domaine. Pour le reste de la journée, les présentations de Matt
Might, Jan Vitek et Phil Wadler m'ont le plus intéressé. Matt,
principalement connu pour son travail sur les analyses statiques, a
parlé de sa conception du processus de la recherche, a donné des
conseils sur la façon de réussir son PhD, a discuté de la place
inhérente de l'échec dans l'émergence d'idées intéressantes et a
placé le tout dans le contexte de devenir un professeur
d'université. J'ai été un peu déçu qu'il n'aborde pas la question de
ce que les gens avec un PhD qui ne deviennent pas prof font.
Jan Vitek, récemment connu pour son travail sur les aspects
dynamiques de JavaScript, a partagé ses réflexions sur ses projets
de recherche des 20 dernières années [6]. Il a abordé l'impact des
différents projets et a discuté de nombreux buts non-accomplis,
comparés aux objectifs proposés dans les demandes de financement. Le
thème récurrent semble être l'échec à atteindre les objectifs
initiaux, qui semblait être corrélé avec l'ambition du projet de
recherche. Il a évalué l'importance de son travail par la
reconnaissance des articles publiés et les positions occupées par
ses anciens étudiants, en laissant l'auditoire décider si cela était
un échec ou une réussite. Jan a terminé sa présentation avec un
commentaire extrêmement audacieux vu l'audience, suggérant que la
communauté se penche sur ce que les programmeurs font dans le "vrai
monde" et que ceux-ci utilisent des langages dynamiques non-typés
(!). Il y a eu un certain inconfort dans l'assistance et un
applaudissement embryonnaire lorsque le second présentateur, Robert
Spencer a exprimé son opinion que le typage dynamique est un cas
particulier du typage. Cet échange fut une belle illustration des
controverses et tensions entre différents points de vue concurrents
à l'intérieur d'une communauté de chercheurs.
Phil Wadler, connu pour son travail sur Haskell et les Monads, a
donné une présentation sur la façon de vivre sa vie, grandement
inspirée d'une présentation de Richard Hamming, You and Your
Research [7]. Intéressante synchronicité, Vincent Foley, qui a été
stagiaire avec nous l'été dernier, m'avait envoyé un enregistrement
vidéo de cette présentation dans un cours que Phil donne [8]. Il est
encore plus coloré en personne et a tenu à rendre l'interprétation
des passages de sa présentation selon l'accent de l'auteur original,
tout en étant particulièrement emphatique (lire crier de manière un
peu aléatoire de temps à autre). Dans la deuxième partie de sa
présentation, il a répété et mis l'emphase sur l'importance de
s'exprimer clairement en nous faisant promettre qu'on acheterait
tous "The Elements of Style" [9]. Dans la période de question, il a
conseillé à ceux pour qui l'anglais est une langue seconde de faire
relire leur publication par quelqu'un pour qui l'anglais est leur
langue première.
Entre deux présentations, en discustant avec mon voisin italien,
Daniele, j'ai appris que son groupe construisait une sémantique
formelle pour JavaScript dans Coq dont l'objectif est d'être aussi
près que possible de la spécification officielle. L'objectif final
est de pouvoir faire des preuves sur les algorithmes d'analyse qui
seront développés. En discutant avec son collègue qui fait le gros
du travail d'encodage, Martin, nous avons partagé certaines
anecdotes sur la complexité de la sémantique de JavaScript et
comparé leur travail à lambdaJS [11].
Suite aux présentations de l'atelier, nous sommes passés au vin
d'honneur et les participants s'étant inscrit pour le One-Minute
Madness se sont placés en ligne pour plus de 90 minutes de topos
d'une minute qui ont couvert toutes sortes de sujets. La qualité de
préparation allait d'inexistante à élaborée et le style de formel à
marketing télévisé, avec pour constante que l'immense majorité des
présentateurs a respecté la règle d'une minute, donnant un rythme
très intéressant à l'ensemble de la session. L'objectif était de
faciliter la diffusion des intérêts des participants et
l'établissement de premiers contacts avec d'autres participants.
Lorenz Breidenbach a gracieusement pris des photos de tous les
présentateurs et nous les a envoyées:
Peter Thiemann, professeur à l'université de
Freiburg et responsable des transitions du diaporama, est venu
me voir pendant le vin d'honneur par la suite pour voir si mon
système pouvait s'appliquer à la vérification d'invariants de
sécurité dans l'accès de propriété d'object pendant l'exécution.
Ma page personnelle [12] lui a permis de connaître le nom de mon
directeur de recherche, Marc Feeley, avec qui il avait eu
l'occasion d'échanger il y a plusieurs années à ICFP [13].
J'étais tellement excité que quelqu'un s'intéresse à mon travail
que j'ai eu de la difficulté à donner une attention suffisante
aux explications de Peter et je l'ai probablement fait répéter à
deux ou trois reprises les mêmes choses. La discussion a duré
15-30 minutes et s'est conclue sur ma promesse de le recontacter
par email pour discuster d'opportunités de collaboration.
En soirée, après le vin d'honneur, je suis sorti dîner et socialiser
avec d'autres étudiants. Le reste de la semaine fut entrelacée de
présentations, de connexions au dîner, au souper et en soirée,
parfois plus tard que ce qui aurait été raisonnable.
Le lendemain, la conférence principale POPL a démarrée pour 3 jours.
Dans mon cas, plusieurs présentations utilisaient un formalisme que
j'avais beaucoup de difficulté à suivre et le rythme rapide de
certaines présentations et leur focus sur le formalisme m'a empêché
d'atteindre le coeur des idées présentées. J'ai réalisé dans les
trois jours qui ont suivi que j'ai retiré beaucoup plus de
l'interaction avec les participants à la conférence dans les lunchs
et évènements sociaux que dans le cadre des présentations
elles-mêmes. Entre autres, j'ai obtenu le email du collègue d'un de
mes voisins de table, Vineet Rajani, qui serait probablement
intéressé par mon système. J'ai également établi un contact initial
avec un étudiant à ETH, Lorenz Breidenbach, actuellement en échange
à Imperial College à Londre, qui serait intéressé à utiliser un
système comme le mien qui réifierait l'environnement en JavaScript.
Après avoir échangé nos contraintes respectives de travaux et
autres, on a pu établir que le début de l'été serait un bon moment
pour en reparler et la fin de l'été pour se rencontrer pour une
collaboration potentielle.
Le vendredi, après avoir survolé certains articles écrits par le
groupe de Peter Thiemann et réalisé qu'ils avaient tenté
quelquechose de similaire à mon système dans le passé, j'ai dîné en
sa compagnie pour comprendre les problèmes qu'ils avaient
rencontrés, les motivant à changer d'approche. Ça m'a fait réalisé
que j'avais potentiellement des solutions techniques pour les
adresser mais qu'il me restait du travail à faire pour le valider.
J'ai ensuite proposé à Peter de visiter son groupe vers la fin de
l'été en août pour faciliter les échanges et il était enthousiaste.
Il me reste à valider avec Marc et Bruno ce qu'eux en pense et le
financement que j'aurais de disponible pour le faire. Je profiterais
de l'occasion de cet autre voyage en Europe pour passer quelques
jours à Zurich pour travailler avec Lorenz.
L'opportunité principale que je vois pour notre groupe, qui a un
focus sur l'implémentation de systèmes, c'est qu'en devenant
particulièrement efficace à le faire, on pourrait construire de
l'infrastructure pour le reste des chercheurs, en particulier ceux
dont les intérêts principaux sont sur la théorie. Mon survol de
certain articles de POPL m'a fait réalisé que l'implémentation des
systèmes semble être nécessaire mais de seconde classe dans
plusieurs d'entre eux. Je pense qu'on devrait donc continuer de
participer à POPL.
La deuxième réalisation c'est que JavaScript est encore un sujet
chaud et plusieurs groupe travaillent dessus avec diverses
approches. Cela ouvre de nombreuses opportunités de collaboration
lorsque les approches sont complémentaires. C'est donc le moment
d'en profiter, en gardant en tête que la vague va diminuer
éventuellement.
Il y a beaucoup d'autre choses à dire mais cela me semble les points
principaux en rapport avec nos activités et ça me semble donner un
point de vue intéressant sur le déroulement d'une participation à
une conférence qui a débouché sur des opportunités de collaboration
futures.
Erick
[1] OOPSLA: Object-Oriented Programming, Systems, Languages and
Applications
[2] PLDI: Programming Language Design and Application
[3] POPL: Principles Of Programming Languages
[4] SPLASH: Systems, Programming, Languages and Applications:
Software for Humanity
[5] SIGPLAN: Special Interest Group on Programming Languages
[6] http://www.doc.ic.ac.uk/~gds/PLMW/PLMPV_PD.pdf
[7] http://www.cs.virginia.edu/~robins/YouAndYourResearch.html
[8]
http://www.youtube.com/watch?v=uOsMt-vrWQ4&list=PL395B50FC04752DA8&index=20
[9] The Elements of Style, Strunk and White
[10] http://www.informatik.uni-freiburg.de/~thiemann/
[11] The essence of javascript, http://dl.acm.org/citation.cfm?id=1883988
[12] http://ericklavoie.com
[13] ICFP: International Conference on Functional Programming
[14] http://www.cs.ucl.ac.uk/staff/p.ohearn/Talks/POPL12tutorial.pdf
[15] http://wrigstad.com/popl13/tutorialfest.html