- en tant que professeur d'informatique Ă l'UniversitĂ© de Rochester et Ă son universitĂ© natale du Wisconsin â Madison, il a Ă©tĂ© doyen pendant cinq ans. Il effectue des recherches et enseigne aux Ă©tudiants la programmation parallĂšle et distribuĂ©e et la conception de langages.
Le monde connaĂźt Michael grĂące au manuel , quid du travail a reçu le prix Dijkstra comme l'un des plus cĂ©lĂšbres dans le domaine de l'informatique distribuĂ©e. Vous le connaissez peut-ĂȘtre aussi comme l'auteur de cet algorithme. .
Avec Doug Lee, il a dĂ©veloppĂ© les algorithmes non bloquants et les files d'attente synchrones qui alimentent les bibliothĂšques Java. Mise en Ćuvre dans JavaSE 6, les performances ont Ă©tĂ© amĂ©liorĂ©es de 10 fois ThreadPoolExecutor.
Table des matiĂšres:
- Début de carriÚre, Université de Rochester. Projet Charlotte, langage Lynx ;
- Interface cohérente évolutive IEEE, verrouillage MCS ;
- Survie dans un monde en constante évolution ;
- Les Ă©tudiants deviennent-ils plus bĂȘtes ? Tendances mondiales, internationalisation ;
- Travail efficace avec les étudiants;
- Comment suivre la préparation de nouveaux cours et livres ;
- Liens entre les entreprises et le monde universitaire ;
- Mise en Ćuvre pratique des idĂ©es. MCS, MS, CLH, JSR 166, en collaboration avec Doug Lee et plus ;
- Mémoire transactionnelle ;
- Nouvelles architectures. La victoire de la mémoire transactionnelle est proche ;
- Mémoire non volatile, Optane DIMM, appareils ultra-rapides ;
- La prochaine grande tendance. Structures de données doubles. Hydre.
L'entretien est mené par :
Vitali Aksenov â actuellement postdoctorant Ă l'IST Autriche et membre 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.
Début de carriÚre, Université de Rochester. Projet Charlotte, langage Lynx.
Alexey: Pour commencer, je voulais vous dire qu'en Russie, nous aimons tous beaucoup l'informatique, la science des donnĂ©es et les algorithmes. C'est carrĂ©ment obscĂšne. Nous avons tout lu . Par consĂ©quent, la prochaine confĂ©rence, lâĂ©cole et cette interview elle-mĂȘme devraient ĂȘtre trĂšs populaires. Nous avons reçu de nombreuses questions pour cette interview de la part d'Ă©tudiants, de programmeurs et de membres de la communautĂ©, nous sommes donc trĂšs reconnaissants pour cette opportunitĂ©. Lâinformatique reçoit-elle le mĂȘme amour aux Ătats-Unis ?
Michael: Notre domaine est si diversifiĂ©, il a tellement de directions et il affecte la sociĂ©tĂ© de tellement de maniĂšres diffĂ©rentes qu'il m'est difficile de vous donner une rĂ©ponse dĂ©finitive. Mais le fait est quâelle a entraĂźnĂ© dâĂ©normes changements dans les affaires, lâindustrie, lâart et la sociĂ©tĂ© en gĂ©nĂ©ral au cours des 30 derniĂšres annĂ©es.
Vitali: Commençons par quelque chose de lointain. Dans de nombreuses universités, il existe une sorte de spécialisation dans un domaine particulier. Pour l'Université Carnegie Mellon, il s'agit de calcul parallÚle, pour le MIT, de cryptographie, de robots et de multithreading. Existe-t-il une telle spécialisation à l'Université de Rochester ?
Michael: Pour ĂȘtre honnĂȘte, je dirais que la CMU et le MIT se spĂ©cialisent dans tous les domaines. Notre dĂ©partement a toujours accordĂ© la plus grande attention Ă lâintelligence artificielle. La moitiĂ© des personnes qui travaillent pour nous sont impliquĂ©es dans l'IA ou l'interaction homme-machine - cette part est plus Ă©levĂ©e que dans d'autres dĂ©partements, et cela a toujours Ă©tĂ© le cas. Mais quand jâĂ©tais Ă lâuniversitĂ©, je nâavais aucun cours en IA et je nâai jamais travaillĂ© dans ce domaine. Mon dĂ©partement se spĂ©cialise donc dans un problĂšme avec lequel je n'ai rien Ă voir. La consolation est que le deuxiĂšme problĂšme le plus important pour notre dĂ©partement est la programmation parallĂšle et multithread, c'est-Ă -dire ma spĂ©cialisation.
Vitali: Vous avez commencé à travailler en informatique alors que le domaine de la programmation multithread commençait tout juste à émerger. La liste de vos publications montre que vos premiers travaux traitaient d'un éventail de problématiques assez large : gestion de la mémoire dans les systÚmes multithread, systÚmes de fichiers distribués, systÚmes d'exploitation. Pourquoi une telle polyvalence ? Avez-vous essayé de trouver votre place dans la communauté des chercheurs ?
Michael: En tant qu'Ă©tudiant, j'ai participĂ© Ă Ă l'UniversitĂ© du Wisconsin, oĂč l'un des premiers systĂšmes d'exploitation distribuĂ©s a Ă©tĂ© dĂ©veloppĂ©. LĂ , j'ai travaillĂ© avec Rafael Finkel () et Marvin Salomon (). Ma thĂšse Ă©tait consacrĂ©e au dĂ©veloppement d'un langage pour les logiciels systĂšme pour les systĂšmes distribuĂ©s - maintenant tout le monde l'a oubliĂ©, et Dieu merci. J'ai créé le langage de programmation Lynx, destinĂ© Ă faciliter la crĂ©ation de serveurs pour un systĂšme d'exploitation distribuĂ© faiblement couplĂ©. Comme Ă cette Ă©poque j'Ă©tais principalement impliquĂ© dans les systĂšmes d'exploitation, je pensais que ma carriĂšre serait principalement liĂ©e Ă eux. Mais Rochester Ă©tait une trĂšs petite universitĂ© et, de ce fait, les diffĂ©rents groupes interagissaient trĂšs Ă©troitement les uns avec les autres. Il n'y avait pas une douzaine d'autres spĂ©cialistes des systĂšmes d'exploitation avec qui parler, donc tous mes contacts Ă©taient avec des personnes qui travaillaient dans des domaines complĂštement diffĂ©rents. Jâai vraiment apprĂ©ciĂ©, ĂȘtre polyvalent est un gros avantage pour moi. Si nous parlons spĂ©cifiquement de structures de donnĂ©es multithread et d'algorithmes de synchronisation, j'ai commencĂ© Ă travailler dessus complĂštement par hasard.
Interface cohérente évolutive IEEE, verrouillage MCS.
Vitali: Pouvez-vous m'en dire un peu plus ?
Michael: C'est une histoire drĂŽle que je ne me lasse pas de raconter Ă tout le monde. C'est arrivĂ© lors d'une confĂ©rence Ă Boston, c'Ă©tait Ă la fin des annĂ©es 80 ou au dĂ©but des annĂ©es 90. John Mellor-Crummey (), diplĂŽmĂ© de notre facultĂ©. Je le connaissais, mais nous n'avions jamais menĂ© de recherches communes auparavant. Marie Vernon () du Wisconsin a parlĂ© d'un systĂšme multiprocesseur qu'ils dĂ©veloppaient dans le Wisconsin : . Ce Multicube avait un mĂ©canisme de synchronisation au niveau matĂ©riel appelĂ© Q sur Sync Bit, et plus tard il a Ă©tĂ© renommĂ© Q sur Lock Bit parce que cela ressemblait Ă du fromage Colby, ce qui Ă©tait un jeu de mots. Si vous ĂȘtes intĂ©ressĂ© par les mĂ©canismes multithreading, vous savez probablement que Colby est finalement devenu le moteur de synchronisation de la norme IEEE Scalable Coherent Interface. Il s'agissait d'un mĂ©canisme de verrouillage qui crĂ©ait des pointeurs d'un cache Ă un autre au niveau matĂ©riel afin que chaque dĂ©tenteur de verrou sache Ă qui appartenait le tour. Lorsque John et moi avons entendu parler de cela, nous nous sommes regardĂ©s et nous nous sommes dit : pourquoi faire cela au niveau matĂ©riel ? La mĂȘme chose ne peut-elle pas ĂȘtre obtenue en utilisant la comparaison et l'Ă©change ? Nous avons pris un des cahiers qui traĂźnaient dans la classe et avons griffonnĂ© dessus , tandis que Mary poursuivait son rapport. Par la suite, nous l'avons mis en Ćuvre, expĂ©rimentĂ©, l'idĂ©e s'est avĂ©rĂ©e fructueuse et nous avons publiĂ© l'article. Ă cette Ă©poque, ce sujet me paraissait juste une distraction amusante, aprĂšs quoi j'envisageais de revenir aux systĂšmes d'exploitation. Mais ensuite un autre problĂšme dans le mĂȘme sens est apparu, et finalement la synchronisation, le multithreading et les structures de donnĂ©es sont devenus ma spĂ©cialitĂ©. Comme vous pouvez le constater, tout cela est arrivĂ© par accident.
Vitali: Je connais le blocage MCS depuis longtemps, mais jusqu'à présent je ne savais pas que c'était votre travail, et je ne comprenais pas que c'était un acronyme pour vos noms de famille.
Comment survivre dans un monde en constante évolution ?
Alexey: J'ai une question sur un sujet connexe. Il y a 30 ou 40 ans, il y avait plus de libertĂ© dans les diffĂ©rentes spĂ©cialitĂ©s. Si vous souhaitez dĂ©buter une carriĂšre dans le multithreading ou les systĂšmes distribuĂ©s, vous ĂȘtes les bienvenus, si vous souhaitez vous lancer dans les systĂšmes d'exploitation, pas de problĂšme. Dans chaque domaine, il y avait de nombreuses questions ouvertes et peu d'experts. Des spĂ©cialisations Ă©troites sont dĂ©sormais apparues : il n'existe pas seulement des experts sur les systĂšmes d'exploitation en gĂ©nĂ©ral, il existe des spĂ©cialistes sur des systĂšmes individuels. C'est la mĂȘme chose avec les systĂšmes multithreading et distribuĂ©s. Mais le problĂšme est que nos vies ne sont pas interminables : chacun ne peut consacrer que quelques dĂ©cennies Ă la recherche. Comment survivre dans ce nouveau monde ?
Michael: Nous ne sommes pas spĂ©ciaux Ă cet Ă©gard, la mĂȘme chose s'est produite autrefois dans d'autres domaines. J'ai eu la chance de commencer Ă travailler dans l'informatique alors que le domaine en Ă©tait Ă ses annĂ©es « adolescentes ». Certaines bases avaient dĂ©jĂ Ă©tĂ© posĂ©es, mais tout Ă©tait encore trĂšs immature. Cette opportunitĂ© ne se prĂ©sente pas souvent. L'Ă©lectrotechnique existe depuis trĂšs longtemps, la physique encore plus longtemps et les mathĂ©matiques presque depuis la nuit des temps. Mais cela ne veut pas dire que plus personne ne fait de dĂ©couvertes intĂ©ressantes en mathĂ©matiques. Il reste encore de nombreux problĂšmes en suspens, mais dans le mĂȘme temps, il reste encore beaucoup Ă apprendre. Vous avez raison de constater quâil existe aujourdâhui beaucoup plus de spĂ©cialisations quâavant, mais cela signifie simplement que nous nous trouvons dans la mĂȘme situation que la plupart des autres domaines de lâactivitĂ© humaine.
Alexey: Je m'intĂ©resse ici Ă l'aspect plus pratique de la question. J'ai une formation en mathĂ©matiques et pendant mes Ă©tudes, j'ai souvent assistĂ© Ă des confĂ©rences et travaillĂ© sur divers sujets scientifiques. J'ai dĂ©couvert que personne dans l'auditoire ne comprenait mes rapports, et de la mĂȘme maniĂšre, les rapports des autres n'Ă©taient comprĂ©hensibles que par eux-mĂȘmes. Ce n'est pas le cas pour les sujets de haut niveau, mais dĂšs que vous commencez Ă approfondir quelque chose, le public ne peut plus vous suivre. Comment gĂ©rez-vous cela?
Michael: Pas toujours rĂ©ussi. J'ai rĂ©cemment prĂ©parĂ© un rapport dans lequel j'entrais trop profondĂ©ment dans les dĂ©tails techniques. Au fur et Ă mesure que l'exposĂ© avançait, il est devenu Ă©vident que la plupart des auditeurs ne me comprenaient pas, j'ai donc dĂ» m'adapter Ă la situation Ă la volĂ©e. Les diapositives ne pouvaient pas ĂȘtre modifiĂ©es, donc cela ne s'est pas trĂšs bien passĂ© - donc, d'une maniĂšre gĂ©nĂ©rale, j'essaie de ne pas utiliser de diapositives. Dans lâensemble, mon conseil est de considĂ©rer votre public. Vous devez savoir Ă qui vous parlez, quel est leur niveau de connaissances et ce qu'ils ont besoin d'entendre pour apprĂ©cier votre travail.
Vitali: Pourriez-vous nous donner une idée du sujet de cette conférence ?
Michael: Pour ĂȘtre honnĂȘte, je prĂ©fĂ©rerais ne pas m'Ă©tendre sur ce sujet afin de laisser les personnes en question anonymes. Le fait est que nous pĂ©nĂ©trons souvent trop profondĂ©ment dans les subtilitĂ©s du problĂšme sur lequel nous travaillons, il devient donc difficile pour nous d'expliquer au dĂ©but de l'exposĂ© pourquoi le problĂšme est intĂ©ressant et important et comment il est liĂ© aux questions que le le public le sait dĂ©jĂ . DâaprĂšs mes observations, ce sont les Ă©tudiants qui ont le plus de mal Ă acquĂ©rir cette compĂ©tence. Et câĂ©tait aussi le point faible de mon rĂ©cent rapport. Un rapport correctement structurĂ© doit, dĂšs le dĂ©but, prendre contact avec le public, lui expliquer quel est exactement le problĂšme et comment il se rapporte aux sujets dĂ©jĂ connus. Le degrĂ© de technicitĂ© de cette introduction dĂ©pend du public. S'il est complĂštement hĂ©tĂ©roclite, le rapport peut alors comporter plusieurs Ă©tapes. L'introduction doit ĂȘtre accessible Ă tous, et Ă la fin, l'article ne pourra peut-ĂȘtre pas vous suivre, mais des personnes relativement familiarisĂ©es avec votre domaine seront en mesure de le comprendre.
Les Ă©tudiants deviennent-ils plus bĂȘtes ? Tendances mondiales, internationalisation.
Alexey: Vous observez les Ă©tudiants depuis plusieurs dĂ©cennies. Les Ă©tudiants deviennent-ils plus stupides ou plus intelligents de dĂ©cennie en dĂ©cennie ou dâannĂ©e en annĂ©e ? En Russie, les professeurs se plaignent constamment du fait que les Ă©tudiants deviennent chaque annĂ©e plus stupides, et on ne sait vraiment pas quoi faire Ă ce sujet.
Michael: Vous pouvez vraiment entendre beaucoup de nĂ©gativitĂ© de la part de nous, les personnes ĂągĂ©es. Inconsciemment, nous avons tendance Ă attendre des Ă©tudiants quâils absorbent les 30 annĂ©es dâexpĂ©rience que nous possĂ©dons dĂ©jĂ . Si jâai une comprĂ©hension plus profonde quâen 1985, pourquoi les Ă©tudiants ne lâont-ils pas ? Probablement parce quâils ont 20 ans, quâen pensez-vous ? Je pense que les changements les plus importants au cours des derniĂšres dĂ©cennies concernent la composition dĂ©mographique : nous avons dĂ©sormais beaucoup plus dâĂ©tudiants internationaux, Ă lâexception des Canadiens. Avant, il y avait beaucoup de Canadiens parce que nous sommes trĂšs proches de la frontiĂšre canadienne et que les Ă©tudiants de lĂ -bas peuvent rentrer chez eux le week-end. Mais il existe dĂ©sormais de nombreuses bonnes universitĂ©s au Canada et les Canadiens prĂ©fĂšrent Ă©tudier ici ; beaucoup moins d'entre eux viennent aux Ătats-Unis.
Alexey: Pensez-vous qu'il s'agit d'une tendance locale ou mondiale ?
Michael: Je ne me souviens plus exactement de qui, mais quelqu'un a dit que le monde Ă©tait plat. Notre domaine est devenu beaucoup plus international. Auparavant, ils se dĂ©roulaient exclusivement aux Ătats-Unis, puis ils ont dĂ©cidĂ© de les organiser une fois tous les 4 ans dans d'autres pays, et maintenant ils ont lieu partout dans le monde. Ces changements ont affectĂ© encore plus , car elle a toujours Ă©tĂ© une organisation plus internationale que lâACM. Et il y a des chaires de programmes en Chine, en Inde, en Russie, en Allemagne et dans de nombreux autres pays, car il se passe actuellement beaucoup de choses partout.
Alexey: Mais, probablement, il y a des aspects négatifs à une telle internationalisation ?
Michael: Je dirais que tous les aspects nĂ©gatifs ne concernent pas la technologie, mais la politique. Autrefois, le principal problĂšme rĂ©sidait dans le fait que les Ătats-Unis volaient les personnes les plus intelligentes et les plus talentueuses du monde entier. Et maintenant, le principal problĂšme rĂ©side dans les jeux politiques entre les diffĂ©rents pays autour des visas et de lâimmigration.
Alexey: Autrement dit, les barriÚres et des choses comme ça. Il est clair.
Vladimir: Personnellement, je m'intĂ©resse Ă l'approche que vous adoptez lorsque vous enseignez une nouvelle matiĂšre aux Ă©tudiants. Il existe diffĂ©rentes options : vous pouvez essayer tout dâabord de les inciter Ă essayer quelque chose de nouveau, ou vous pouvez accorder plus dâattention aux dĂ©tails du fonctionnement dâune certaine technologie. Que prĂ©fĂšres-tu?
Travail efficace avec les étudiants
Alexey: Et comment trouver ce foutu équilibre entre le premier et le second ?
Michael: Le problĂšme câest que les cours ne se dĂ©roulent pas toujours comme je le souhaiterais. Je donne gĂ©nĂ©ralement aux Ă©tudiants du matĂ©riel de lecture Ă l'avance afin qu'ils l'approfondissent, le comprennent au mieux de leurs capacitĂ©s et formulent des questions sur les parties qu'ils ne pouvaient pas comprendre. Ensuite, en classe, vous pourrez vous concentrer sur les moments les plus difficiles et les explorer ensemble. Câest ainsi que jâaime le plus donner des cours. Mais Ă©tant donnĂ© la charge qui pĂšse dĂ©sormais sur les Ă©tudiants, je ne suis pas toujours en mesure de m'assurer qu'ils se prĂ©parent Ă l'avance. En consĂ©quence, vous devez consacrer beaucoup plus de temps que vous ne le souhaiteriez Ă la narration gĂ©nĂ©rale du matĂ©riel. MalgrĂ© cela, j'essaie de garder nos cours interactifs. Sinon, il est plus facile dâenregistrer une fois une vidĂ©o que les Ă©lĂšves pourront ensuite regarder chez eux. Le but des cours en direct est lâinteraction humaine. En cours, je prĂ©fĂšre utiliser de la craie et un tableau plutĂŽt que des diapositives, sauf dans certains cas oĂč un schĂ©ma est trop complexe Ă reprĂ©senter au tableau. GrĂące Ă cela, je n'ai pas besoin de m'en tenir Ă un plan de cours rigide. Puisqu'il n'y a pas d'ordre strict dans lequel je donne le matĂ©riel, cela me permet de l'adapter au public en fonction des questions que je reçois. De maniĂšre gĂ©nĂ©rale, j'essaie de rendre les cours aussi interactifs que possible, afin que le matĂ©riel que je prĂ©sente dĂ©pende des questions qui me sont posĂ©es.
Vladimir: C'est bien. DâaprĂšs mon expĂ©rience, il est assez difficile dâamener les auditeurs Ă poser des questions. MĂȘme si vous demandez Ă l'avance de poser des questions, aussi stupides ou intelligentes soient-elles, ils restent silencieux. Comment gĂ©rez-vous cela?
Michael: Vous rirez, mais si vous restez silencieux assez longtemps, tĂŽt ou tard, tout le monde se sentira mal Ă l'aise et quelqu'un posera une question. Ou vous pouvez poser une simple question technique avec une rĂ©ponse par oui ou par non pour dĂ©terminer si les gens comprennent ce qui vient d'ĂȘtre dit. Par exemple, y a-t-il une course aux donnĂ©es dans lâexemple ci-dessus ? Qui le pense ? Qui ne le pense pas ? Qui ne comprend rien du tout car au total seulement la moitiĂ© des mains se sont levĂ©es ?
Vitali: Et si vous avez mal rĂ©pondu, vous ĂȘtes expulsĂ© de la classe :)
Michael: Si vous nâavez rĂ©pondu Ă rien, alors vous devriez poser une question. J'ai besoin de comprendre exactement ce que l'Ă©lĂšve doit savoir pour rĂ©pondre Ă la question que je viens de poser. J'ai besoin qu'ils m'aident Ă les aider. Je suis prĂȘt Ă m'adapter Ă eux pour qu'ils comprennent le problĂšme. Mais si je ne sais pas ce qui se passe dans leur tĂȘte, je ne peux pas le faire. Et si on ne laisse pas assez longtemps la paix aux Ă©tudiants, parfois ils finissent par poser les bonnes questions, câest-Ă -dire celles qui me permettent de voir exactement ce qui se passe dans la tĂȘte des Ă©tudiants.
Alexey: Ces questions vous amĂšnent-elles parfois Ă des idĂ©es auxquelles vous nâaviez pas pensĂ© auparavant ? Sont-ils inattendus ? Permettent-ils dâenvisager un problĂšme sous un nouveau jour ?
Michael: Il y a des questions qui ouvrent une nouvelle façon de prĂ©senter le matĂ©riel. Il y a souvent des questions qui mĂšnent Ă des problĂšmes intĂ©ressants dont je n'avais pas prĂ©vu de parler. Les Ă©tudiants me disent souvent que jâai tendance Ă sortir du sujet lorsque cela se produit. Et, selon eux, câest trĂšs souvent la partie la plus intĂ©ressante de la leçon. TrĂšs rarement, Ă quelques reprises seulement, les Ă©tudiants posaient des questions qui incitaient Ă une nouvelle direction de recherche et dĂ©bouchaient sur un article. Cela se produit beaucoup plus souvent dans les conversations avec les Ă©tudiants que pendant les cours, mais cela se produit parfois pendant les cours.
Alexey: Les étudiants vous ont donc posé des questions à partir desquelles il a ensuite été possible de publier un article ?
Michael: Oui
Vitali: à quelle fréquence avez-vous ces conversations avec les étudiants ? Quand souhaitent-ils en savoir plus que ce qui a été abordé pendant la leçon ?
Michael: Avec mes Ă©tudiants diplĂŽmĂ©s - tout le temps. J'en ai environ 5 ou 6 et nous discutons tout le temps de quelque chose avec eux. Et les conversations de ce genre avec des Ă©tudiants qui assistent simplement Ă mes cours ne sont pas trĂšs courantes. MĂȘme si j'aurais aimĂ© que cela arrive plus souvent. Je soupçonne qu'ils ont simplement peur de venir Ă la facultĂ© pendant les heures de bureau. Chaque semestre, certains Ă©tudiants parviennent Ă surmonter cette barriĂšre psychologique, et il est toujours trĂšs intĂ©ressant de discuter avec eux aprĂšs les cours. Il est vrai que si tous les Ă©tudiants Ă©taient aussi courageux, je nâaurais tout simplement pas assez de temps. Alors peut-ĂȘtre que tout fonctionne comme il se doit.
Vitali: Comment parvenez-vous Ă trouver du temps pour communiquer avec les Ă©tudiants ? Autant que je sache, aux Ătats-Unis, les enseignants ont beaucoup de travail â demander des bourses, etc.
Michael: HonnĂȘtement, travailler avec des Ă©tudiants est l'aspect de mon travail que j'apprĂ©cie le plus. J'ai donc assez de motivation pour cela. La plupart du temps que je passe dans mon bureau est consacrĂ© Ă des rĂ©unions de toutes sortes. C'est l'Ă©tĂ© maintenant, donc mon emploi du temps est moins chargĂ©, mais pendant l'annĂ©e scolaire, tous les jours de 9h Ă 17h, j'ai tout emballĂ©. Travaux de recherche, critiques, subventions - pour tout cela, il n'y a que les soirs et les week-ends.
Comment suivre la préparation de nouveaux cours et livres.
Alexey: Continuez-vous actuellement Ă enseigner des cours que vous enseignez depuis longtemps ? Quelque chose comme une introduction Ă l'informatique.
Michael: La premiĂšre chose qui me vient Ă lâesprit ici est un cours de langages de programmation.
Alexey: Dans quelle mesure la version actuelle de ce cours est-elle diffĂ©rente de ce qu'elle Ă©tait il y a 10, 20, 30 ans ? Ce qui est peut-ĂȘtre plus intĂ©ressant ici, ce ne sont pas les dĂ©tails d'un cours particulier, mais les tendances gĂ©nĂ©rales.
Michael: Mon cours sur les langages de programmation Ă©tait quelque peu inhabituel au moment oĂč je l'ai créé. J'ai commencĂ© Ă le lire Ă la fin des annĂ©es 1980, en remplacement de mon collĂšgue Doug Baldwin (). Le sujet du cours n'Ă©tait que indirectement liĂ© Ă ma spĂ©cialitĂ©, mais lorsqu'il est parti, j'Ă©tais le meilleur candidat pour enseigner le cours. Je nâaimais aucun des manuels qui existaient Ă lâĂ©poque, alors jâai fini par Ă©crire moi-mĂȘme le manuel de ce cours. (NDLR : on parle du livre) Il est dĂ©sormais utilisĂ© dans plus de 200 universitĂ©s Ă travers le monde. Mon approche est inhabituelle dans la mesure oĂč elle mĂ©lange dĂ©libĂ©rĂ©ment les problĂšmes de conception et d'implĂ©mentation du langage, et accorde une grande attention Ă l'interaction entre ces aspects dans tous les domaines possibles. L'approche de base est restĂ©e inchangĂ©e, tout comme de nombreux concepts de base : abstractions, espaces de noms, modularitĂ©, types. Mais lâensemble des langages avec lesquels ces concepts sont dĂ©montrĂ©s a complĂštement changĂ©. Lors de la crĂ©ation du cours, il y avait de nombreux exemples en Pascal, mais aujourd'hui beaucoup de mes Ă©tudiants n'ont mĂȘme pas entendu parler de ce langage. Mais ils connaissent Swift, Go, Rust, je dois donc parler des langages utilisĂ©s aujourd'hui. De plus, les Ă©tudiants maĂźtrisent dĂ©sormais bien les langages de script, mais lorsque j'ai commencĂ© Ă enseigner ce cours, il s'agissait uniquement de langages compilĂ©s. Nous avons maintenant besoin de beaucoup de matĂ©riel sur Python, Ruby et mĂȘme Perl, car c'est ainsi que le code est Ă©crit de nos jours, et il se passe beaucoup de choses intĂ©ressantes dans ces langages, y compris dans le domaine de la conception de langages.
Vitali: Alors ma prochaine question sera liée à la précédente. Comment suivre le rythme dans ce domaine ? Je soupçonne que mettre à jour un cours comme celui-ci nécessite beaucoup de travail - vous devez comprendre de nouvelles langues, comprendre les idées principales. Comment est-ce que tu fais ça?
Michael: Je ne peux pas me vanter de réussir toujours à 100 %. Mais la plupart du temps, je fais ce que tout le monde fait : lire sur Internet. Si je veux comprendre Rust, je le recherche sur Google, je vais sur la page Mozilla et je lis le manuel qui y est publié. Cela fait partie des choses qui se produisent dans le développement commercial. Si nous parlons de science, vous devez alors suivre les rapports des principales conférences.
Lien entre les entreprises et le monde universitaire
Vitali: Parlons du lien entre les entreprises et la recherche scientifique. Dans votre liste de travaux, j'ai trouvé plusieurs articles sur la cohérence du cache. Je comprends que les algorithmes de cohérence du cache étaient instables au moment de leur publication ? Ou pas assez répandu. Dans quelle mesure vos idées étaient-elles courantes dans la pratique ?
Michael: Je ne sais pas exactement de quelles publications vous parlez. J'ai fait pas mal de travail avec mes Ă©tudiants Bill Bolosky () et LĂ©onidas Kontotanassis () au dĂ©but des annĂ©es 1990 sur la gestion mĂ©moire des machines Neumann. Ă cette Ă©poque, les entreprises ne comprenaient pas encore comment crĂ©er correctement un systĂšme multiprocesseur : vaut-il la peine de crĂ©er un support pour l'accĂšs Ă la mĂ©moire distante au niveau matĂ©riel, vaut-il la peine de distribuer la mĂ©moire, est-il possible de charger le cache depuis mĂ©moire distante, ou est-il nĂ©cessaire de dĂ©placer des pages dans le systĂšme du bloc opĂ©ratoire ? Bill et Leonidas ont tous deux travaillĂ© dans ce domaine et explorĂ© des approches sans chargement de cache Ă distance. Cela n'Ă©tait pas directement liĂ© Ă la cohĂ©rence du cache, mais il s'agissait toujours d'un travail sur la gestion de la mĂ©moire NUMA, et par la suite, les approches modernes du placement des pages dans les systĂšmes d'exploitation modernes en ont dĂ©coulĂ©. Dans l'ensemble, Bill et Leonidas ont rĂ©alisĂ© un travail important, mĂȘme s'il n'est pas le plus influent dans ce domaine : de nombreuses autres personnes travaillaient sur le mĂȘme sujet Ă l'Ă©poque. Plus tard, j'ai travaillĂ© sur un sujet liĂ© Ă la cohĂ©rence du cache dans le contexte de la mĂ©moire transactionnelle matĂ©rielle. Le groupe avec lequel j'ai travaillĂ© sur ce problĂšme a fini par recevoir plusieurs brevets. Il y a des idĂ©es assez intĂ©ressantes derriĂšre tout cela, mais je ne pense pas qu'elles finiront par ĂȘtre mises en pratique. Dâune maniĂšre ou dâune autre, il mâest difficile de juger de leur rentabilitĂ©.
Alexey: à cet égard, une question plus personnelle : dans quelle mesure est-il important pour vous que vos idées soient mises en pratique ? Ou tu n'y penses pas ?
Michael: J'aime poser cette question lors d'entretiens avec d'autres personnes, candidats ou candidats souhaitant rejoindre la facultĂ©. Je ne pense pas qu'il y ait de rĂ©ponse correcte Ă cette question. Les gens qui font des choses sympas peuvent avoir des motivations trĂšs diffĂ©rentes. Je suis attirĂ© par les problĂšmes parce que je les trouve personnellement intĂ©ressants, et non en raison de leurs avantages pratiques. Mais d'un autre cĂŽtĂ©, quand quelque chose d'intĂ©ressant trouve encore une application, j'aime vraiment ça. Ce n'est donc pas facile ici. Mais au dĂ©but de mon travail, je ne suis toujours pas motivĂ© par lâidĂ©e dâuneââutilisation finale dans le monde, mais par lâharmonie de lâidĂ©e et le dĂ©sir de lâexplorer et de voir ce qui en rĂ©sulte. Si au final cela donne des rĂ©sultats pratiques, tant mieux.
Alexey: GrĂące Ă votre Ă©ducation et Ă votre expĂ©rience, vous ĂȘtes mieux Ă mĂȘme que la plupart des gens de juger de la valeur des idĂ©es des autres. Vous pouvez les comparer et dĂ©terminer lequel fonctionne le mieux avec lequel. Je suis sĂ»r que vous avez une opinion sur les Ă©lĂ©ments actuellement utilisĂ©s dans la pratique par de grands fabricants comme Intel. De votre point de vue, dans quelle mesure la voie suivie par ces entreprises est-elle correcte ?
Michael: La pratique tourne toujours autour de ce qui peut ĂȘtre un succĂšs commercial, c'est-Ă -dire crĂ©er du profit, et il vaut mieux interroger quelqu'un d'autre Ă ce sujet. Mon travail donne principalement lieu Ă des publications, et dans le domaine des systĂšmes d'exploitation ils sont Ă©valuĂ©s sur la base d'indicateurs de performance : vitesse, consommation d'Ă©nergie, taille du code. Mais il m'a toujours semblĂ© que ces rĂ©sultats empiriques n'Ă©taient ajoutĂ©s aux articles que pour qu'ils puissent ĂȘtre publiĂ©s, et que les vĂ©ritables motivations du travail des gens Ă©taient esthĂ©tiques. Les chercheurs Ă©valuent les solutions dâun point de vue artistique, ils se soucient de lâĂ©lĂ©gance des idĂ©es et tentent de crĂ©er quelque chose de meilleur que les approches existantes. Les chercheurs sont motivĂ©s par des motivations personnelles, subjectives et esthĂ©tiques. Mais vous ne pouvez pas Ă©crire Ă ce sujet dans lâarticle lui-mĂȘme ; ces choses ne sont pas des arguments pour le comitĂ© de programme. Heureusement, les solutions Ă©lĂ©gantes sont souvent rapides et bon marchĂ©. Une douzaine de mes collĂšgues et moi avons discutĂ© de ce sujet il y a environ 15 ans et avons fini par Ă©crire un article Ă ce sujet. Je pense que tu peux encore le trouver maintenant, ça s'appelle ou quelque chose comme ça, il compte plus d'une douzaine d'auteurs. C'est le seul article dont je suis l'auteur avec , donc si vous recherchez son nom dans ma liste de publications, vous trouverez ce dont vous avez besoin. Il parle de l'Ă©valuation de la recherche sur les systĂšmes et de l'importance de l'Ă©lĂ©gance.
Alexey: Il y a donc une diffĂ©rence entre le niveau de ce qui est considĂ©rĂ© comme bon en science et en affaires. La science Ă©value les performances, la consommation d'Ă©nergie, le TDP, la facilitĂ© de mise en Ćuvre et bien plus encore. Avez-vous la possibilitĂ© de mener ce type de recherche Ă lâuniversitĂ© ? Avez-vous un laboratoire avec diffĂ©rentes machines et diffĂ©rentes architectures dans lequel vous pourriez mener des expĂ©riences ?
Michael: Oui, notre dĂ©partement dispose de nombreuses machines diffĂ©rentes et intĂ©ressantes. Le plus souvent ils sont petits, nous avons un petit cluster et de nombreux systĂšmes multiprocesseurs avec diffĂ©rents accĂ©lĂ©rateurs. De plus, le campus dispose d'un immense centre informatique qui dessert des scientifiques de plusieurs dizaines de disciplines diffĂ©rentes. Il compte environ un millier de nĆuds et vingt mille cĆurs, tous sous Linux. Si le besoin sâen fait sentir, vous pouvez toujours acheter des AWS. Nous nâavons donc aucune restriction significative concernant le matĂ©riel.
Alexey: Comment c'était il y a trente ans ? Y a-t-il eu des problÚmes à ce moment-là ?
Michael: C'Ă©tait un peu diffĂ©rent Ă l'Ă©poque. Du milieu Ă la fin des annĂ©es 1980, on considĂ©rait que la science manquait de ressources informatiques. Pour remĂ©dier Ă cette situation, la National Science Foundation ) a créé un programme de recherche expĂ©rimentale coordonnĂ©e (Cooperative Experimental Research, CER). La mission du programme Ă©tait de fournir une infrastructure informatique aux dĂ©partements d'informatique, et il a apportĂ© des changements importants. Avec l'argent qu'elle a fourni, nous, Ă l'UniversitĂ© de Rochester, avons achetĂ© un BBN Butterfly de 1984 nĆuds en 128, c'Ă©tait un an avant mon arrivĂ©e lĂ -bas. Ă cette Ă©poque, il sâagissait du plus grand systĂšme multiprocesseur Ă mĂ©moire partagĂ©e au monde. Il disposait de 128 processeurs, chacun sur une carte mĂšre distincte, et occupait quatre racks. Chaque processeur disposait d'un mĂ©gaoctet de mĂ©moire, 128 mĂ©gaoctets de RAM Ă©tait une quantitĂ© inimaginable Ă l'Ă©poque. Sur cette machine, nous avons implĂ©mentĂ© le verrouillage MCS pour la premiĂšre fois.
Alexey: Donc, si je vous comprends bien, alors pour le moment le problÚme avec le matériel est résolu ?
Michael: En gĂ©nĂ©ral, oui. Il y a quelques mises en garde : premiĂšrement, si vous faites de l'architecture informatique au niveau des puces, c'est difficile Ă faire dans un environnement universitaire car il existe de bien meilleurs outils pour le faire en entreprise. Si vous avez besoin dâun objet infĂ©rieur Ă 10 nanomĂštres, vous devrez le commander auprĂšs de quelquâun dâautre. Dans ce domaine, il est beaucoup plus facile d'ĂȘtre chercheur chez Intel. Si vous travaillez sur les communications optiques sur puces ou sur la mĂ©moire solide, vous trouverez dans les entreprises des technologies qui ne sont pas encore scientifiques, il faut donc crĂ©er des alliances. Par exemple, Stephen Swanson () créé pour les nouvelles technologies de mĂ©moire. Ce formulaire ne fonctionne pas toujours, mais dans certains cas, il peut s'avĂ©rer trĂšs efficace. De plus, en science, le dĂ©veloppement des systĂšmes informatiques les plus puissants est plus difficile. Les plus grands projets de supercalculateurs actuellement menĂ©s aux Ătats-Unis, au Japon et en Chine sont tous axĂ©s sur les affaires.
Mise en Ćuvre pratique des idĂ©es. MCS, MS, CLH, JSR 166, en collaboration avec Doug Lee et plus encore.
Vitali: Vous avez dĂ©jĂ parlĂ© de la façon dont vous avez commencĂ© Ă travailler sur les algorithmes de synchronisation. Vous avez deux articles trĂšs cĂ©lĂšbres sur Đž , qui, dans un sens, ont Ă©tĂ© implĂ©mentĂ©s en Java. (NDLR : toutes les publications sont consultables ). LĂ , ce blocage a Ă©tĂ© mis en Ćuvre avec quelques modifications et il s'est avĂ©rĂ© , et la file d'attente a Ă©tĂ© implĂ©mentĂ©e comme prĂ©vu. Mais de nombreuses annĂ©es se sont Ă©coulĂ©es entre la publication de vos articles et leur application pratique.
Alexey: Cela semble environ 10 ans dans le cas de la file d'attente.
Michael: Avant que ces fonctionnalités n'apparaissent dans la bibliothÚque standard Java ?
Vitali: Oui. Qu'avez-vous fait pour que cela se produise ? Ou n'ont-ils rien fait ?
Michael: Je peux vous raconter comment MS Queue est entrĂ© dans Java 5. Quelques annĂ©es avant sa sortie, j'ai travaillĂ© avec le groupe de Mark Moyers chez Sun Microsystems dans leur laboratoire prĂšs de Boston. Il a organisĂ© un atelier pour des personnes qu'il connaissait et qui travaillaient sur des problĂšmes intĂ©ressants en multithreading, car il souhaitait trouver des sujets qu'il pourrait vendre Ă leur entreprise. C'est lĂ que j'ai rencontrĂ© Doug Lea pour la premiĂšre fois. Doug, moi et environ 25 autres personnes de Sun discutions ensemble de la prĂ©sentation de Doug sur , qui devint plus tard java.util.concurrent. En cours de route, Doug a dĂ©clarĂ© qu'il aimerait utiliser la file d'attente MS, mais pour cela, il avait besoin d'un compteur pour le nombre d'Ă©lĂ©ments dans la file d'attente de l'interface. Autrement dit, cela aurait dĂ» ĂȘtre fait par une mĂ©thode distincte, atomique, prĂ©cise et rapide. J'ai suggĂ©rĂ© simplement d'ajouter des numĂ©ros de sĂ©rie aux nĆuds, en prenant le numĂ©ro du premier nĆud et du dernier et en soustrayant l'un de l'autre. Doug s'est grattĂ© la tĂȘte, a dit « pourquoi pas » et a fini par faire exactement cela. Nous avons discutĂ© de la mise en Ćuvre de cette approche dans la bibliothĂšque, mais Doug a fait la majeure partie du travail lui-mĂȘme. En consĂ©quence, il a rĂ©ussi Ă Ă©tablir un excellent support multithreading en Java.
Alexey: Donc, si je comprends bien, la méthode .size() aurait dû faire partie de l'interface de file d'attente standard, et elle aurait dû avoir une complexité algorithmique de O(1) ?
Michael: Oui, et en plus de cela, un compteur séparé est requis.
Alexey: Parce que si vous appelez la mĂ©thode .size() en Java, le rĂ©sultat devrait ĂȘtre disponible immĂ©diatement et non basĂ© sur la taille rĂ©elle de la collection. Je vois Merci.
Michael: Quelques annĂ©es plus tard, je travaillais sur des structures de donnĂ©es doubles avec mon Ă©lĂšve Bill Scherer - en fait, c'est de cela dont je vais parler . Doug est venu nous voir et nous a dit qu'il pouvait les utiliser dans Java Executor Framework. Avec Bill, ils ont créé deux implĂ©mentations, les files d'attente dites justes et injustes. Je les ai conseillĂ©s sur ce projet, mĂȘme si je n'ai pas participĂ© Ă l'Ă©criture du code proprement dit. En consĂ©quence, la vitesse des exĂ©cuteurs testamentaires a considĂ©rablement augmentĂ©.
Vladimir: Avez-vous rencontrĂ© des implĂ©mentations incorrectes de vos algorithmes ou des demandes d'ajout de nouvelles fonctionnalitĂ©s ? En gĂ©nĂ©ral, la pratique devrait coĂŻncider avec la thĂ©orie, mais elles diffĂšrent bien souvent. Supposons que vous ayez Ă©crit un algorithme et que sur papier, cela fonctionne, mais que les personnes impliquĂ©es dans la mise en Ćuvre commencent Ă vous demander plus de fonctionnalitĂ©s ou une sorte de peaufinage de l'algorithme. Avez-vous dĂ©jĂ vĂ©cu de telles situations ?
Michael: Le seul exemple dans lequel quelqu'un est venu me voir et m'a demandĂ© « comment le mettre en Ćuvre » Ă©tait la question de Doug, dont j'ai dĂ©jĂ parlĂ©. Mais il y a eu quelques cas oĂč des changements intĂ©ressants ont Ă©tĂ© apportĂ©s pour rĂ©pondre Ă des besoins pratiques. Par exemple, l'Ă©quipe K42 d'IBM a converti le verrou MCS et en a fait une interface standard, de sorte qu'il n'Ă©tait pas nĂ©cessaire de transmettre le nĆud de file d'attente aux routines d'acquisition et de libĂ©ration. GrĂące Ă cette interface standard, une idĂ©e qui Ă©tait belle en thĂ©orie a commencĂ© Ă fonctionner dans la pratique. Il est surprenant quâils nâaient jamais publiĂ© dâarticle Ă ce sujet et, bien quâils aient obtenu un brevet, ils lâont ensuite abandonnĂ©. LâidĂ©e Ă©tait merveilleuse et jâessaie dâen parler autant que possible.
Il y a eu dâautres cas oĂč des personnes ont amĂ©liorĂ© les algorithmes que jâai publiĂ©s. Par exemple, la file d'attente MS dispose d'un mĂ©canisme d'installation en deux Ă©tapes, ce qui signifie qu'il y avait deux CAS sur le chemin critique de la file d'attente. Sur les voitures plus anciennes, les CAS Ă©taient assez chers. Intel et d'autres fabricants les ont assez bien optimisĂ©s rĂ©cemment, mais il Ă©tait une fois des instructions Ă 30 cycles, il n'Ă©tait donc pas souhaitable d'en avoir plus d'une sur le chemin critique. En consĂ©quence, une file dâattente diffĂ©rente a Ă©tĂ© dĂ©veloppĂ©e, similaire Ă la file dâattente MS, mais qui ne comportait quâune seule opĂ©ration atomique sur le chemin critique. Ceci a Ă©tĂ© obtenu grĂące au fait que pendant une certaine pĂ©riode de temps, l'opĂ©ration pouvait prendre un temps O(n), plutĂŽt qu'un temps O(1). C'Ă©tait peu probable, mais possible. Cela est dĂ» au fait qu'Ă certains moments, l'algorithme a parcouru la file d'attente du dĂ©but jusqu'Ă la position actuelle dans cette file d'attente. En gĂ©nĂ©ral, lâalgorithme sâest avĂ©rĂ© trĂšs efficace. Pour autant que je sache, cette mĂ©thode nâest pas trĂšs utilisĂ©e, en partie parce que les opĂ©rations atomiques nĂ©cessitent beaucoup moins de ressources quâauparavant. Mais l'idĂ©e Ă©tait gĂ©niale. J'aime aussi beaucoup le travail de Dave Dice d'Oracle. Tout ce qu'il fait est trĂšs pratique et il utilise le fer trĂšs intelligemment. Il a participĂ© Ă la plupart des algorithmes de synchronisation et des structures de donnĂ©es multithread prenant en charge NUMA.
Vladimir: Lorsque vous écrivez des algorithmes ou enseignez à des étudiants, le résultat de votre travail n'est pas immédiatement visible. La communauté a besoin de temps pour se familiariser, par exemple, avec un nouvel article. Le nouvel algorithme ne trouve pas immédiatement d'application.
Michael: Il est loin dâĂȘtre immĂ©diatement clair si lâarticle sera significatif ou non. Je pense qu'il serait intĂ©ressant de faire une Ă©tude des articles qui ont Ă©tĂ© primĂ©s lors de confĂ©rences. Autrement dit, regardez les articles que les membres des comitĂ©s de programme considĂ©raient Ă un moment donnĂ© comme les meilleurs. Vous devez essayer de calculer, en fonction du nombre de liens et de l'impact sur les entreprises, l'influence rĂ©elle de ces articles dans 10, 20, 25 ans. Je doute qu'il y ait une forte corrĂ©lation entre les deux. Il ne sera pas nul, mais il sera trĂšs probablement beaucoup plus faible que nous le souhaiterions. De nombreuses idĂ©es restent longtemps inexploitĂ©es avant de se gĂ©nĂ©raliser. Par exemple, prenons la mĂ©moire transactionnelle. Plus de 10 ans se sont Ă©coulĂ©s entre la publication de lâarticle original et le moment oĂč les gens ont commencĂ© Ă construire des machines avec celui-ci. Et avant l'apparition de ce souvenir dans les produits commerciaux - et tous les 20. Pendant trĂšs longtemps, personne n'a prĂȘtĂ© attention Ă l'article, puis le nombre de liens vers celui-ci a fortement augmentĂ©. Il serait difficile de le prĂ©voir Ă lâavance. Dâun autre cĂŽtĂ©, les idĂ©es trouvent parfois une mise en Ćuvre immĂ©diate. Il y a quelques annĂ©es, j'ai Ă©crit un article avec Joe Izraelevitz pour DISC qui proposait une nouvelle dĂ©finition formelle de la validitĂ© des structures de donnĂ©es persistantes qui pourraient ĂȘtre utilisĂ©es aprĂšs une panne de l'ordinateur qui les exĂ©cute. J'ai aimĂ© l'article dĂšs le dĂ©but, mais il s'est avĂ©rĂ© beaucoup plus populaire que prĂ©vu. Il a Ă©tĂ© utilisĂ© par plusieurs groupes diffĂ©rents et est finalement devenu la dĂ©finition standard des structures de persistance. Ce qui, bien sĂ»r, est sympa.
Vladimir: Existe-t-il des techniques que vous utilisez pour l'Ă©valuation ? Essayez-vous mĂȘme dâĂ©valuer vos articles et vos Ă©tudiants ? Quant Ă savoir si la personne Ă qui vous avez enseignĂ© va dans la bonne direction.
Michael: Comme tout le monde, je fais plus attention Ă ce que je fais en ce moment. Encore une fois, comme tout le monde, je consulte occasionnellement Google Scholar pour voir si mes articles antĂ©rieurs sont citĂ©s, mais c'est plutĂŽt par curiositĂ©. La plupart du temps, je suis absorbĂ© par ce que font mes Ă©lĂšves actuellement. Lorsquâil sâagit dâĂ©valuer le travail actuel, il sâagit en partie de considĂ©rations esthĂ©tiques, de ce qui est Ă©lĂ©gant et de ce qui ne lâest pas. Et au quotidien, les questions ouvertes jouent un rĂŽle important. Par exemple, un Ă©tudiant vient me voir avec un graphique de certains rĂ©sultats, et nous essayons de comprendre d'oĂč vient un comportement Ă©trange du graphique. En gĂ©nĂ©ral, dans notre travail, nous essayons constamment de comprendre des choses que nous ne comprenons pas encore.
Mémoire transactionnelle
Vitali: Peut-ĂȘtre pourrions-nous parler un peu de mĂ©moire transactionnelle ?
Michael: Je pense que cela vaut la peine d'en parler au moins un peu car j'y ai mis beaucoup d'efforts. Câest un sujet sur lequel jâai plus de publications que tout autre. Mais en mĂȘme temps, curieusement, jâai toujours Ă©tĂ© trĂšs sceptique quant Ă la mĂ©moire transactionnelle. Ă mon avis, (M. Herlihy, J. E. B. Moss) a Ă©tĂ© publiĂ© en avance sur son temps. Au dĂ©but des annĂ©es 1990, ils ont suggĂ©rĂ© que la mĂ©moire transactionnelle pourrait aider les programmeurs talentueux Ă travailler sur des structures de donnĂ©es multithread, afin que ces structures puissent ensuite ĂȘtre utilisĂ©es comme bibliothĂšques par des programmeurs ordinaires. Autrement dit, cela aiderait Doug Lee Ă rĂ©aliser son JSR 166. Mais la mĂ©moire transactionnelle n'Ă©tait pas destinĂ©e Ă faciliter la programmation multithread. Mais câest exactement ainsi quâelle a commencĂ© Ă ĂȘtre perçue au dĂ©but des annĂ©es 2000, lorsquâelle sâest gĂ©nĂ©ralisĂ©e. Il a Ă©tĂ© prĂ©sentĂ© comme un moyen de rĂ©soudre le problĂšme de la programmation parallĂšle. Cette approche mâa toujours semblĂ© dĂ©sespĂ©rĂ©e. La mĂ©moire transactionnelle ne pourrait que faciliter lâĂ©criture de structures de donnĂ©es parallĂšles. Câest, me semble-t-il, ce quâelle a rĂ©alisĂ©.
à propos de la difficulté d'écrire du code multithread
Alexey: TrĂšs intĂ©ressant. Il semble y avoir une certaine barriĂšre entre les programmeurs rĂ©guliers et ceux qui peuvent Ă©crire du code multithread. L'annĂ©e derniĂšre, j'ai parlĂ© Ă plusieurs reprises avec des personnes qui mettaient en Ćuvre un cadre algorithmique. Par exemple, avec Martin Thomson, ainsi qu'avec des programmeurs travaillant sur des bibliothĂšques multithread. (NDLR : Martin Thompson est un dĂ©veloppeur trĂšs connu, a-t-il Ă©crit Đž . Et il a aussi Ă notre confĂ©rence Joker 2015, enregistrement vidĂ©o . Il est le mĂȘme cette confĂ©rence aussi disponible). Le principal dĂ©fi, disent-ils, est de rendre les algorithmes Ă la fois rapides et faciles Ă utiliser. Autrement dit, ils essaient de surmonter cet obstacle et d'attirer autant de personnes que possible dans cette rĂ©gion. Qu'en pensez-vous?
Michael: C'est le problÚme principal du multithreading : comment atteindre des performances élevées sans augmenter la complexité du systÚme.
Alexey: Parce que lorsqu'ils tentent d'éviter la complexité, l'algorithme devient moins universel.
Michael: La clĂ© ici rĂ©side dans des abstractions correctement conçues. Il me semble que c'est gĂ©nĂ©ralement l'essentiel dans le domaine des systĂšmes informatiques. Butler Lampson aime utiliser ce terme et il nous appelle « marchands dâabstractions ». Les technologies simples nâexistent pas aujourdâhui. Les processeurs que nous utilisons comportent 10 milliards de transistors : la simplicitĂ© est hors de question. En mĂȘme temps, l'ISA est beaucoup plus simple que le processeur, puisque nous avons travaillĂ© trĂšs longtemps pour lui fournir des performances Ă©levĂ©es et une interface relativement simple. Mais tout ne se passe pas bien pour elle non plus. Le mĂȘme problĂšme se pose avec les accĂ©lĂ©rateurs qui apparaissent dĂ©sormais sur le marchĂ©. Des questions se posent : comment crĂ©er la bonne interface pour le GPU, un mĂ©canisme de cryptage, de compression, un mĂ©canisme de transcodage, un mĂ©canisme d'algĂšbre linĂ©aire ou mĂȘme un FPGA plus flexible. Comment crĂ©er une interface qui rend lâoutil facile Ă utiliser et cache la complexitĂ© ? Il ne sâen dĂ©barrassera pas, mais plutĂŽt le cachera Ă un simple programmeur.
Alexey: Si je comprends bien, nous avons encore un obstacle à la compréhension des abstractions. Prenons le modÚle de la mémoire : à notre stade de développement de la science et de la technologie, c'est l'une des principales abstractions. Grùce à lui, tous les programmeurs sont divisés en deux groupes : la plus grande partie sont ceux qui ne le comprennent pas, et la plus petite partie sont ceux qui comprennent, ou pensent comprendre.
Michael: C'est une bonne question : est-ce que l'un d'entre nous comprend vraiment le modÚle de mémoire ?
Vitali: Surtout en C++.
Michael: Parlez Ă Hans Boehm un jour. C'est l'une des personnes les plus intelligentes que je connaisse, un grand expert en modĂšles de mĂ©moire. Il vous dira tout de suite quâil y a beaucoup de choses quâil ne comprend pas. Mais si nous revenons Ă la question des abstractions, alors, Ă mon avis, l'idĂ©e la plus importante dans le domaine des modĂšles de mĂ©moire au cours des 30 derniĂšres annĂ©es a Ă©tĂ© exprimĂ©e . (NDLR : une liste complĂšte des publications est disponible ).
Alexey: Ma question est : cette barriĂšre vient-elle de la nature mĂȘme du concept ?
Michael: Non. Sarita est arrivĂ©e Ă la conclusion qu'avec la bonne approche, vous pouvez rĂ©ussir Ă masquer toute la complexitĂ©, obtenir des performances Ă©levĂ©es et donner au programmeur une API simple. Et si vous suivez cette API, vous pouvez obtenir une cohĂ©rence cohĂ©rente. Je pense que c'est le bon modĂšle. Ăcrivez du code sans courses de donnĂ©es et obtenez une cohĂ©rence sĂ©quentielle. Bien sĂ»r, afin de rĂ©duire les risques de course, des outils spĂ©ciaux sont nĂ©cessaires, mais c'est une autre affaire.
Vladimir: Y a-t-il eu des moments dans votre carriĂšre oĂč un problĂšme qui semblait rĂ©solu s'est soudainement transformĂ© en catastrophe, ou il s'est avĂ©rĂ© que ce problĂšme Ă©tait insoluble ? Par exemple, en thĂ©orie, vous pouvez factoriser nâimporte quel nombre ou dĂ©terminer si un nombre est premier. Mais en pratique, cela peut s'avĂ©rer difficile Ă rĂ©aliser ; avec le matĂ©riel actuel, il est difficile de prendre en compte les chiffres. Est-ce qu'il vous est arrivĂ© quelque chose de similaire ?
Michael: Je ne me souviens pas immĂ©diatement de quelque chose comme ça. Il y a eu des moments oĂč il m'a semblĂ© qu'il n'y avait plus rien Ă faire dans une certaine zone, mais ensuite quelque chose de nouveau et d'intĂ©ressant s'est produit lĂ -bas. Par exemple, je pensais que le domaine des files d'attente illimitĂ©es avait dĂ©jĂ atteint sa maturitĂ©. AprĂšs plusieurs amĂ©liorations apportĂ©es Ă la file dâattente MNS, il ne se passait plus grand-chose. Et puis Morrison (Adam Morrison) et Afek (Yehuda Afek) ont inventĂ© . Il est devenu clair qu'une file d'attente multithread illimitĂ©e Ă©tait possible, oĂč la plupart du temps il n'y avait qu'une instruction de rĂ©cupĂ©ration et d'incrĂ©mentation sur le chemin critique. Et cela a permis d'obtenir des performances d'un ordre de grandeur supĂ©rieures. Ce n'est pas que nous ne sachions pas que la rĂ©cupĂ©ration et l'incrĂ©mentation sont une chose trĂšs utile. Eric Freudenthal a Ă©crit Ă ce sujet dans son travail sur l'Ultracomputer avec Allan Gottlieb Ă la fin des annĂ©es 1980, mais il s'agissait de files d'attente limitĂ©es. Morrison et Afek ont ââpu utiliser la rĂ©cupĂ©ration et l'incrĂ©mentation sur une file d'attente illimitĂ©e.
Nouvelles architectures. La victoire de la mémoire transactionnelle est-elle proche ?
Vladimir: Ătes-vous Ă la recherche de nouvelles solutions architecturales qui pourraient ĂȘtre utiles aux algorithmes ?
Michael: Bien sĂ»r, il y a beaucoup de choses que jâaimerais voir mises en Ćuvre.
Vladimir: Quel genre, par exemple ?
Michael: Tout d'abord, quelques extensions simples de notre mĂ©moire transactionnelle au niveau matĂ©riel dans les processeurs Intel et IBM. En particulier, j'aimerais que le chargement et le stockage non transactionnels qui viennent de se produire soient immĂ©diatement disponibles dans les transactions. Ils conduisent immĂ©diatement Ă des boucles dans la sĂ©quence qui se produit avant, elles peuvent donc ĂȘtre difficiles. Mais si vous conservez des couches d'abstraction, vous pouvez faire beaucoup de choses trĂšs intĂ©ressantes en dehors de la transaction pendant qu'elle se produit. Je ne sais pas Ă quel point cela serait difficile Ă mettre en Ćuvre, mais ce serait trĂšs utile.
Une autre chose utile est de charger le cache depuis la mĂ©moire distante. Je pense que tĂŽt ou tard, cela sera fait. Cette technologie permettra la crĂ©ation de systĂšmes Ă mĂ©moire dĂ©sagrĂ©gĂ©e. Il serait possible de conserver, disons, 100 tĂ©raoctets de mĂ©moire non volatile dans un rack, et le systĂšme d'exploitation lui-mĂȘme dĂ©ciderait dynamiquement quelles sections de cette mĂ©moire doivent correspondre Ă l'espace d'adressage physique des processeurs. Cela serait extrĂȘmement utile pour le cloud computing, car cela permettrait de fournir de grandes quantitĂ©s de mĂ©moire aux tĂąches qui en ont besoin. Je pense que quelqu'un le fera.
Vitali: Pour finir de parler de mémoire transactionnelle, j'ai encore une question sur ce sujet. La mémoire transactionnelle remplacera-t-elle à terme les structures de données multithread standards ?
Michael: Non. Les transactions sont un mĂ©canisme spĂ©culatif. Au niveau de la programmation, ce sont des verrous atomiques, mais Ă lâintĂ©rieur, ce sont des spĂ©culations. De telles prĂ©visions fonctionnent si la plupart des suppositions sont correctes. Par consĂ©quent, la mĂ©moire transactionnelle fonctionne bien lorsque les threads interagissent Ă peine les uns avec les autres et il vous suffit de vous assurer qu'il n'y a pas d'interactions. Mais si un message dĂ©marre entre les threads, les transactions sont de peu d'utilitĂ©. Laissez-moi vous expliquer, nous parlons du cas oĂč les transactions concernent l'ensemble de l'opĂ©ration atomique. Ils peuvent toujours ĂȘtre utilisĂ©s avec succĂšs comme composants de structures de donnĂ©es multithread. Par exemple, si vous avez besoin d'un CAS de trois mots et que vous devez multithreader trois petites choses au milieu d'un algorithme vĂ©ritablement multithread qui fonctionne avec vingt threads en mĂȘme temps. En gĂ©nĂ©ral, les transactions peuvent ĂȘtre utiles, mais elles nâĂ©limineront pas la nĂ©cessitĂ© de concevoir correctement des structures de donnĂ©es multithread.
Mémoire non volatile, Optane DIMM, appareils ultra-rapides.
Vitali: La derniĂšre chose dont je voudrais parler est le sujet de vos recherches actuelles : la mĂ©moire non volatile. Que peut-on espĂ©rer dans ce domaine dans un avenir proche ? Peut-ĂȘtre connaissez-vous des implĂ©mentations efficaces qui existent dĂ©jĂ ?
Michael: Je ne suis pas un expert en hardware, je sais seulement ce que je lis dans l'actualitĂ© et ce que me disent mes collĂšgues. Tout le monde a dĂ©jĂ entendu dire qu'Intel vend , qui ont environ 3 fois la latence de lecture et 10 fois la latence d'Ă©criture que la RAM dynamique. Ils seront bientĂŽt disponibles dans des versions trĂšs grands volumes. C'est drĂŽle de penser que vous pourriez avoir un ordinateur portable avec plusieurs tĂ©raoctets de RAM adressable par octets. Il est probable que dans 10 ans nous dĂ©ciderons d'utiliser cette nouvelle technologie, puisque nous utilisons de la DRAM - il suffit d'augmenter le volume. Mais grĂące Ă lâindĂ©pendance Ă©nergĂ©tique, de toutes nouvelles opportunitĂ©s sâouvrent Ă nous. Nous pouvons modifier fondamentalement la pile de stockage afin qu'il n'y ait pas de sĂ©paration entre la mĂ©moire de travail adressable par octets et la mĂ©moire persistante structurĂ©e en blocs. Ainsi, nous n'aurons pas besoin de sĂ©rialiser tout ce qui doit ĂȘtre transfĂ©rĂ© d'un programme exĂ©cutĂ© Ă un autre dans des fichiers structurĂ©s en blocs. Nous pouvons en dĂ©duire de nombreux principes importants qui affectent les systĂšmes d'exploitation, les environnements d'exĂ©cution et les magasins de donnĂ©es distribuĂ©s. Ce domaine est trĂšs intĂ©ressant Ă travailler. Personnellement, il mâest difficile de prĂ©dire Ă quoi tout cela va conduire, mais les problĂšmes ici sont extrĂȘmement amusants. Il peut y avoir des changements rĂ©volutionnaires ici, et ils dĂ©coulent trĂšs naturellement des travaux sur le multithreading, puisque la reprise aprĂšs incident est un processus "multithreading" Ă cĂŽtĂ© du fonctionnement normal du systĂšme.
Le deuxiĂšme sujet principal sur lequel je travaille actuellement est la gestion des appareils ultra-rapides et l'accĂšs sĂ©curisĂ© aux appareils depuis l'espace utilisateur avec un contrĂŽle de politique systĂ©mique. Ces derniĂšres annĂ©es, il y a eu une tendance Ă dĂ©placer l'accĂšs Ă l'appareil vers l'espace utilisateur. Cela est dĂ» au fait que la pile du noyau TCP-IP ne peut pas fonctionner au-dessus d'une interface rĂ©seau qui a besoin d'un nouveau paquet toutes les 5 microsecondes ; elle ne peut tout simplement pas suivre le rythme. Par consĂ©quent, les fabricants offrent un accĂšs direct aux appareils. Mais cela signifie que le systĂšme d'exploitation perd le contrĂŽle du processus et ne peut pas fournir un accĂšs appropriĂ© Ă l'appareil pour les applications concurrentes. Notre Ă©quipe de recherche estime que cette lacune peut ĂȘtre Ă©vitĂ©e. Nous aurons un article Ă ce sujet chez USENIX ATC ce mois-ci. Cela est liĂ© au travail sur la persistance, car la mĂ©moire persistante adressable par octets de longue durĂ©e est, par essence, un pĂ©riphĂ©rique dotĂ© d'E/S ultra-rapides auquel il faut accĂ©der dans l'espace utilisateur. Cette recherche rend possible de nouvelles approches des micro-noyaux, des exokernels et d'autres tentatives traditionnelles pour dĂ©placer en toute sĂ©curitĂ© les fonctionnalitĂ©s du noyau du systĂšme d'exploitation vers l'espace utilisateur.
Vladimir: La mémoire adressable par octets est excellente, mais il existe une limitation physique : la vitesse de la lumiÚre. Cela signifie qu'il y aura inévitablement un retard lors de l'interaction avec l'appareil.
Michael: Absolument raison.
Vladimir: Y aura-t-il suffisamment de capacité pour faire face aux nouvelles charges ?
Michael: C'est une excellente question, mais il me sera difficile d'y répondre. L'idée du traitement en mémoire existe depuis pas mal de temps, elle est trÚs intéressante, mais aussi trÚs complexe. Je n'ai pas travaillé dans ce domaine, mais ce serait formidable si des découvertes y étaient faites. Je crains de n'avoir rien d'autre à ajouter.
Vladimir: Il y a encore un problĂšme. De nouvelles quantitĂ©s de RAM nettement plus importantes seront impossibles Ă intĂ©grer dans le processeur. Par consĂ©quent, en raison de limitations physiques, cette RAM doit ĂȘtre isolĂ©e.
Michael: Tout dépend du nombre de défauts dans la fabrication des circuits intégrés. S'il était possible de créer des tranches semi-conductrices entiÚrement exemptes de défauts, il serait alors possible d'en faire un microcircuit entier. Mais maintenant, nous ne savons pas comment fabriquer des microcircuits plus grands que des timbres-poste.
Vladimir: Mais nous parlons toujours de tailles énormes, de centimÚtres. Cela a inévitablement un impact sur la latence.
Michael: Oui. Vous ne pouvez rien faire contre la vitesse de la lumiĂšre.
Vladimir: Malheureusement.
La prochaine grande tendance. Structures de données doubles. Hydre.
Vitali: D'aprĂšs ce que je comprends, vous dĂ©tectez trĂšs rapidement les nouvelles tendances. Vous avez Ă©tĂ© lâun des premiers Ă travailler en mĂ©moire transactionnelle et lâun des premiers Ă travailler en mĂ©moire non volatile. Selon vous, quelle sera la prochaine grande tendance ? Ou peut-ĂȘtre est-ce un secret ?
Michael: Pour ĂȘtre honnĂȘte, je ne sais pas. J'espĂšre que je pourrai remarquer quand quelque chose de nouveau arrive. Je n'ai pas eu la chance d'inventer un nouveau domaine par moi-mĂȘme, mais j'ai eu un peu de chance et j'ai pu commencer Ă travailler assez tĂŽt dans de nouveaux domaines créés par d'autres. J'espĂšre que je pourrai le faire Ă l'avenir.
Alexey: La derniÚre question de cette interview portera sur vos performances à Hydra et vos activités à l'école. Si je comprends bien, le rapport à l'école portera sur les algorithmes sans blocage et lors de la conférence sur les doubles structures de données. Pourriez-vous dire quelques mots sur ces rapports ?
Michael: Nous avons en partie dĂ©jĂ abordĂ© ces sujets avec vous dans cette interview. Il s'agit du travail que j'ai effectuĂ© avec mon Ă©lĂšve Bill Scherer. Il a Ă©crit une thĂšse Ă ce sujet, et Doug Lee y a Ă©galement contribuĂ©, et il est finalement devenu partie intĂ©grante des files d'attente synchrones multithread de la bibliothĂšque Java. Supposons que la structure des donnĂ©es soit lue et Ă©crite sans blocage, c'est-Ă -dire que chaque opĂ©ration comporte un nombre limitĂ© d'instructions sur le chemin critique. Si vous tentez de supprimer des donnĂ©es d'un conteneur vide, ou tentez de supprimer certaines donnĂ©es qui ne se trouvent pas dans ce conteneur, vous ĂȘtes immĂ©diatement informĂ© que cela n'est pas possible. Mais ce comportement peut ne pas ĂȘtre acceptable si le thread a rĂ©ellement besoin de ces donnĂ©es. Ensuite, la premiĂšre chose qui vient Ă lâesprit est de crĂ©er une boucle qui demandera constamment si les donnĂ©es nĂ©cessaires sont apparues. Mais il y a ensuite des interfĂ©rences pour tous les autres. De plus, avec cette approche, vous pouvez attendre 10 minutes, puis un autre thread viendra et il recevra accidentellement les donnĂ©es nĂ©cessaires en premier. Les structures de donnĂ©es doubles n'ont toujours pas de verrous, mais elles permettent aux threads d'attendre correctement. Le terme « double » signifie que la structure contient soit des donnĂ©es, soit des demandes de donnĂ©es, appelons-les des anti-donnĂ©es. Ainsi, si vous essayez de rĂ©cupĂ©rer quelque chose dans un conteneur vide, une requĂȘte sera placĂ©e dans le conteneur Ă la place. Le fil de discussion peut dĂ©sormais attendre une demande sans dĂ©ranger personne d'autre. De plus, la structure de donnĂ©es attribue des prioritĂ©s aux demandes afin qu'une fois reçues, elles les transmettent Ă la bonne personne. Le rĂ©sultat est un mĂ©canisme non verrouillable qui prĂ©sente toujours une spĂ©cification formelle et de bonnes performances dans la pratique.
Alexey: Quelles sont vos attentes par rapport à cette structure de données ? Cela améliorera-t-il les performances dans tous les cas courants, ou est-il mieux adapté à certaines situations ?
Michael: C'est utile si, d'une part, vous avez besoin d'un conteneur sans verrouillage et, d'autre part, vous devez attendre dans une situation oĂč vous devez rĂ©cupĂ©rer des donnĂ©es du conteneur qui ne s'y trouvent pas. Au meilleur de ma connaissance, notre framework offre un comportement optimal lorsque ces deux conditions sont remplies. Par consĂ©quent, dans ces cas, je recommande de lâutiliser. Le principal avantage des structures de donnĂ©es sans verrouillage est quâelles Ă©vitent les problĂšmes de performances. Et l'attente est trĂšs importante dans de nombreux algorithmes si les donnĂ©es sont transfĂ©rĂ©es d'un thread Ă un autre.
Vitali: Laissez-moi clarifier : parlerez-vous de la mĂȘme chose Ă l'Ă©cole et Ă la confĂ©rence ?
Michael: à l'école en général sur les structures de données multithread, avec les principes de base décrits au début de la leçon. Je suppose que le public sait ce que sont les threads et est familier avec les verrous. Sur la base de ces connaissances de base, je parlerai des structures de données sans verrouillage. Je vais donner un aperçu des problÚmes les plus importants dans ce domaine, en abordant des sujets tels que la gestion de la mémoire. Je ne pense pas qu'il y aura quelque chose de plus compliqué que la file d'attente MS.
Alexey: Envisagez-vous d'enseigner les structures de données doubles à la fin de votre cours à l'école ?
Michael: Je vais les mentionner, mais je nây consacrerai pas beaucoup de temps. Le rapport Hydra leur sera dĂ©diĂ©. Il couvrira le projet qui a finalement Ă©tĂ© transformĂ© en Java, ainsi que la collaboration avec Joe Israelevich pour crĂ©er une double variante de la file d'attente LCRQ et la crĂ©ation d'une conception quasi universelle pour les structures de donnĂ©es doubles.
Alexey: Le cours Ă l'Ă©cole peut donc ĂȘtre recommandĂ© aux dĂ©butants, et le cours sur les doubles structures de donnĂ©es sur Hydra - aux personnes qui ont dĂ©jĂ une certaine expĂ©rience ?
Michael: Corrigez-moi si je me trompe, mais le public d'Hydra sera trÚs diversifié, comprenant de nombreux experts Java et, en général, des personnes qui ne sont pas spécifiquement impliquées dans la programmation multithread.
Vitali: Oui c'est vrai.
Alexey: Du moins nous lâespĂ©rons.
Michael: Dans ce cas, je serai confrontĂ© au mĂȘme problĂšme avec lequel nous avons commencĂ© cet entretien : comment faire un reportage Ă la fois suffisamment riche en dĂ©tails techniques et accessible Ă tous les auditeurs.
Vitali: Allez-vous faire un rapport de la mĂȘme maniĂšre que vous faites des confĂ©rences ? C'est-Ă -dire parler au public et s'adapter Ă la situation ?
Michael: J'ai peur que cela ne se passe pas ainsi, car le rapport comportera des diapositives. Les diapositives sont importantes lorsque les auditeurs parlent initialement des langues différentes. Beaucoup de gens auront du mal à me comprendre en anglais, surtout si je parle trop vite. J'ai choisi ces sujets parce que m'a demandé de parler des structures de données sans verrouillage à l'école SPTDC ; puis j'avais besoin d'un rapport pour une conférence d'un groupe d'utilisateurs Java, et je voulais choisir quelque chose qui intéresserait spécifiquement les programmeurs Java. Le moyen le plus simple était de parler de ces éléments de la bibliothÚque Java auxquels j'avais participé d'une maniÚre ou d'une autre.
Alexey: Nous supposons que le public d'Hydra connaĂźt dĂ©jĂ quelque chose sur la programmation sans verrouillage et a peut-ĂȘtre une certaine expĂ©rience dans ce domaine. Mais ce nâest quâune hypothĂšse : la situation deviendra plus claire lors de la confĂ©rence elle-mĂȘme. Quoi qu'il en soit, merci pour votre temps. Je suis sĂ»r que l'interview sera trĂšs intĂ©ressante pour nos lecteurs. Merci beaucoup!
Vitali: Merci
Michael: Je serai heureux de vous rencontrer à Saint-Pétersbourg.
Alexey: Nous aussi, nous avons une belle ville. Avez-vous déjà été ici?
Michael: Non, je ne suis jamais allĂ© en Russie du tout. Mais Saint-PĂ©tersbourg a toujours Ă©tĂ© sur la liste des endroits oĂč je ne suis pas encore allĂ©, mais oĂč je veux vraiment aller, donc j'Ă©tais trĂšs content de l'invitation.
Alexey: D'ailleurs, nous aurons un programme d'excursions pour les intervenants. Merci beaucoup pour l'interview et bonne journée !
Vous pouvez poursuivre votre conversation avec Michael 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
