
- propriétaire de deux. Le premier concerne les travaux sur (Brown University) et la seconde, plus récente, - (Université technologique de Virginie). Le prix Dijkstra est décerné pour un travail dont l'importance et l'influence sont visibles depuis au moins dix ans et Maurice est évidemment l'un des spécialistes les plus célÚbres en la matiÚre. Il travaille actuellement comme professeur à l'Université Brown et compte de nombreuses réalisations qui comptent un paragraphe. Il mÚne actuellement des recherches sur la blockchain dans le contexte de l'informatique distribuée classique.
Auparavant, Maurice était déjà venu en Russie pour le SPTCC () et a fait une excellente réunion de la communauté des développeurs Java JUG.ru à Saint-Pétersbourg ().
Cet habrapost est une superbe interview de Maurice Herlihy. Il aborde les sujets suivants :
- Interaction entre le monde universitaire et l'industrie ;
- Fondation pour la recherche sur la blockchain ;
- DâoĂč viennent les idĂ©es rĂ©volutionnaires ? L'influence de la popularitĂ© ;
- Doctorat sous la direction de Barbara Liskov ;
- Le monde attend le multicĆur ;
- Un nouveau monde apporte de nouveaux problĂšmes. NVM, NUMA et piratage d'architecture ;
- Compilateurs vs processeurs, RISC vs CISC, mémoire partagée vs transmission de messages ;
- Lâart dâĂ©crire du code multithread fragile ;
- Comment apprendre aux étudiants à écrire du code multithread complexe ;
- Nouvelle édition du livre « The Art of Multiprocessor Programming » ;
- Comment la mémoire transactionnelle a été inventée ;
- Pourquoi cela vaut-il la peine de mener des recherches dans le domaine de l'informatique distribuée ?
- Le dĂ©veloppement des algorithmes sâest-il arrĂȘtĂ© et comment continuer ?
- Travailler Ă lâUniversitĂ© Brown ;
- La différence entre la recherche dans une université et au sein d'une entreprise ;
- Hydra et SPTDC.
L'entretien est mené par :
Vitali Aksenov â actuellement, post-doctorant Ă l'IST Autriche et employĂ© du DĂ©partement de technologies informatiques de l'UniversitĂ© ITMO. Effectue des recherches dans le domaine de la thĂ©orie et de la pratique des structures de donnĂ©es compĂ©titives. Avant de travailler Ă l'IST, il a obtenu son doctorat Ă l'UniversitĂ© Paris Diderot et Ă l'UniversitĂ© ITMO sous la direction du professeur Peter Kuznetsov.
Alexeï Fedorov - Producteur chez JUG Ru Group, une société russe qui organise des conférences pour les développeurs. Alexey a participé à la préparation de plus de 50 conférences, et son CV comprend tout, du poste d'ingénieur de développement chez Oracle (JCK, Java Platform Group) au poste de développeur chez Odnoklassniki.
Vladimir Sitnikov - Ingénieur chez Netcracker. Dix ans de travail sur les performances et l'évolutivité de NetCracker OS, logiciel utilisé par les opérateurs télécoms pour automatiser les processus de gestion des réseaux et des équipements réseaux. Intéressé par les problÚmes de performances de Java et Oracle Database. Auteur de plus d'une douzaine d'améliorations de performances dans le pilote officiel PostgreSQL JDBC.
Interaction entre le monde universitaire et l'industrie
Alexey : Maurice, vous travaillez depuis trĂšs longtemps dans un environnement acadĂ©mique et la premiĂšre question est l'interaction entre les sphĂšres acadĂ©mique et industrielle. Pourriez-vous nous parler de la façon dont les interactions entre eux ont changĂ© rĂ©cemment ? Que sâest-il passĂ© il y a 20 ou 30 ans et que se passe-t-il aujourdâhui ?
Maurice : J'ai toujours essayĂ© de travailler en Ă©troite collaboration avec les sociĂ©tĂ©s commerciales car elles ont des problĂ©matiques intĂ©ressantes. En rĂšgle gĂ©nĂ©rale, ils ne sont pas trĂšs intĂ©ressĂ©s ni par la publication de leurs rĂ©sultats ni par des explications dĂ©taillĂ©es de leurs problĂšmes Ă la communautĂ© mondiale. Ils ne sâintĂ©ressent quâĂ la rĂ©solution de ces problĂšmes. J'ai travaillĂ© pour de telles entreprises pendant un certain temps. J'ai passĂ© cinq ans Ă travailler Ă temps plein dans un laboratoire de recherche chez Digital Equipment Corporation, qui Ă©tait autrefois une grande entreprise informatique. J'ai travaillĂ© un jour par semaine chez Sun, chez Microsoft, chez Oracle et j'ai travaillĂ© un peu chez Facebook. Maintenant, je vais prendre un congĂ© sabbatique (un professeur d'une universitĂ© amĂ©ricaine est autorisĂ© Ă prendre un tel congĂ© d'un an environ une fois tous les six ans) et travailler dans , il s'agit d'une sociĂ©tĂ© de crypto-monnaie basĂ©e Ă Boston. Travailler en Ă©troite collaboration avec des entreprises a toujours Ă©tĂ© un plaisir car c'est ainsi que l'on apprend des choses nouvelles et intĂ©ressantes. Vous pourriez mĂȘme ĂȘtre la premiĂšre ou la deuxiĂšme personne Ă publier un article sur un sujet choisi, plutĂŽt que de travailler Ă l'amĂ©lioration progressive des solutions Ă des problĂšmes sur lesquels tout le monde travaille dĂ©jĂ .
Alexeï : Pouvez-vous nous dire plus en détail comment cela se passe ?
Maurice : Bien sĂ»r. Vous savez, lorsque je travaillais Ă Digital Equipment Corporation, moi et Elliot Moss, nous avons inventĂ© la mĂ©moire transactionnelle. Ce fut une pĂ©riode trĂšs fructueuse oĂč tout le monde commença Ă sâintĂ©resser aux technologies de lâinformation. Le parallĂ©lisme, y compris, mĂȘme si les systĂšmes multicĆurs n'existaient pas encore. Durant les journĂ©es Sun et Oracle, j'ai beaucoup travaillĂ© sur des structures de donnĂ©es parallĂšles. Chez Facebook, j'ai travaillĂ© sur leur projet blockchain, dont je ne peux pas parler, mais j'espĂšre qu'il sera bientĂŽt rendu public. L'annĂ©e prochaine, chez Algorand, je travaillerai dans un groupe de recherche Ă©tudiant les contrats intelligents.
Alexey : La blockchain est devenue un sujet trĂšs populaire ces derniĂšres annĂ©es. Est-ce que cela aidera vos recherches ? Peut-ĂȘtre facilitera-t-il lâobtention de subventions ou lâaccĂšs Ă des ressources auprĂšs des entreprises opĂ©rant dans le secteur ?
Maurice : J'ai dĂ©jĂ reçu une petite subvention de la Fondation Ethereum. La popularitĂ© de la blockchain est trĂšs utile pour inciter les Ă©tudiants Ă travailler dans ce domaine. Ils s'y intĂ©ressent beaucoup et sont enthousiastes Ă l'idĂ©e de s'impliquer, mais parfois ils ne rĂ©alisent pas que la recherche qui semble passionnante de l'extĂ©rieur s'avĂšre ĂȘtre un travail trĂšs dur. Cependant, je suis vraiment ravi dâutiliser toute cette mystique autour de la blockchain pour aider Ă attirer les Ă©tudiants.
Mais ce n'est pas tout. Je fais partie du conseil consultatif de plusieurs startups blockchain. Certains dâentre eux peuvent rĂ©ussir, dâautres non, mais il est toujours trĂšs intĂ©ressant de voir leurs idĂ©es, de les Ă©tudier et de conseiller les gens. La chose la plus excitante, câest quand on avertit les gens de ne pas faire quelque chose. Beaucoup de choses semblent ĂȘtre une bonne idĂ©e au premier abord, mais le sont-elles vraiment ?
Fondation pour la recherche sur la blockchain
Vitaly : Certains pensent que lâavenir rĂ©side dans la blockchain et ses algorithmes. Et dâautres disent que câest juste une autre bulle. Pouvez-vous partager votre opinion Ă ce sujet ?
Maurice : Une grande partie de ce qui se passe dans le monde de la blockchain est erronĂ©e, certaines ne sont que des arnaques, d'autres sont surfaites. Cependant, je pense quâil existe une base scientifique solide pour ces Ă©tudes. Le fait que le monde de la blockchain regorge de diffĂ©rences idĂ©ologiques montre le niveau dâenthousiasme et de dĂ©vouement. En revanche, cela nâest pas particuliĂšrement bĂ©nĂ©fique pour la recherche scientifique. Or, si vous publiez un article qui parle des dĂ©fauts dâun algorithme particulier, la rĂ©action qui en rĂ©sulte nâest pas toujours entiĂšrement scientifique. Souvent, les gens rejettent leurs Ă©motions. Je pense que ce genre d'enthousiasme dans ce domaine peut sembler attrayant Ă certains, mais en fin de compte, il y a de vĂ©ritables problĂšmes scientifiques et techniques qui doivent ĂȘtre rĂ©solus. Il y a beaucoup d'informatique ici.
Vitaly : Vous essayez donc de jeter les bases de la recherche sur la blockchain, n'est-ce pas ?
Maurice : J'essaie de poser les bases d'une discipline solide, scientifiquement et mathĂ©matiquement solide. Et une partie du problĂšme rĂ©side dans le fait quâil faut parfois contredire certaines positions trop dures dâautres personnes et les ignorer. Parfois, les gens me demandent pourquoi je travaille dans une zone qui nâintĂ©resse que les terroristes et les trafiquants de drogue. Une telle rĂ©action est aussi dĂ©nuĂ©e de sens que le comportement de vos abonnĂ©s qui rĂ©pĂštent aveuglĂ©ment vos paroles. Je pense que la vĂ©ritĂ© se situe quelque part entre les deux. La blockchain aura un impact profond sur la sociĂ©tĂ© et lâĂ©conomie mondiale. Mais cela nâarrivera probablement pas grĂące Ă la technologie moderne. Les technologies modernes vont se dĂ©velopper et ce que lâon appellera Ă lâavenir la blockchain deviendra trĂšs important. Cela ne ressemble peut-ĂȘtre mĂȘme pas aux blockchains modernes, c'est une question ouverte.
Si les gens inventent de nouvelles technologies, ils continueront Ă lâappeler blockchain. Je veux dire, tout comme le Fortran d'aujourd'hui n'a rien Ă voir avec le langage Fortran des annĂ©es 1960, mais tout le monde continue de l'appeler Fortran. Idem pour UNIX. Ce quâon appelle la « blockchain » va encore faire sa rĂ©volution. Mais je doute que cette nouvelle blockchain ressemble Ă ce que tout le monde aime utiliser aujourdâhui.
DâoĂč viennent les idĂ©es rĂ©volutionnaires ? Impact de la popularitĂ©
Alexey : La popularité de la blockchain a-t-elle conduit à de nouveaux résultats d'un point de vue scientifique ? Plus d'interaction, plus d'étudiants, plus d'entreprises sur le territoire. Y a-t-il déjà des résultats de cette popularité croissante ?
Maurice : Je me suis intĂ©ressĂ© Ă cela lorsqu'on m'a remis un flyer officiel d'une entreprise qui venait de rĂ©colter pas mal d'argent. Il a Ă©crit sur , avec lequel je suis plus que familier. Ce qui Ă©tait Ă©crit dans le dĂ©pliant Ă©tait clairement techniquement incorrect. Les gens qui ont Ă©crit tout cela nâont pas vraiment compris le modĂšle derriĂšre le problĂšme⊠et pourtant cette entreprise a rĂ©coltĂ© beaucoup dâargent. Par la suite, l'entreprise a discrĂštement remplacĂ© ce dĂ©pliant par une version beaucoup plus correcte - et je ne dirai pas quel Ă©tait le nom de cette entreprise. Ils sont toujours lĂ et se portent trĂšs bien. Cet incident mâa convaincu que, premiĂšrement, la blockchain est simplement une forme dâinformatique distribuĂ©e. DeuxiĂšmement, le seuil dâentrĂ©e (au moins il y a quatre ans) Ă©tait assez bas. Les gens travaillant dans ce domaine Ă©taient trĂšs Ă©nergiques et intelligents, mais ils ne lisaient pas dâarticles scientifiques. Ils ont essayĂ© de rĂ©inventer des choses connues et se sont trompĂ©s. Aujourd'hui, le drame s'est attĂ©nuĂ©.
Alexey : C'est trÚs intéressant, car il y a quelques années, nous avions une tendance différente. C'est un peu comme le développement front-end, lorsque les développeurs front-end basés sur navigateur ont réinventé des technologies entiÚres qui étaient déjà populaires dans le back-end : systÚmes de construction, intégration continue, des choses comme ça.
Maurice : Je suis d'accord. Mais cela nâest pas surprenant, car les idĂ©es vĂ©ritablement rĂ©volutionnaires viennent toujours de lâextĂ©rieur de la communautĂ© Ă©tablie. Il est peu probable que les chercheurs confirmĂ©s, notamment les universitaires confirmĂ©s, fassent quelque chose de vĂ©ritablement rĂ©volutionnaire. Il est facile de rĂ©diger un article pour la prochaine confĂ©rence sur la maniĂšre dont vous avez lĂ©gĂšrement amĂ©liorĂ© les rĂ©sultats de vos travaux antĂ©rieurs. Aller Ă une confĂ©rence, se retrouver entre amis, parler des mĂȘmes choses. Et ceux qui font irruption avec des idĂ©es rĂ©volutionnaires viennent presque toujours de lâextĂ©rieur. Ils ne connaissent pas les rĂšgles, ils ne connaissent pas la langue, mais quand mĂȘme... Si vous ĂȘtes au sein d'une communautĂ© Ă©tablie, je vous conseille de faire attention aux nouveautĂ©s, Ă quelque chose qui ne rentre pas dans l'ensemble. En un sens, on peut tenter de combiner des dĂ©veloppements externes, plus fluides, avec des mĂ©thodes que nous comprenons dĂ©jĂ . Dans un premier temps, essayez dâĂ©tablir une base scientifique, puis modifiez-la afin quâelle puisse ĂȘtre appliquĂ©e Ă de nouvelles idĂ©es rĂ©volutionnaires. Je pense que la blockchain est idĂ©ale pour ĂȘtre une idĂ©e nouvelle et disruptive.
AlexeĂŻ : Pourquoi pensez-vous que cela arrive ? Parce que les gens « Ă lâextĂ©rieur » nâont pas de barriĂšres spĂ©cifiques inhĂ©rentes Ă la communautĂ© ?
Maurice : Il y a une tendance Ă se produire ici. Si vous lisez l'histoire des impressionnistes dans la peinture et l'art en gĂ©nĂ©ral, alors des artistes cĂ©lĂšbres ont rejetĂ© l'impressionnisme. Ils ont dit que c'Ă©tait un peu enfantin. Une gĂ©nĂ©ration plus tard, cette forme dâart auparavant rejetĂ©e est devenue la norme. Ce que je vois dans mon domaine : les inventeurs de la blockchain n'Ă©taient pas intĂ©ressĂ©s par le pouvoir, par l'augmentation des publications et de l'indice de citation, ils voulaient juste faire quelque chose de bien. Alors ils se sont assis et ont commencĂ© Ă le faire. Il leur manquait une certaine profondeur technique, mais câest rĂ©parable. Il est beaucoup plus difficile de proposer de nouvelles idĂ©es crĂ©atives que de corriger et de renforcer celles qui ne sont pas suffisamment matures. GrĂące Ă ces inventeurs, j'ai dĂ©sormais de quoi faire !
Alexey : C'est similaire à la différence entre les startups et les projets existants. Nous héritons de nombreuses limitations de pensée, barriÚres, exigences particuliÚres, etc.
Maurice : Une bonne analogie est celle de l'informatique distribuĂ©e. ConsidĂ©rez la blockchain comme sâil sâagissait dâune startup et lâinformatique distribuĂ©e comme une grande entreprise Ă©tablie. L'informatique distribuĂ©e est en train d'ĂȘtre acquise et fusionnĂ©e avec la blockchain.
ThĂšse sous la direction de Barbara Liskov
Vitaly : Nous avons encore beaucoup de questions ! Nous avons examinĂ© votre parcours et sommes tombĂ©s sur un fait intĂ©ressant concernant votre doctorat. Oui, câĂ©tait il y a longtemps, mais cela semble ĂȘtre un sujet important. Vous avez obtenu votre doctorat sous votre direction ! Barbara est trĂšs connue dans la communautĂ© des langages de programmation, et une personne trĂšs connue en gĂ©nĂ©ral. Il est logique que vos recherches portent sur le domaine des langages de programmation. Comment ĂȘtes-vous passĂ© au calcul parallĂšle ? Pourquoi avez-vous dĂ©cidĂ© de changer de sujet ?
Maurice : Ă l'Ă©poque, Barbara et son groupe s'intĂ©ressaient simplement Ă l'informatique distribuĂ©e, ce qui Ă©tait une idĂ©e trĂšs nouvelle. Il y avait aussi ceux qui disaient que lâinformatique distribuĂ©e Ă©tait un non-sens et que les ordinateurs communiquant entre eux Ă©taient inutiles. Lâun des problĂšmes abordĂ©s dans lâinformatique distribuĂ©e qui la distingue de lâinformatique centralisĂ©e est la tolĂ©rance aux pannes. AprĂšs de nombreuses recherches, nous avons dĂ©cidĂ© qu'un langage de programmation informatique distribuĂ© devait avoir quelque chose comme des transactions atomiques, car on ne peut jamais ĂȘtre sĂ»r qu'un appel Ă distance rĂ©ussira. Une fois que vous avez des transactions, le problĂšme de la gestion de la concurrence se pose. Ensuite, il y a eu beaucoup de travail pour obtenir des structures de donnĂ©es transactionnelles hautement parallĂšles. Puis, aprĂšs avoir obtenu mon diplĂŽme, je suis allĂ© Ă et j'ai commencĂ© Ă chercher un sujet sur lequel travailler. Il m'est venu Ă l'esprit que l'informatique est passĂ©e des ordinateurs individuels aux rĂ©seaux d'ordinateurs. Les multiprocesseurs seraient une continuation naturelle du progrĂšs â le mot « multicĆur » n'existait pas encore. J'ai pensĂ© : quel est l'Ă©quivalent des transactions atomiques pour un systĂšme multicĆur ? Ce ne sont certainement pas des transactions rĂ©guliĂšres car elles sont trop volumineuses et lourdes. Et c'est comme ça que j'ai eu l'idĂ©e et c'est ainsi que j'ai imaginĂ© toute la synchronisation sans attente. Il s'agissait d'une tentative de rĂ©pondre Ă la question de savoir quel est l'analogue des transactions atomiques pour un systĂšme multiprocesseur Ă mĂ©moire partagĂ©e. Ă premiĂšre vue, cette Ćuvre peut paraĂźtre complĂštement diffĂ©rente, mais elle sâinscrit en fait dans la continuitĂ© du mĂȘme thĂšme.
Le monde attend le multicĆur
Vitaly : Vous avez mentionnĂ© qu'Ă cette Ă©poque il y avait trĂšs peu d'ordinateurs multicĆurs, n'est-ce pas ?
Maurice : Ils n'Ă©taient tout simplement pas lĂ . Il existait plusieurs multiprocesseurs dits symĂ©triques, qui Ă©taient essentiellement connectĂ©s au mĂȘme bus. Cela n'a pas trĂšs bien fonctionnĂ© car chaque fois qu'une nouvelle entreprise crĂ©ait quelque chose de similaire, Intel sortait un seul processeur supĂ©rieur au multiprocesseur.
AlexeĂŻ : Cela ne veut-il pas dire quâĂ cette Ă©poque-lĂ , il sâagissait plutĂŽt dâune Ă©tude thĂ©orique ?
Maurice : Ce n'Ă©tait pas une Ă©tude thĂ©orique, mais plutĂŽt une Ă©tude spĂ©culative. Il ne sâagissait pas ici de travailler avec de nombreux thĂ©orĂšmes, mais plutĂŽt dâĂ©mettre des hypothĂšses sur une architecture qui nâexistait pas Ă cette Ă©poque. C'est Ă cela que sert la recherche ! Aucune entreprise nâaurait fait une chose pareille ; tout cela venait dâun avenir lointain. En fait, cela a Ă©tĂ© le cas jusqu'en 2004, lorsque de vĂ©ritables processeurs multicĆurs sont apparus. Ătant donnĂ© que les processeurs surchauffent, vous pouvez rĂ©duire encore plus la taille du processeur, mais vous ne pouvez pas le rendre plus rapide. Pour cette raison, il y a eu une transition vers des architectures multicĆurs. Et puis cela signifiait que dâun coup, tous les concepts que nous avions dĂ©veloppĂ©s dans le passĂ© avaient une utilitĂ©.
Alexey : Pourquoi pensez-vous que les processeurs multicĆurs ne sont apparus que dans les annĂ©es XNUMX ? Alors pourquoi est-il si tard ?
Maurice : Cela est dĂ» Ă des limitations matĂ©rielles. Intel, AMD et d'autres sociĂ©tĂ©s rĂ©ussissent trĂšs bien Ă augmenter la vitesse du processeur. Ă un moment donnĂ©, les processeurs sont devenus suffisamment petits pour ne plus pouvoir augmenter la vitesse d'horloge car ils commençaient Ă s'Ă©puiser. Vous pouvez les rendre plus petits, mais pas plus rapides. Ce qui est en leur pouvoir - au lieu d'un trĂšs petit processeur, ils peuvent accueillir huit, seize ou trente-deux processeurs dans le mĂȘme volume du boĂźtier, lĂ oĂč auparavant un seul pouvait en contenir. Vous disposez dĂ©sormais du multithreading et dâune communication rapide entre eux car ils partagent des caches. Mais vous ne pouvez pas les forcer Ă courir plus vite : il existe une limite de vitesse trĂšs spĂ©cifique. Ils continuent de sâamĂ©liorer petit Ă petit, mais plus tellement maintenant. Les lois de la physique faisaient obstacle aux amĂ©liorations.
Un nouveau monde apporte de nouveaux problĂšmes. NUMA, NVM et piratage d'architecture
Alexey : Cela semble trĂšs raisonnable. Avec les nouveaux processeurs multicĆurs, de nouveaux problĂšmes sont apparus. Est-ce que vous et vos collĂšgues vous attendiez Ă ces problĂšmes ? Peut-ĂȘtre les avez-vous Ă©tudiĂ©s Ă l'avance ? Dans les Ă©tudes thĂ©oriques, il nâest souvent pas facile de prĂ©dire de telles choses. Lorsque des problĂšmes surviennent, comment ont-ils rĂ©pondu Ă vos attentes et Ă celles de vos collĂšgues ? Ou Ă©taient-ils complĂštement nouveaux et vous et vos collĂšgues avez dĂ» passer beaucoup de temps Ă rĂ©soudre les problĂšmes au fur et Ă mesure qu'ils apparaissaient ?
Vitaly : J'ajouterai à la question d'Alexeï : avez-vous correctement prédit l'architecture du processeur pendant que vous étudiiez la théorie ?
Maurice : Pas Ă 100%. Mais je pense que mes collĂšgues et moi avons fait du bon travail en prĂ©disant les multicĆurs avec mĂ©moire partagĂ©e. Je pense que nous avons correctement prĂ©dit les difficultĂ©s liĂ©es au dĂ©veloppement de structures de donnĂ©es parallĂšles fonctionnant sans verrous. De telles structures de donnĂ©es ont Ă©tĂ© importantes pour de nombreuses applications, mais pas toutes, mais ce dont vous avez rĂ©ellement besoin est souvent une structure de donnĂ©es non verrouillable. Lorsque nous les avons inventĂ©s, beaucoup ont affirmĂ© que cela nâavait aucun sens et que tout fonctionnait bien avec les serrures. Nous avions trĂšs bien prĂ©dit qu'il y aurait des solutions toutes faites Ă de nombreux problĂšmes de programmation et de structure de donnĂ©es. Il y avait aussi des problĂšmes plus complexes, comme â accĂšs inĂ©gal Ă la mĂ©moire. En fait, ils nâont mĂȘme pas Ă©tĂ© envisagĂ©s jusquâĂ lâinvention des processeurs multicĆurs, car ils Ă©taient trop spĂ©cifiques. La communautĂ© des chercheurs travaillait sur des questions gĂ©nĂ©ralement prĂ©visibles. Certains problĂšmes matĂ©riels associĂ©s Ă des architectures spĂ©cifiques ont dĂ» attendre en coulisses â en fait, l'apparition de ces architectures. Par exemple, personne nâa vraiment travaillĂ© sur les structures de donnĂ©es spĂ©cifiques aux GPU, car les GPU nâexistaient pas Ă lâĂ©poque. MĂȘme si de nombreux travaux ont Ă©tĂ© rĂ©alisĂ©s , ces algorithmes Ă©taient prĂȘts Ă ĂȘtre utilisĂ©s dĂšs que le matĂ©riel appropriĂ© Ă©tait disponible. Mais il est impossible de tout prĂ©voir.
Alexey : Si je comprends bien, NUMA est une sorte de compromis entre le coût, les performances et quelques autres choses. Avez-vous une idée de la raison pour laquelle NUMA est sorti si tard ?
Maurice : Je pense que NUMA existe Ă cause de problĂšmes avec le matĂ©riel utilisĂ© pour produire la mĂ©moire : plus les composants sont Ă©loignĂ©s, plus il est lent d'y accĂ©der. Dâun autre cĂŽtĂ©, la deuxiĂšme valeur de cette abstraction est lâuniformitĂ© de la mĂ©moire. Ainsi, lâune des caractĂ©ristiques du calcul parallĂšle est que toutes les abstractions sont lĂ©gĂšrement brisĂ©es. Si lâaccĂšs Ă©tait parfaitement uniforme, toute la mĂ©moire serait Ă©quidistante, mais cela est Ă©conomiquement, et peut-ĂȘtre mĂȘme physiquement, impossible. Ce conflit surgit donc. Si vous Ă©crivez votre programme comme si la mĂ©moire Ă©tait uniforme, il sera probablement correct. Dans le sens oĂč cela ne donnera pas de mauvaises rĂ©ponses. Mais sa performance nâattrapera pas non plus les Ă©toiles du ciel. De mĂȘme, si vous Ă©crivez Sans comprendre la hiĂ©rarchie du cache, le blocage lui-mĂȘme sera correct, mais vous pouvez oublier les performances. Dans un sens, vous devez Ă©crire des programmes qui reposent sur une abstraction trĂšs simple, mais vous devez dĂ©jouer les gens qui vous ont donnĂ© cette abstraction : vous devez savoir que sous l'abstraction se trouve une certaine hiĂ©rarchie de mĂ©moire, qu'il y a un bus entre vous et ce souvenir, et ainsi de suite. Il existe donc un certain conflit entre des abstractions individuellement utiles, ce qui nous amĂšne Ă des problĂšmes trĂšs concrets et pragmatiques.
Vitaly : Et l'avenir ? Pouvez-vous prĂ©dire comment les processeurs Ă©volueront ensuite ? Il existe une idĂ©e selon laquelle lâune des rĂ©ponses est la mĂ©moire transactionnelle. Vous avez probablement autre chose en stock.
Maurice : Il y a quelques dĂ©fis majeurs Ă relever. La premiĂšre est que la mĂ©moire cohĂ©rente est une merveilleuse abstraction, mais elle commence Ă sâeffondrer dans des cas particuliers. Ainsi, par exemple, NUMA est un exemple vivant de quelque chose dans lequel vous pouvez continuer Ă prĂ©tendre qu'une mĂ©moire uniforme existe. En fait non, la productivitĂ© vous fera pleurer. Ă un moment donnĂ©, les architectes devront abandonner l'idĂ©e d'une architecture Ă mĂ©moire unique : on ne peut pas faire semblant Ă©ternellement. Il faudra de nouveaux modĂšles de programmation suffisamment faciles Ă utiliser et suffisamment puissants pour rendre le matĂ©riel sous-jacent efficace. C'est un compromis trĂšs difficile, car si vous montrez aux programmeurs l'architecture rĂ©ellement utilisĂ©e dans le matĂ©riel, ils deviendront fous. C'est trop compliquĂ© et pas portable. Si vous prĂ©sentez une interface trop simple, les performances seront mĂ©diocres. Ainsi, de nombreux compromis trĂšs difficiles devront ĂȘtre faits pour fournir des modĂšles de programmation utiles applicables aux processeurs multicĆurs de grande taille. Je ne suis pas sĂ»r que quelqu'un d'autre qu'un spĂ©cialiste soit capable de programmer sur un ordinateur Ă 2000 cĆurs. Et Ă moins que vous ne fassiez du calcul ou de la cryptographie trĂšs spĂ©cialisĂ© ou scientifique ou quelque chose comme ça, on ne sait toujours pas du tout comment le faire correctement.
Un autre domaine similaire est celui des architectures spĂ©cialisĂ©es. Les accĂ©lĂ©rateurs graphiques existent depuis longtemps, mais ils sont devenus un exemple classique de la façon dont vous pouvez prendre un type dâinformatique spĂ©cialisĂ© et lâexĂ©cuter sur une puce dĂ©diĂ©e. Cela ajoute ses propres dĂ©fis : comment communiquer avec un tel appareil, comment le programmer. J'ai rĂ©cemment travaillĂ© sur des problĂšmes dans la rĂ©gion . Vous prenez un petit processeur et le collez sur une Ă©norme partie de la mĂ©moire afin que la mĂ©moire fonctionne Ă la vitesse du cache L1, puis communique avec un pĂ©riphĂ©rique tel que â le processeur est en train de charger de nouvelles tĂąches dans votre cĆur de mĂ©moire. La conception de structures de donnĂ©es et de protocoles de communication pour ce genre de choses est un autre exemple intĂ©ressant. Les processeurs et le matĂ©riel personnalisĂ©s continueront donc de bĂ©nĂ©ficier dâamĂ©liorations pendant un certain temps.
Alexey : Qu'en est-il de la mémoire non volatile ()?
Maurice : Oh, c'est un autre excellent exemple ! NVM va considĂ©rablement changer notre façon de voir des choses comme les structures de donnĂ©es. La mĂ©moire non volatile, dans un sens, promet de vraiment accĂ©lĂ©rer les choses. Mais cela ne facilitera pas la vie car la plupart des processeurs, caches et registres sont encore volatils. Lorsque vous dĂ©marrez aprĂšs un crash, votre Ă©tat et celui de votre mĂ©moire ne seront pas exactement les mĂȘmes qu'avant le crash. Je suis trĂšs reconnaissant envers les personnes travaillant sur NVM - les chercheurs auront beaucoup Ă faire pendant longtemps pour essayer de comprendre les conditions d'exactitude. Les calculs sont corrects s'ils peuvent survivre Ă un crash dans lequel le contenu des caches et des registres est perdu, mais la mĂ©moire principale reste intacte.
Compilateurs vs processeurs, RISC vs CISC, mémoire partagée vs transmission de messages
Vladimir : Que pensez-vous du dilemme « compilateurs contre processeurs » du point de vue du jeu d'instructions ? Laissez-moi vous expliquer pour ceux qui ne sont pas au courant : si nous passons par une mémoire asymétrique ou quelque chose de similaire, nous pourrions utiliser un ensemble de commandes trÚs simples et demander au compilateur de générer un code complexe pouvant profiter des nouveaux avantages. Ou nous pouvons aller dans l'autre sens : implémenter des instructions complexes et demander au processeur de réorganiser les instructions et d'effectuer d'autres manipulations avec elles. Qu'est-ce que tu en penses?
Maurice : Je n'ai pas vraiment de rĂ©ponse Ă cette question. Ce dĂ©bat dure depuis quatre dĂ©cennies. Il fut un temps oĂč entre un ensemble de commandes et les guerres civiles Ă©taient menĂ©es par un ensemble de commandements. Pendant un certain temps, les gens de RISC ont gagnĂ©, mais Intel a ensuite reconstruit ses moteurs de maniĂšre Ă ce qu'un ensemble rĂ©duit d'instructions soit utilisĂ© en interne et que l'ensemble complet soit exportĂ© en externe. Il sâagit probablement dâun sujet sur lequel chaque nouvelle gĂ©nĂ©ration doit trouver ses propres compromis et prendre ses propres dĂ©cisions. Il est trĂšs difficile de prĂ©dire laquelle de ces choses sera la meilleure. Ainsi, toute prĂ©diction que je fais sera vraie pendant un certain temps, puis fausse Ă nouveau pendant un certain temps, puis Ă nouveau vraie.
Alexey : Dans quelle mesure est-il courant dans l'industrie que certaines idĂ©es gagnent pendant plusieurs dĂ©cennies et perdent au cours de la suivante ? Existe-t-il dâautres exemples de tels changements pĂ©riodiques ?
Maurice : En ce qui concerne l'informatique distribuĂ©e, il y a des gens qui croient en et les gens qui croient en . Initialement, en informatique distribuĂ©e, le calcul parallĂšle signifie la transmission de messages. Puis quelquâun a dĂ©couvert quâil Ă©tait beaucoup plus facile de programmer avec de la mĂ©moire partagĂ©e. Le cĂŽtĂ© opposĂ© a dĂ©clarĂ© que la mĂ©moire partagĂ©e est trop compliquĂ©e, car elle nĂ©cessite des verrous, etc., il vaut donc la peine de passer Ă des langages oĂč il n'y a que la transmission de messages. Quelqu'un a regardĂ© ce qui en est ressorti et a dit : « wow, cette implĂ©mentation de messagerie ressemble beaucoup Ă de la mĂ©moire partagĂ©e, parce que vous crĂ©ez beaucoup de ces petits modules, ils s'envoient des messages les uns aux autres, et ils tous « CrĂ©ons une meilleure base de donnĂ©es de mĂ©moire partagĂ©e ! » Tout cela se rĂ©pĂšte encore et encore, et il est impossible de dire que lâune des parties a dĂ©finitivement raison. Un camp dominera toujours, car dĂšs que lâun dâeux gagne presque, les gens inventent encore et encore des moyens dâamĂ©liorer lâautre.
Lâart dâĂ©crire du code multithread fragile
AlexeĂŻ : C'est trĂšs intĂ©ressant. Par exemple, lorsque nous Ă©crivons du code, quel que soit le langage de programmation, nous devons gĂ©nĂ©ralement crĂ©er des abstractions telles que des cellules pouvant ĂȘtre lues et Ă©crites. Mais en rĂ©alitĂ©, Ă un certain niveau physique, cela peut ressembler Ă lâenvoi dâun message via un bus matĂ©riel entre diffĂ©rents ordinateurs et autres appareils. Il sâavĂšre que le travail se dĂ©roule simultanĂ©ment aux deux niveaux dâabstraction.
Maurice : Il est absolument vrai que la mĂ©moire partagĂ©e repose sur la transmission de messages â bus, caches, etc. Mais il est difficile d'Ă©crire des programmes en utilisant la transmission de messages, donc le matĂ©riel ment dĂ©libĂ©rĂ©ment, prĂ©tendant que vous disposez d'une sorte de mĂ©moire uniforme. Cela vous permettra d'Ă©crire plus facilement des programmes simples et corrects avant que les performances ne commencent Ă se dĂ©tĂ©riorer. Ensuite, vous direz : il semble quâil soit temps de se lier dâamitiĂ© avec la cache. Et puis vous commencez Ă vous soucier de lâemplacement du cache, et câest Ă partir de lĂ . Dans un sens, vous piratez l'abstraction : vous savez qu'il ne s'agit pas simplement d'une mĂ©moire plate et uniforme, et vous allez utiliser ces connaissances pour Ă©crire des programmes respectueux du cache. Câest ce que vous devrez faire dans les vrais problĂšmes. Ce conflit entre l'abstraction douce, simple et agrĂ©able qui vous a Ă©tĂ© donnĂ©e et l'implĂ©mentation horriblement complexe du matĂ©riel sous-jacent est le lieu oĂč chacun fera son propre compromis. J'ai un livre sur les multiprocesseurs et la synchronisation, et Ă un moment donnĂ© j'allais Ă©crire un chapitre sur les structures de donnĂ©es dans java.util.concurrent. Si vous les regardez, des choses comme Ce sont des Ćuvres dâart Ă©tonnantes. (Note de l'Ă©diteur : ceux qui connaissent le langage Java devraient au moins jeter un Ćil Ă l'implĂ©mentation ConcurrentSkipListMap, vous pouvez consulter les liens sur Đž ). Mais de mon point de vue, il serait irresponsable de les montrer aux Ă©tudiants, car une telle structure de donnĂ©es est un peu comme un type dans un cirque courant sur une corde raide au-dessus d'une fosse aux ours. Si vous modifiez ne serait-ce quâun petit dĂ©tail, toute la structure sâeffondrera. Ce code est trĂšs rapide et Ă©lĂ©gant simplement parce quâil est parfaitement Ă©crit, mais le moindre changement entraĂźnera un Ă©chec complet. Si je donne ce code en exemple aux Ă©lĂšves, ils diront tout de suite : moi aussi je peux le faire ! Et puis un avion sâĂ©crasera ou un rĂ©acteur nuclĂ©aire explosera, et je serai coupable de leur avoir donnĂ© trop dâinformations au mauvais moment.
Alexey : Quand j'Ă©tais un peu plus jeune, j'ai essayĂ© plusieurs fois d'Ă©tudier le code source de Doug Lee, par exemple, java.util.concurrent, comme il est open source, il est trĂšs facile de le trouver et d'essayer de comprendre ce qui s'y passe. Cela ne sâest pas trĂšs bien passĂ© : souvent, on ne sait absolument pas pourquoi Doug a dĂ©cidĂ© de faire quelque chose de cette façon alors que tout le monde le fait diffĂ©remment. Comment expliquez-vous ces choses Ă vos Ă©lĂšves ? Existe-t-il une maniĂšre particuliĂšrement correcte de dĂ©crire des dĂ©tails spĂ©cifiques d'un algorithme hardcore, par exemple ? Comment est-ce que tu fais ça?
Maurice : Les professeurs de dessin ont un clichĂ© dont ils se souviennent en premier : si vous voulez dessiner comme Picasso, vous devez d'abord apprendre Ă dessiner des images simples et rĂ©alistes, et ce n'est que lorsque vous connaissez les rĂšgles que vous pouvez commencer Ă les enfreindre. Si vous commencez par enfreindre les rĂšgles tout de suite, vous vous retrouvez dans le pĂ©trin. Tout dâabord, jâenseigne aux Ă©tudiants comment Ă©crire du code simple et correct sans se soucier des performances. Ce que je dis, c'est qu'il y a des problĂšmes de timing complexes qui se cachent ici, alors ne vous inquiĂ©tez pas des caches, ne vous inquiĂ©tez pas des modĂšles de mĂ©moire, assurez-vous simplement que tout fonctionne correctement. Câest dĂ©jĂ assez difficile : la programmation moderne nâest pas facile en soi, surtout pour les nouveaux Ă©tudiants. Et quand ils ont une intuition sur la façon d'Ă©crire les bons programmes, je dis : regardez ces deux implĂ©mentations de spinlock : l'une est trĂšs lente, et la seconde n'est pas trĂšs non plus, mais meilleure. Cependant, mathĂ©matiquement, les deux algorithmes sont identiques. En fait, lâun dâeux utilise la localitĂ© du cache. L'un d'eux s'exĂ©cute sur des donnĂ©es mises en cache localement et l'autre effectue des opĂ©rations de maniĂšre rĂ©pĂ©tĂ©e sur le bus. Vous ne pouvez pas Ă©crire de code efficace si vous ne comprenez pas de quoi il sâagit et si vous ne savez pas comment briser lâabstraction et examiner la structure sous-jacente. Mais vous ne pourrez pas commencer Ă le faire tout de suite. Il y a des gens qui commencent tout de suite Ă faire ça et croient en leur propre gĂ©nie, gĂ©nĂ©ralement ça finit mal parce qu'ils ne comprennent pas les principes. Personne ne dessine comme Picasso ou n'Ă©crit des programmes comme Doug Lee fraĂźchement sorti de l'universitĂ© dĂšs sa premiĂšre semaine. Il faut des annĂ©es pour atteindre ce niveau de connaissance.
AlexeĂŻ : Il s'avĂšre que vous divisez le problĂšme en deux parties : la premiĂšre est l'exactitude, la seconde est la performance ?
Maurice : Exactement. Et exactement dans cet ordre. Une partie du problĂšme vient du fait que les nouveaux Ă©tudiants ne comprennent pas quâil est difficile dâobtenir lâexactitude. Ă premiĂšre vue, ils disent : c'est Ă©videmment correct, il ne reste plus qu'Ă accĂ©lĂ©rer. Alors parfois, je leur parle dâun algorithme initialement incorrect comme sâil Ă©tait correct.
Comment apprendre aux étudiants à écrire du code multithread complexe
Alexey : Juste pour voir s'ils peuvent sentir le piĂšge ?
Maurice : Je prĂ©viens toujours Ă l'avance que parfois je proposerai des algorithmes incorrects. Il ne faut pas tromper les gens. Je suggĂšre qu'ils prennent l'information avec des pincettes. Si je dis quelque chose et que je dis : « Ă©coutez, c'est Ă©videmment correct » - c'est le signal que quelque part ils essaient de vous tromper, et vous devriez commencer Ă poser des questions. Ensuite, jâessaie dâencourager les Ă©lĂšves Ă continuer Ă poser des questions, puis je suggĂšre : « Que se passera-t-il si nous laissons les choses telles quâelles sont ? » Et ils voient immĂ©diatement lâerreur. Mais convaincre les Ă©tudiants quâils doivent se soucier de lâexactitude est beaucoup plus difficile quâil nây paraĂźt Ă premiĂšre vue. Beaucoup de ces Ă©tudiants ont acquis une expĂ©rience en programmation au lycĂ©e, certains ont trouvĂ© un emploi et y ont fait de la programmation, et ils dĂ©bordent tous de confiance. C'est un peu comme l'armĂ©e : il faut d'abord changer leur humeur afin de les convaincre d'aborder patiemment la rĂ©solution des problĂšmes qui se posent. Ou peut-ĂȘtre que c'est comme les moines bouddhistes : ils apprennent d'abord Ă raisonner sur l'exactitude, et une fois qu'ils comprennent les façons de raisonner sur l'exactitude, ils sont autorisĂ©s Ă passer au niveau suivant et Ă commencer Ă se soucier de la performance.
Alexeï : Autrement dit, vous montrez parfois aux étudiants des exemples non fonctionnels, grùce auxquels vous obtenez des commentaires indiquant s'ils comprennent l'essence du problÚme, s'ils peuvent trouver le mauvais code et le mauvais résultat. Alors, est-ce que les étudiants vous rendent généralement heureux ou triste ?
Maurice : Les Ă©tudiants finissent presque toujours par trouver l'erreur. S'ils cherchent trop lentement, je pose des questions suggestives, et ici il est important de comprendre que si vous ne les trompez jamais, ils commenceront Ă percevoir inconsidĂ©rĂ©ment vos paroles comme la vĂ©ritĂ© ultime. Ensuite, ils sâennuieront et commenceront Ă sâendormir en lisant Facebook sur leur ordinateur portable pendant les cours. Mais lorsque vous leur dites Ă l'avance qu'ils seront trompĂ©s et qu'ils auront l'air stupides s'ils ne sentent pas une tromperie, ils deviennent beaucoup plus vigilants. C'est bien de diffĂ©rentes maniĂšres. Jâaimerais que les Ă©lĂšves remettent en question non seulement leur comprĂ©hension de la question, mais aussi lâautoritĂ© de lâenseignant. LâidĂ©e est quâun Ă©lĂšve puisse lever la main Ă tout moment et dire : je pense que ce que vous venez de dire est faux. C'est un outil d'apprentissage important. Je ne veux pas quâaucun des Ă©tudiants sâassoie et rĂ©flĂ©chisse en silence : tout cela semble complĂštement absurde, mais lever la main est trop effrayant, et de toute façon, câest un professeur, donc tout ce quâil dit est la vĂ©ritĂ©. Par consĂ©quent, sâils sont prĂ©venus Ă lâavance que tout ce qui est dit nâest pas nĂ©cessairement vrai, ils sont incitĂ©s Ă accorder plus dâattention au contenu. Je prĂ©cise clairement que vous pouvez lever la main et poser des questions. Votre question peut paraĂźtre stupide ou naĂŻve, mais câest souvent ainsi que surgissent les meilleures questions.
Alexeï : TrÚs intéressant. Habituellement, les gens ont une sorte de barriÚre psychologique qui ne leur permet pas de poser une question à un professeur. Surtout s'il y a beaucoup de monde dans la salle et que tout le monde a peur que discuter de votre question stupide prenne tout leur temps. Existe-t-il des astuces pour gérer cela ?
Maurice : Je m'arrĂȘte souvent et pose des questions classiques. Si une dĂ©claration serait correcte ou comment ils rĂ©soudraient le problĂšme discutĂ©. Câest une action clĂ©, surtout au dĂ©but dâun cours, lorsque les gens sont gĂȘnĂ©s de dire la moindre chose. Vous posez une question aux Ă©tudiants et ne dites rien de plus. Il y a le silence, tout le monde se tend un peu, la tension monte, puis soudain quelqu'un n'en peut plus, s'effondre et dit la rĂ©ponse. Câest ainsi que lâon renverse la situation : continuer Ă se taire devient plus difficile et plus gĂȘnant que de rĂ©pondre ! C'est une astuce pĂ©dagogique standard. Tous les enseignants du monde devraient savoir comment procĂ©der.
Alexeï : Nous avons maintenant un excellent titre pour cette interview : « il est plus facile de répondre que de se taire ».
Vitaly : Laissez-moi vous demander Ă nouveau. Vous travaillez sur des preuves topologiques. Comment vous ĂȘtes-vous impliquĂ© lĂ -dedans, car lâinformatique distribuĂ©e et la topologie sont des choses complĂštement diffĂ©rentes !
Maurice : Il y a lĂ un lien cachĂ©. Quand j'Ă©tais Ă©tudiant en mathĂ©matiques, j'Ă©tudiais les mathĂ©matiques pures. Je n'avais pas vraiment d'intĂ©rĂȘt pour l'informatique jusqu'Ă la fin de mes Ă©tudes et je me suis retrouvĂ©e confrontĂ©e au besoin pressant de chercher un emploi. En tant qu'Ă©tudiant, j'ai Ă©tudiĂ© la topologie algĂ©brique. Plusieurs annĂ©es plus tard, alors que je travaillais sur un problĂšme appelĂ© , j'ai utilisĂ© des graphiques pour modĂ©liser le problĂšme et, comme il semblait Ă l'Ă©poque, j'avais trouvĂ© une solution. Il suffisait de s'asseoir et de faire le tour du dĂ©compte. Essayez de trouver une rĂ©ponse appropriĂ©e sur ce graphique. Mais mon algorithme nâa pas fonctionnĂ© : il sâest avĂ©rĂ© quâil tournerait en rond pour toujours. Malheureusement, tout cela ne peut pas ĂȘtre expliquĂ© dans le langage formel de la thĂ©orie des graphes, celui que connaissent tous les informaticiens. Et puis je me suis souvenu qu'il y a de nombreuses annĂ©es, en cours de topologie, nous utilisions le concept , qui est une gĂ©nĂ©ralisation des graphiques Ă des dimensions supĂ©rieures. Puis je me suis demandĂ© : que se passerait-il si on reformulait le problĂšme en termes de complexes simpliciaux ? Câest devenu le moment clĂ©. En utilisant un formalisme plus puissant, le problĂšme devient soudainement beaucoup plus simple. Les gens ont longtemps luttĂ© contre cela, en utilisant des graphiques, mais ils nâont rien pu faire. Et mĂȘme maintenant, ils ne le peuvent pas - la bonne rĂ©ponse s'est avĂ©rĂ©e n'ĂȘtre pas un algorithme, mais une preuve de l'impossibilitĂ© de rĂ©soudre le problĂšme. Autrement dit, un tel algorithme nâexiste tout simplement pas. Mais basĂ©s soit sur des complexes simpliciaux, soit sur des choses que les gens prĂ©tendaient ne pas considĂ©rer comme des complexes simpliciaux. Ce nâest pas parce que vous donnez Ă quelque chose un nouveau nom quâil perd son essence.
Vitaly : Il s'avĂšre que vous avez juste eu de la chance ?
Maurice : Outre la chance, c'est aussi prĂ©paration. Cela signifie que vous ne devez pas oublier les choses « inutiles » que vous avez apprises plus tĂŽt. Plus vous apprenez de choses inutiles, plus vous pouvez extraire dâidĂ©es face Ă un nouveau problĂšme. Ce type de correspondance de modĂšles intuitif est important parce que... Faisons-le, c'est une chaĂźne : au dĂ©but j'ai dĂ©couvert que les graphiques ne fonctionnaient pas du tout ou ne fonctionnaient pas du tout, cela m'a rappelĂ© quelque chose des Ă©vĂ©nements de huit il y a des annĂ©es et mes annĂ©es d'Ă©tudiant, lorsque nous Ă©tudiions tous ces complexes simpliciaux. Cela m'a permis de retrouver mon ancien manuel de topologie et de le recharger dans ma tĂȘte. Mais sans ces anciennes connaissances, je nâaurais jamais progressĂ© dans la rĂ©solution du problĂšme initial.
Nouvelle édition du livre « The Art of Multiprocessor Programming »
Alexey : Vous avez dit quelques mots sur votre livre. Ce n'est probablement pas le pire secret que vous ayez écrit le livre le plus célÚbre au monde sur le multithreading, . Il a déjà environ 11 ans et depuis, il n'est sorti que . Y aura-t-il une deuxiÚme édition ?
Maurice : C'est bien que tu aies demandé ! Ce sera trÚs bientÎt, dans trois mois environ. Il y a deux autres auteurs, nous avons ajouté beaucoup plus de matériel, amélioré la section sur le parallélisme fork/join, écrit une section sur MapReduce, ajouté beaucoup de nouvelles choses et supprimé les choses inutiles - quelque chose qui était trÚs intéressant au moment de la rédaction la premiÚre édition, mais n'est plus là aujourd'hui. Le résultat fut un livre trÚs sérieusement révisé.
Alexeï : Tout a déjà été fait, il ne reste plus qu'à le sortir ?
Maurice : Quelques chapitres nécessitent encore du travail. Notre éditeur (qui, je pense, nous déteste déjà ) essaie toujours de faire passer le message selon lequel nous devrions travailler plus vite. Nous sommes trÚs en retard sur le calendrier. Théoriquement, nous aurions pu réaliser ce livre quelques années plus tÎt.
Alexey : Y a-t-il une chance d'obtenir une nouvelle version du livre avant Noël ?
Maurice : C'est notre objectif ! Mais j'ai prédit la victoire tellement de fois que plus personne ne me croit. Vous ne devriez probablement pas non plus trop me faire confiance dans cette affaire.
Alexeï : En tout cas, c'est une nouvelle fantastique. J'ai beaucoup aimé la premiÚre édition du livre. On pourrait dire que je suis fan.
Maurice : J'espÚre que la nouvelle édition sera à la hauteur de votre fervent enthousiasme, merci !
Comment la mémoire transactionnelle a été inventée
Vitaly : La question suivante concerne la mĂ©moire transactionnelle. D'aprĂšs ce que je comprends, vous ĂȘtes un pionnier dans ce domaine, vous l'avez inventĂ© Ă une Ă©poque oĂč personne ne pensait Ă de telles choses. Pourquoi avez-vous dĂ©cidĂ© de vous lancer dans ce domaine ? Pourquoi les transactions vous semblaient-elles importantes ? Pensiez-vous qu'un jour ils seraient implĂ©mentĂ©s dans le matĂ©riel ?
Maurice : Je connais les transactions depuis mes années de recherche universitaire.
Vitaly : Oui, mais ce sont des transactions différentes !
Maurice : J'ai travaillĂ© avec Elliott Moss sur la collecte des dĂ©chets non bloquante. Notre problĂšme Ă©tait que nous voulions modifier atomiquement quelques mots en mĂ©moire et que les algorithmes deviendraient alors trĂšs simples, et au moins certains d'entre eux deviendraient plus efficaces. En utilisant pour GrĂące Ă l'architecture parallĂšle, il est possible de faire quelque chose, mais c'est trĂšs inefficace et moche car il faudrait gĂ©rer des couches d'indirection. Je veux changer les mots de mĂ©moire et je dois changer car je ne peux changer qu'un seul pointeur, ils doivent donc pointer vers une sorte de structure de type rĂ©pertoire. Nous avons dit Ă quel point ce serait gĂ©nial si nous pouvions changer le matĂ©riel pour qu'il puisse effectuer un enregistrement simultanĂ©. Elliott semble l'avoir remarquĂ© : si vous regardez les protocoles de cohĂ©rence du cache, ils fournissent dĂ©jĂ la plupart des fonctionnalitĂ©s requises. Dans une transaction optimiste, le protocole de cohĂ©rence du cache remarquera qu'il y a un conflit de synchronisation et le cache deviendra . Que se passe-t-il si vous exĂ©cutez de maniĂšre spĂ©culative une transaction sur votre cache et utilisez les mĂ©canismes du protocole de cohĂ©rence pour dĂ©tecter les conflits ? L'architecture matĂ©rielle spĂ©culative Ă©tait facile Ă concevoir. Nous avons donc Ă©crit celui-lĂ sur la mĂ©moire transactionnelle. Au mĂȘme moment, la sociĂ©tĂ© pour laquelle je travaillais, Digital Equipment Corporation, crĂ©ait un nouveau processeur 64 bits appelĂ© Alpha. Je suis donc allĂ© faire une prĂ©sentation au groupe de dĂ©veloppement Alpha sur notre incroyable mĂ©moire transactionnelle et ils ont demandĂ© : combien de revenus supplĂ©mentaires notre entreprise obtiendrait-elle si nous ajoutions tout cela directement au processeur ? Et je n'avais absolument aucune rĂ©ponse Ă cela, car je suis un technologue, je ne suis pas un spĂ©cialiste du marketing. Je n'avais vraiment rien Ă rĂ©pondre. Ils nâĂ©taient pas trĂšs impressionnĂ©s par le fait que je ne sache rien.
Vitaly : Des milliards ! Dites simplement des milliards !
Maurice : Oui, c'est ce que j'aurais dĂ» dire. Maintenant, Ă lâĂšre des startups et tout, je sais rĂ©diger un business plan. Que vous pouvez mentir un peu sur lâampleur de votre profit potentiel. Mais Ă lâĂ©poque, cela semblait naĂŻf, alors jâai simplement dit : « Je ne sais pas ». Si vous regardez l'historique de la publication sur la mĂ©moire transactionnelle, vous remarquerez qu'au bout d'un an, il y a eu plusieurs rĂ©fĂ©rences Ă celle-ci, puis pendant une dizaine d'annĂ©es, personne n'a citĂ© cet article du tout. Les citations sont apparues vers 2004, lorsque de vĂ©ritables multicĆurs sont apparus. Lorsque les gens ont dĂ©couvert quâĂ©crire du code parallĂšle pouvait rapporter de lâargent, de nouvelles recherches ont commencĂ©. Ravi Rajwar , qui a en quelque sorte introduit le concept de mĂ©moire transactionnelle au grand public. (NDLR : Il existe une deuxiĂšme version de cet article, sortie en 2010 et disponible gratuitement ). Tout Ă coup, les gens ont rĂ©alisĂ© exactement comment tout cela pouvait ĂȘtre utilisĂ©, comment les algorithmes traditionnels dotĂ©s de verrous pouvaient ĂȘtre accĂ©lĂ©rĂ©s. Un bon exemple de quelque chose qui, dans le passĂ©, semblait nâĂȘtre quâun problĂšme acadĂ©mique intĂ©ressant. Et oui, si vous m'aviez demandĂ© Ă ce moment-lĂ si je pensais que tout cela serait important Ă l'avenir, j'aurais rĂ©pondu : bien sĂ»r, mais quand exactement, ce n'est pas clair. Peut-ĂȘtre dans 50 ans ? En pratique, cela nâa durĂ© quâune dĂ©cennie. C'est trĂšs agrĂ©able quand on fait quelque chose et qu'aprĂšs dix ans seulement, les gens le remarquent.
Pourquoi cela vaut-il la peine de mener des recherches dans le domaine de l'informatique distribuée
Vitaly : Si nous parlons de nouvelles recherches, que conseilleriez-vous aux lecteurs : informatique distribuĂ©e ou multicĆur et pourquoi ?
Maurice : De nos jours, il est facile d'obtenir un processeur multicĆur, mais il est plus difficile de mettre en place un vĂ©ritable systĂšme distribuĂ©. J'ai commencĂ© Ă travailler dessus parce que je voulais faire quelque chose de diffĂ©rent de ma thĂšse de doctorat. Câest le conseil que je donne toujours aux nouveaux Ă©tudiants : nâĂ©crivez pas une suite de votre mĂ©moire, essayez dâaller dans une nouvelle direction. Et aussi, le multithreading est simple. Je peux expĂ©rimenter avec mon propre fork fonctionnant sur mon ordinateur portable sans sortir du lit. Mais si je voulais soudainement crĂ©er un vĂ©ritable systĂšme distribuĂ©, je devrais faire beaucoup de travail, attirer des Ă©tudiants, etc. Je suis une personne paresseuse et je prĂ©fĂšre travailler sur le multicĆur. ExpĂ©rimenter sur des systĂšmes multicĆurs est Ă©galement plus facile que de faire des expĂ©riences sur des systĂšmes distribuĂ©s, car mĂȘme dans un systĂšme distribuĂ© stupide, il y a trop de facteurs Ă contrĂŽler.
Vitaly : Que faites-vous maintenant, en faisant des recherches sur la blockchain ? Ă quels articles faut-il prĂȘter attention en premier ?
Maurice : RĂ©cemment paru , que j'ai Ă©crit avec mon Ă©lĂšve Vikram Saraf, spĂ©cialement pour une confĂ©rence Ă Ă Paris il y a trois semaines. Il s'agit d'un article sur les systĂšmes distribuĂ©s pratiques, dans lequel nous proposons de rendre Ethereum multithread. Actuellement, les contrats intelligents (code qui s'exĂ©cute sur la blockchain) sont exĂ©cutĂ©s de maniĂšre sĂ©quentielle. Nous avons Ă©crit un article plus tĂŽt qui parlait d'un moyen d'utiliser les transactions spĂ©culatives pour accĂ©lĂ©rer le processus. Nous avons pris beaucoup d'idĂ©es de la mĂ©moire transactionnelle logicielle et avons dit que si vous intĂ©grez ces idĂ©es Ă la machine virtuelle Etherium, tout fonctionnera plus rapidement. Mais pour cela, il faut quâil nây ait pas de conflits de donnĂ©es dans les contrats. Et puis nous avons supposĂ© que dans la vraie vie, de tels conflits nâexistaient pas. Mais nous n'avions aucun moyen de le savoir. Ensuite, nous avons rĂ©alisĂ© que nous avions prĂšs dâune dĂ©cennie dâhistorique de contrats rĂ©els entre nos mains. Nous avons donc abandonnĂ© la blockchain Ethereum et nous sommes demandĂ© : que se passerait-il si ces enregistrements historiques Ă©taient exĂ©cutĂ©s en parallĂšle ? Nous avons constatĂ© une augmentation significative de la vitesse. Au dĂ©but d'Ethereum, la vitesse a beaucoup augmentĂ©, mais aujourd'hui, tout est un peu plus compliquĂ©, car il y a moins de contrats et la probabilitĂ© de conflits sur les donnĂ©es nĂ©cessitant une sĂ©rialisation est devenue plus Ă©levĂ©e. Mais tout cela est un travail expĂ©rimental avec des donnĂ©es historiques rĂ©elles. Lâavantage de la blockchain est quâelle se souvient de tout pour toujours, ce qui nous permet de remonter le temps et dâĂ©tudier ce qui se serait passĂ© si nous avions utilisĂ© diffĂ©rents algorithmes pour exĂ©cuter le code. Dans quelle mesure les gens du passĂ© auraient-ils apprĂ©ciĂ© notre nouvelle idĂ©e ? Une telle recherche est beaucoup plus facile et agrĂ©able Ă faire, car il existe une chose qui surveille tout et enregistre tout. Cela ressemble dĂ©jĂ plus Ă de la sociologie quâau dĂ©veloppement dâalgorithmes.
Le dĂ©veloppement des algorithmes sâest-il arrĂȘtĂ© et comment continuer ?
Vitaly : C'est l'heure de la derniĂšre question thĂ©orique ! Avez-vous lâimpression que les progrĂšs dans les structures de donnĂ©es compĂ©titives diminuent chaque annĂ©e ? Pensez-vous que nous avons atteint un plateau dans notre comprĂ©hension des structures de donnĂ©es ou y aura-t-il des amĂ©liorations majeures ? Peut-ĂȘtre existe-t-il des idĂ©es astucieuses qui peuvent tout changer complĂštement ?
Maurice : Nous avons peut-ĂȘtre atteint un plateau dans les structures de donnĂ©es pour les architectures traditionnelles. Mais les structures de donnĂ©es pour les nouvelles architectures restent un domaine trĂšs prometteur. Si vous souhaitez crĂ©er des structures de donnĂ©es pour, par exemple, des accĂ©lĂ©rateurs matĂ©riels, les structures de donnĂ©es d'un GPU sont trĂšs diffĂ©rentes de celles d'un CPU. Lorsque vous dĂ©veloppez des structures de donnĂ©es pour les blockchains, vous devez hacher des Ă©lĂ©ments de donnĂ©es, puis les placer dans quelque chose comme , pour prĂ©venir la contrefaçon. Il y a eu un regain d'activitĂ© dans ce domaine ces derniers temps, et beaucoup font du trĂšs bon travail. Mais je pense que ce qui va se passer, câest que de nouvelles architectures et de nouvelles applications mĂšneront Ă de nouvelles structures de donnĂ©es. Applications hĂ©ritĂ©es et architecture traditionnelle : il n'y a peut-ĂȘtre plus beaucoup de place pour l'exploration. Mais si vous sortez des sentiers battus et regardez au-delĂ des limites, vous verrez des choses folles que le grand public ne prend pas au sĂ©rieux - c'est lĂ que toutes les choses passionnantes se produisent vraiment.
Vitaly : Donc, pour ĂȘtre un chercheur trĂšs cĂ©lĂšbre, j'ai dĂ» inventer ma propre architecture :)
Maurice : Vous pouvez « voler » la nouvelle architecture de quelqu'un d'autre â cela semble beaucoup plus simple !
Travailler à l'Université Brown
Vitaly : Pourriez-vous nous en dire plus sur OĂč travaillez-vous? On ne sait pas grand-chose de lui dans le contexte des technologies de lâinformation. Moins qu'au MIT, par exemple.
Maurice : L'UniversitĂ© Brown est l'une des plus anciennes universitĂ©s des Ătats-Unis. Je pense que seule Harvard est un peu plus ĂągĂ©e. Brown fait partie de ce qu'on appelle , qui est un ensemble de huit universitĂ©s les plus anciennes. Harvard, Brown, Cornell, Yale, Columbia, Dartmouth, Pennsylvanie, Princeton. C'est une sorte d'universitĂ© ancienne, petite et un peu aristocratique. L'accent principal est mis sur l'enseignement des arts libĂ©raux. Il ne s'agit pas de ressembler au MIT, le MIT est trĂšs spĂ©cialisĂ© et technique. Brown est un endroit idĂ©al pour Ă©tudier la littĂ©rature russe ou le grec classique et, bien sĂ»r, l'informatique. Il se concentre sur une Ă©ducation globale. La plupart de nos Ă©tudiants frĂ©quentent Facebook, Apple, Google. Je pense donc que nos Ă©tudiants n'ont aucun problĂšme Ă trouver un emploi dans l'industrie. Je suis allĂ© travailler chez Brown parce que j'avais auparavant travaillĂ© chez Digital Equipment Corporation Ă Boston. CâĂ©tait une entreprise qui a inventĂ© beaucoup de choses intĂ©ressantes, mais qui niait lâimportance des ordinateurs personnels. Une entreprise au destin difficile, dont les fondateurs Ă©taient autrefois de jeunes rĂ©volutionnaires, qui nâont rien appris et nâont rien oubliĂ©, et sont ainsi passĂ©s de rĂ©volutionnaires Ă rĂ©actionnaires en une douzaine dâannĂ©es environ. Ils aimaient plaisanter en disant que la place des ordinateurs personnels se trouvait dans le garage â un garage abandonnĂ©, bien sĂ»r. Il est bien Ă©vident quâelles ont Ă©tĂ© dĂ©truites par des entreprises plus flexibles. Lorsqu'il est devenu clair que l'entreprise Ă©tait en difficultĂ©, j'ai appelĂ© un de mes amis Ă Brown, Ă environ une heure de Boston. Je ne voulais pas quitter Boston Ă cette Ă©poque car il n'y avait pas beaucoup de dĂ©bouchĂ©s dans d'autres universitĂ©s. CâĂ©tait une Ă©poque oĂč il nây avait pas autant dâemplois en informatique quâaujourdâhui. Et Brown avait une ouverture, je n'ai pas eu Ă dĂ©mĂ©nager ma maison, je n'ai pas eu Ă dĂ©mĂ©nager ma famille et j'aime vraiment vivre Ă Boston ! C'est comme ça que j'ai dĂ©cidĂ© d'aller Ă Brown. J'aime ça. Les Ă©tudiants sont formidables, donc je nâai mĂȘme jamais essayĂ© dâaller ailleurs. Pendant mon congĂ© sabbatique, jâai travaillĂ© chez Microsoft pendant un an, je suis allĂ© au Technion Ă HaĂŻfa pendant un an, et maintenant je serai Ă Algorand. J'ai de nombreux collĂšgues partout et donc l'emplacement physique de nos salles de classe n'est pas si important. Mais le plus important, ce sont les Ă©tudiants, ils sont les meilleurs ici. Je n'ai jamais essayĂ© d'aller ailleurs parce que je suis plutĂŽt heureux ici.
Pourtant, malgrĂ© sa renommĂ©e aux Ătats-Unis, il est Ă©tonnamment inconnu Ă l'Ă©tranger. Comme vous pouvez le constater, je fais dĂ©sormais tout mon possible pour corriger cet Ă©tat de fait.
Différence entre la recherche dans une université et au sein d'une entreprise
Vitaly : D'accord, la question suivante concerne l'Ă©quipement numĂ©rique. Vous Ă©tiez lĂ en tant que chercheur. Quelle est la diffĂ©rence entre travailler dans le dĂ©partement R&D dâune grande entreprise et travailler dans une universitĂ© ? Quels sont les avantages et les inconvĂ©nients?
Maurice : J'ai travaillĂ© pendant vingt ans chez Microsoft, en Ă©troite collaboration avec des employĂ©s de Sun Microsystems, Oracle, Facebook et maintenant Algorand. Sur la base de tout cela, je tiens Ă dire qu'il est possible de mener des recherches de premier ordre tant dans les entreprises que dans les universitĂ©s. La diffĂ©rence importante est que dans une entreprise, vous travaillez avec des collĂšgues. Si jâai soudain une idĂ©e pour un projet qui nâexiste pas encore, je dois convaincre mes pairs que câest une bonne idĂ©e. Si je suis Ă Brown, alors je peux dire Ă mes Ă©tudiants : travaillons sur l'antigravitĂ© ! Soit ils partiront pour quelqu'un d'autre, soit ils se lanceront dans un projet. Oui, je devrai trouver des financements, je devrai rĂ©diger une demande de subvention, etc. Dans tous les cas, il y aura toujours beaucoup dâĂ©tudiants et vous pourrez prendre des dĂ©cisions unilatĂ©ralement. Mais Ă lâuniversitĂ©, vous ne travaillerez probablement pas avec des personnes de votre niveau. Dans le monde de la recherche industrielle, il faut dâabord convaincre tout le monde que votre projet vaut la peine dâĂȘtre entrepris. Je ne peux rien commander Ă personne. Et ces deux façons de travailler sont prĂ©cieuses, car si vous travaillez sur quelque chose de vraiment fou et que vos collĂšgues sont difficiles Ă convaincre, il est plus facile de convaincre les Ă©tudiants diplĂŽmĂ©s, surtout si vous les payez. Si vous travaillez sur quelque chose qui nĂ©cessite beaucoup d'expĂ©rience et une expertise approfondie, alors vous avez besoin de collĂšgues qui peuvent dire « non, il se trouve que je comprends dans ce domaine et que votre idĂ©e est mauvaise, ça ne marchera pas ». Câest trĂšs utile en termes de perte de temps. De plus, si dans les laboratoires industriels vous passez beaucoup de temps Ă rĂ©diger des rapports, alors dans une universitĂ© vous passez ce temps Ă essayer de trouver de l'argent. Si je veux que les Ă©tudiants puissent aller quelque part, je dois trouver lâargent ailleurs. Et plus votre poste Ă lâuniversitĂ© est important, plus vous devez consacrer du temps Ă collecter de lâargent. Alors maintenant, vous savez pour quoi je travaille : un mendiant professionnel ! Comme un de ces moines qui se promĂšnent avec une assiette d'offrandes. En gĂ©nĂ©ral, ces deux activitĂ©s se complĂštent. C'est pourquoi j'essaie de vivre et de garder les pieds sur terre dans les deux mondes.
Vitaly : Il semble qu'il soit plus difficile de convaincre une entreprise que de convaincre d'autres scientifiques.
Maurice : Plus difficile, et bien plus encore. De plus, selon les domaines, c'est diffĂ©rent : certains mĂšnent des recherches Ă grande Ă©chelle, tandis que d'autres se concentrent sur leur sujet. Si j'allais voir Microsoft ou Facebook et disais : faisons de l'anti-gravitĂ©, ils ne l'apprĂ©cieraient guĂšre. Mais si je disais exactement la mĂȘme chose Ă mes Ă©tudiants diplĂŽmĂ©s, ils se mettraient probablement au travail instantanĂ©ment, mĂȘme si maintenant j'aurais des problĂšmes - aprĂšs tout, j'ai besoin de trouver de l'argent pour cela. Mais tant que vous souhaitez faire quelque chose qui correspond aux objectifs de lâentreprise, cette entreprise peut ĂȘtre un trĂšs bon endroit pour faire de la recherche.
Hydra et SPTDC
Vitaly : Mes questions touchent Ă leur fin, parlons donc un peu du prochain voyage en Russie.
Maurice : Oui, j'ai hùte de retourner à Saint-Pétersbourg.
Alexey : Je suis honoré de vous avoir parmi nous cette année. C'est votre deuxiÚme séjour à Saint-Pétersbourg, n'est-ce pas ?
Maurice : Déjà le troisiÚme !
AlexeĂŻ : Je comprends, mais â certainement le deuxiĂšme. La derniĂšre fois que l'Ă©cole a Ă©tĂ© appelĂ©e , nous avons maintenant modifiĂ© une lettre (C Ă D, Concurrent to Distributed) pour souligner qu'il existe davantage de domaines liĂ©s spĂ©cifiquement Ă l'informatique distribuĂ©e cette annĂ©e. Pouvez-vous dire quelques mots sur vos rapports Ă l'Ecole et ?
Maurice : Ă l'Ăcole, je souhaite parler des bases de la blockchain et de ce que l'on peut en faire. Je voudrais montrer que les blockchains sont trĂšs similaires Ă la programmation multithread que nous connaissons, mais avec leurs propres nuances, et ces diffĂ©rences sont importantes Ă comprendre. Si vous faites une erreur dans une application Web classique, c'est tout simplement ennuyeux. Si vous Ă©crivez du code buggĂ© dans une application financiĂšre, quelqu'un volera certainement tout votre argent. Ce sont des niveaux de responsabilitĂ© et de consĂ©quences complĂštement diffĂ©rents. Je parlerai un peu de proof-of-work, de smart contracts, de transactions entre diffĂ©rentes blockchains.
Il y aura d'autres intervenants qui travailleront à cÎté de moi et qui auront également quelque chose à dire sur la blockchain, et nous avons convenu de nous coordonner afin que nos histoires s'emboßtent bien. Mais pour le rapport d'ingénierie, je veux expliquer à un large public pourquoi vous ne devriez pas croire tout ce que vous entendez sur les blockchains, pourquoi les blockchains sont un domaine formidable, comment elles s'intÚgrent avec d'autres idées connues et pourquoi nous devrions hardiment regarder au futur.
Alexey : De plus, je tiens Ă dire que cela ne se dĂ©roulera pas sous la forme d'un meetup ou d'un groupe d'utilisateurs, comme c'Ă©tait le cas il y a deux ans. Nous avons dĂ©cidĂ© d'organiser une petite confĂ©rence prĂšs de l'Ă©cole. La raison en est qu'aprĂšs avoir communiquĂ© avec Peter Kuznetsov, nous avons rĂ©alisĂ© que l'Ă©cole Ă©tait limitĂ©e Ă seulement une centaine, voire 120 personnes. Dans le mĂȘme temps, de nombreux ingĂ©nieurs souhaitent communiquer avec vous, assister Ă des prĂ©sentations et sont gĂ©nĂ©ralement intĂ©ressĂ©s par le sujet. C'est pour cette raison que nous avons créé une nouvelle confĂ©rence . Au fait, avez-vous une idĂ©e du pourquoi d'Hydra ?
Maurice : Parce qu'il y aura sept intervenants ? Et leurs tĂȘtes peuvent ĂȘtre coupĂ©es, et de nouveaux orateurs grandiront Ă leur place ?
Alexey : Excellente idĂ©e pour dĂ©velopper de nouveaux locuteurs. Mais en fait, il y a une histoire ici. Rappelez-vous la lĂ©gende d'Ulysse, oĂč il devait naviguer entre ? Hydra est quelque chose comme Charybde. L'histoire est qu'une fois, j'ai pris la parole lors d'une confĂ©rence et j'ai parlĂ© de multithreading. Il n'y avait que deux pistes lors de cette confĂ©rence. Au dĂ©but du reportage, j'ai dit au public prĂ©sent dans la salle qu'ils avaient dĂ©sormais le choix entre Scylla et Charybde. Mon animal spirituel est Charybde car Charybde a plusieurs tĂȘtes et mon thĂšme est multithread. C'est ainsi qu'apparaissent les noms des confĂ©rences.
De toute façon, nous sommes à court de questions et de temps. Alors merci les amis pour cette excellente interview et rendez-vous à l'école SPTDC et à Hydra 2019 !
Vous pourrez poursuivre votre conversation avec Maurice lors de la confĂ©rence Hydra 2019, qui se tiendra les 11 et 12 juillet 2019 Ă Saint-PĂ©tersbourg. Il viendra avec un rapport . Les billets peuvent ĂȘtre achetĂ©s .
Source: habr.com
