Entretien avec Ryan Dahl, créateur de Node.js

Ryan dahl Ryan Dahl a présenté Node.js en 2009, a pris sa retraite quelques années plus tard et a fait un nouveau projet la semaine dernière: deno - Un runtime TypeScript sécurisé sur V8 ( GitHub , déballage ).

Il est temps de rappeler l' interview que Ryan a donnée au podcast Mapping The Journey en août 2017, sur lui-même, sa carrière, sur Node.js, et pourquoi il a cessé de le faire, sur quoi il travaille maintenant (à ce moment-là).

Un fragment de la traduction de cette interview était déjà sur Habré: Créateur de Node.js: "Pour les serveurs, je ne peux pas imaginer une autre langue que Go . " Ce message contient la traduction complète.

Ryan Dahl est ingénieur au projet Google Brain et créateur de Node.js, un runtime JavaScript basé sur le moteur Chrome V8. Ryan est actuellement engagé dans la recherche sur l'apprentissage en profondeur. Il travaille principalement sur la transformation d'image - colorisation et super résolution. Il a participé au développement de plusieurs projets Open Source, dont HTTP Parser et libuv.

Pramod: Bonjour à tous. Bienvenue dans la cartographie du voyage. En ce qui concerne Node.js, tout le monde connaît le nom de Ryan Dahl. Il a montré que nous ne traitons pas correctement les entrées / sorties et nous a appris à développer en utilisant le modèle «asynchrone pur». Notre invité aujourd'hui est Ryan Dahl, un hacker, programmeur talentueux et créateur de Node. Ryan, je suis très heureux de vous rencontrer, c'est un grand honneur. Bienvenue

Ryan: Salut! Je suis également ravi de vous voir.

P.: Ryan, vous êtes surtout connu comme le créateur de Node. Dites-moi, qu'avez-vous fait avant de vous intéresser à la technologie?

R: Enfant, j'habitais à San Diego. Quand j'avais 6 ans, ma mère m'a acheté un Apple 2C, j'ai donc eu accès à un ordinateur assez tôt. Soit dit en passant, j'ai maintenant 36 ans. J'ai donc grandi juste pendant la formation d'Internet. Au début, j'ai étudié dans un collège local, et après lui, je suis entré à l'Université de Californie à San Diego pour étudier les mathématiques. Ensuite, je suis entré à l'école doctorale en mathématiques de l'Université de Rochester. Oui, j'y ai étudié la topologie algébrique - une discipline plutôt abstraite qui me semblait très belle. Mais après un certain temps, je me suis ennuyé, parce que je pensais qu'elle n'avait pas d'applications réelles. Après avoir obtenu mon diplôme, j'ai décidé d'obtenir un doctorat, mais j'ai réalisé que je ne voulais pas consacrer le reste de ma vie aux mathématiques et quitter le programme. J'ai acheté un billet aller simple pour l'Amérique du Sud et j'y ai passé un an comme «étudiant affamé». Et puis il a commencé à créer des sites avec un gars, Eric. Et c'est ainsi que ma carrière de développeur a commencé. J'ai réalisé un site sur Ruby on Rails pour une entreprise de snowboard.

P.: Super! C'est probablement une expérience intéressante - quittez le programme de doctorat, allez en Amérique du Sud et devenez développeur Web.

R.: Je le ferais. C'est juste que vous vous habituez à travailler avec des tâches abstraites après avoir obtenu votre diplôme, et le développement d'un site Web est un processus très spécifique. Mais j'ai essayé de transformer tout cela en une sorte de belle théorie mathématique, comme celles que j'ai étudiées en magistrature. Je suppose que j'ai vraiment aimé que Ruby vous permette d'exprimer plus clairement vos pensées pendant le développement. Cela m'a intéressé et a suscité quelques réflexions. Je pense que c'est juste à propos de Rails. Le schéma Model-View-Controller n'était pas nouveau à l'époque, mais il me semble qu'il est devenu populaire précisément grâce à Rails. C'est cette combinaison que j'aimais.

P: Oui, le développement Web est une activité intéressante et Ruby est un excellent outil. Après cela, vous étiez développeur indépendant en Allemagne. L'un de vos projets était Node. Vous avez continué à y travailler pendant encore 6-8 mois, non?

R: C'est ça. Après l'Amérique du Sud, j'ai transféré la fille en Allemagne - elle est allemande et elle devait retourner à l'université. J'ai commencé à assister à une conférence Ruby où les gens ont discuté de ce nouveau paradigme Model-View-Controller. Là, j'ai rencontré un gars du nom de Chris Neukirchen. Il a créé Rack, un projet qui était essentiellement une abstraction simplifiée d'un serveur Web. Rack a transformé le serveur Web en une interface avec une seule fonction où vous pouvez faire des demandes et recevoir des réponses. J'ai ensuite travaillé avec le module Nginx dans un projet indépendant pour Engineyard. Permettez-moi de vous rappeler que dans Nginx, tout fonctionne de manière asynchrone, donc lorsque vous créez un module pour celui-ci, vous devez éviter les verrous. J'ai rencontré le projet Rack de Chris Neukirchen au moment où je travaillais avec des E / S non bloquantes sur le serveur Web Nginx. Je pense que c'est pourquoi j'ai eu l'idée de combiner ces deux choses.

P.: Il s'avère que sur la base de Rack et Nginx, vous avez eu l'idée de développer un framework qui exécuterait du code Javascript côté serveur et augmenterait considérablement les performances. Comment avez-vous décidé de passer les 6 prochains mois à faire cela?

R: Ces deux éléments - Rack et Nginx avec son asynchronie - ont simplifié ensemble l'interface du serveur Web. En décembre 2008, Chrome est sorti. Et avec lui, le moteur JavaScript V8. Plus précisément, pas le moteur lui-même, mais le runtime où la compilation JIT a lieu. En général, avec la sortie de la V8, j'ai commencé à la comprendre. Le V8 avait l'air intéressant, soigné et fonctionnait rapidement. Et soudain, cela m'est apparu. JavaScript est monothread et tout le monde y écrit déjà des algorithmes non bloquants. Je veux dire, tout le monde fait déjà des requêtes AJAX dans le navigateur, qui sont de toute façon non bloquantes. J'ai pensé: génial, JavaScript plus des E / S asynchrones et un peu de fonctionnalité pour un serveur HTTP est ce dont j'ai besoin. Et j'ai été tellement inspiré par l'idée que sans interruption j'ai travaillé dessus pendant les 4 prochaines années.

P.: Oui, JavaScript et les E / S asynchrones ont bien fonctionné. Je pense que les développeurs n'attendaient qu'un tel framework. Et je pose la question par curiosité: lorsque vous avez développé Node, aviez-vous une sorte de mentor ou l'avez-vous géré vous-même?

R: En général, j'ai tout fait moi-même. Certains de mes amis sont programmeurs, et ils ont donné quelques conseils, mais j'ai commencé à travailler seul dans ma chambre. Ensuite, j'ai déménagé à San Francisco, et j'ai rencontré beaucoup de programmeurs vraiment professionnels au travail chez Joyent. Déjà là, beaucoup ont donné des conseils et des suggestions pour Node.

P.: Clair. Veuillez nous parler du processus de développement de Node. Bien sûr, beaucoup de temps s'est écoulé depuis 2009 ...

R: Pour moi, les meilleurs moments de la vie sont quand je me plonge dans quelque chose avec ma tête, quand je crois en une idée. Et quand j'ai le temps d'y travailler avec diligence. Node était une telle idée qui devait être mise en œuvre, et sans moi, quelqu'un d'autre l'aurait prise. Il se trouve que j'ai eu peu de travail et assez de temps libre. Je pourrais consacrer Node pendant plusieurs mois - juste à ce moment-là, vous pouvez publier la version initiale. Et c'était génial et amusant.

P.: Classe, vous avez fait un excellent travail. Le nœud est basé sur le modèle de programmation asynchrone pur. Pensez-vous que cette idée a bien fonctionné?

R: Une question intéressante. Cela fait plusieurs années, et moi-même je n'ai pas travaillé sur Node quelque part entre 2012 et 2013. Bien sûr, Node s'est énormément développé pendant cette période. Quand il est parti pour la première fois, j'ai donné beaucoup de conférences et essayé d'expliquer que nous faisions peut-être tout mal, et que les E / S non bloquantes aideraient à résoudre de nombreux problèmes de développement. Ou nous pourrions complètement oublier les threads et nous en sortir avec les abstractions de processus et la sérialisation. Mais en même temps, dans le cadre d'un processus, beaucoup de demandes seraient traitées, et nous obtiendrions donc une asynchronie. A cette époque, je croyais sincèrement à cette idée, mais au cours des deux dernières années, j'ai réalisé que c'était loin d'être la seule opportunité. Surtout après la sortie de Go. À mon avis, Go est apparu encore plus tôt, mais j'en ai entendu parler pour la première fois en 2012. Ensuite, il avait déjà un bon runtime et des fils verts de haute qualité, et avec tout cela, il était facile d'utiliser des abstractions. C'était comme bloquer les E / S, mais, si je comprends bien, l'interface entre Go et le système d'exploitation via des threads verts est en fait non bloquante.

Cependant, tout cela était disponible pour l'utilisateur sous la forme d'une interface de blocage, et, à mon avis, ce modèle présente des avantages. En règle générale, il est plus facile de comprendre ce qui se passe dans les algorithmes de blocage. Lorsqu'il y a une séquence d'actions, vous pouvez la suivre: effectuez A, attendez une réponse ou peut-être détectez une erreur. Exécutez ensuite B et obtenez également une réponse ou une erreur. Dans Node, tout est plus compliqué car vous devez sauter dans un autre appel de fonction.

P.: J'aime aussi beaucoup le modèle de programmation de Go. Utiliser des goroutines est un plaisir. Maintenant, mon équipe est en train d'écrire une application distribuée sur Go.

R: Oui, pour certains types d'applications, Go est le mieux adapté - par exemple, lors de la création d'un serveur. Je ne peux même pas imaginer comment travailler avec autre chose. Bien que, je pense, néanmoins, le paradigme non bloquant a très bien fonctionné pour Javascript, dans lequel il n'y a pas de threads. De plus, en Javascript, il y a maintenant le mot-clé async et vous pouvez travailler avec des fonctions asynchrones, vous n'avez donc plus besoin de vous précipiter entre les fonctions anonymes et de comprendre le joker des rappels. Les nouvelles versions de Javascript ont facilité le travail. Cependant, je pense que Node n'est pas la meilleure option pour un serveur Web à grande échelle. Pour cela, je choisirais certainement Go. Honnêtement, c'est pourquoi j'ai arrêté de travailler sur Node. Je viens de réaliser que ce n'est pas un système idéal pour développer un serveur.

Curieusement, il me semble que Node s'est vraiment brillamment montré du côté client. Il vous permet d'utiliser astucieusement des scripts lors de la création de sites. Par exemple, Browserify, pour ainsi dire, contient du Javascript côté client. Cela permet au client de traiter JavaScript sur le serveur. Un autre exemple est les petits serveurs de développement, ou même les serveurs de production qui gèrent le trafic en direct. Le nœud peut être très utile et pratique pour certaines choses. Mais si vous élevez un énorme serveur DNS distribué, je ne recommanderais pas de choisir Node.

P: Les développeurs du monde entier trouveront utile d'y penser. Pour toute entreprise, il est important de choisir le bon outil, donc vous avez une attitude assez objective envers Node. Vous avez présenté Node.js lors de la conférence JsConf 2009 de Berlin. Peut-être étiez-vous surpris qu'il ait réussi si rapidement?

R: Bien sûr. En général, pendant quatre années entières, je n'ai cessé de me demander. Node s'est développé à un rythme incroyable et la communauté a vraiment aimé.

P: Après cela, vous avez rejoint Joyant à San Francisco et travaillé sur Node de façon continue, non? Racontez-nous votre expérience là-bas. Les développeurs étaient très satisfaits et vous étiez au centre des événements.

R: Oui, c'était l'un des moments forts de ma vie. J'étais vraiment au centre des événements, je suis allé à diverses conférences. Une fois, j'ai même visité le Japon et les gens m'ont demandé de prendre une photo avec moi ... Je me suis même senti mal à l'aise. Quand j'ai commenté quelque chose sur le net, j'ai eu l'impression qu'une centaine de personnes m'ont immédiatement répondu. Puis j'ai réalisé que je devais choisir soigneusement mes mots et réfléchir à la façon dont ils me perçoivent - il semble qu'ils m'écoutaient vraiment, et c'était inhabituel. Je n'aimais pas tout ça. Après tout, je suis programmeur et je veux juste écrire du code, et parfois exprimer mon opinion sans trop de prudence. À cet égard, j'étais un peu mal à l'aise.

P: Vous aviez 29 ou 30 ans lorsque vous avez créé Node? Et il est déjà devenu une technologie si influente.

R: Oui. Mais j'étais encore plus probablement un développeur novice.

P.: Ryan, à l'époque, il y avait de nombreux projets différents qui fonctionnaient avec JavaScript côté serveur. Node n'était pas la seule solution, mais c'était la plus réussie - pourquoi pensez-vous?

R: C'est vrai, plusieurs personnes ont essayé d'adapter JavaScript pour le travail sur serveur. Maintenant, je ne me souviens même plus de leurs noms.

Le fait est que dans tous ces projets, le blocage des entrées / sorties a été utilisé, et cela ne correspondait pas très bien à la façon dont JavaScript était organisé, car cela ne fonctionne pas avec les flux. Et si vous utilisez des E / S bloquantes, vous ne pourrez pas traiter les demandes. Autrement dit, vous devez les traiter un à la fois, et rien n'en sort. De plus, j'ai ajouté un module HTTP de qualité et montré comment configurer un serveur HTTP, ainsi qu'un simple serveur TCP. J'ai essayé de m'assurer que ces choses fonctionnaient correctement et que les gens pouvaient créer des sites sans aucun problème. Je dois admettre qu'élever un serveur Web n'est pas une tâche facile, et de nombreux projets nécessitaient des fonctionnalités que la communauté devait réaliser seule. Mais personne n'a rien construit, car il n'y avait rien pour utiliser le système. À mon avis, pour tout nouveau framework, ou le produit dans son ensemble, vous avez besoin d'un échantillon de base que vous pouvez utiliser immédiatement. C'était l'avantage de Node - les gens pouvaient simplement le télécharger et configurer un serveur Web tout de suite.

P.: En effet, de bonnes conceptions sont très importantes, tout comme la facilité d'installation et d'utilisation. Beaucoup d'autres étaient déjà capables d'écrire du code en JavaScript, afin qu'ils puissent immédiatement se mettre au travail. Lorsque j'ai commencé à travailler avec Node, ma connaissance de JavaScript m'a également beaucoup aidé.

R: Il me semble que nous sommes habitués à penser que changer de langue est assez facile. Mais même si vous connaissez déjà une langue, il n'est pas si facile de créer un contexte pour une nouvelle langue. De nombreux développeurs connaissent déjà Javascript, ils sont donc intéressés à utiliser un langage familier dans un nouveau contexte, avec de nouveaux outils. Il s'avère que la même langue ouvre plus d'opportunités.

P.: C'est sûr. En 2012, un grand nombre de développeurs ont travaillé sur Node. Pourquoi avez-vous décidé de quitter et de remettre le projet à Isaac Schluter de Joyent?

R: Je pense qu'il y avait deux raisons à cela. Ensuite, j'ai travaillé sur Node pendant 4 ans et, en général, j'ai fait tout ce que j'avais prévu. Je ne m'attendais pas à ce que Node se transforme en une énorme API. Mon idée était de créer un petit noyau compact, sur lequel les gens pourraient construire leurs modules. Je voulais prendre en charge plusieurs fonctionnalités clés. Des modules d'extension ont été ajoutés dès le début, puis nous avons rangé les bibliothèques réseau HTTP, UDP, TCP et fourni un accès à tous les systèmes de fichiers. Ensuite, une équipe de cinq personnes prêtes à l'emploi a géré l'importante tâche de tout configurer pour Windows. Nous voulions utiliser les abstractions Windows - ports d'achèvement - pour les E / S asynchrones. Par conséquent, nous avons dû réécrire la bibliothèque racine, et de là, nous avons obtenu la bibliothèque libuv. À un moment donné, tout était prêt et nous avons publié Node pour Windows. Alors j'ai pensé: super. J'ai atteint mon objectif et je suis heureux d'avoir réussi à tout garder à l'esprit. Bien sûr, il y a encore mille bugs qui peuvent être corrigés jusqu'à la fin de la vie, mais l'équipe a suffisamment de personnes qui peuvent s'en occuper. Je voulais faire autre chose. De plus, Go est sorti, et pour moi Node n'était plus la seule solution pour le développement de serveurs. Eh bien, je ne voulais tout simplement pas être le centre d'attention chaque fois que j'écris quelque chose sur un blog.

P.: Clair. Oui, tout le monde n'aime pas ça. Lorsque vous avez commencé à travailler sur Node, vous aviez probablement certains plans. Pensez-vous que Node les a terminés maintenant?

R: Bien sûr, Node a dépassé toutes mes attentes. Après tout, il est maintenant utilisé par des centaines de milliers de personnes.

P.: Dites-moi, qu'avez-vous décidé de faire lorsque vous avez terminé cette étape intéressante du développement de Node?

R: Après avoir quitté Joyent, j'ai déménagé à New York et j'ai pris de courtes vacances pour travailler sur mes propres projets. J'en avais plusieurs. Instagram est sorti à ce moment-là, puis c'était original et simple. Tout le monde a dit: "Wow, c'est si simple, je l'aurais construit moi-même." Et, bien sûr, je le pensais aussi. J'avais un projet de réseau social, j'ai également construit un système de construction pour C ++ et un autre système de construction pour HTML, qui était similaire à Browserify - il emballait intelligemment Javascript et HTML. En général, j'avais beaucoup de projets, mais il me semble qu'aucun d'entre eux n'a vraiment réussi. Certains d'entre eux sont encore en développement, par exemple mon réseau social. Un jour, je le reprendrai. C'est ce que j'ai fait pendant un moment. Ensuite, j'ai commencé à lire et à apprendre sur les réseaux de neurones convolutifs et sur la façon dont le problème de classification d'images est résolu, et j'étais très intéressé par l'apprentissage automatique.

P: Vous étiez également résident du programme Google Brain. Quelles sont vos impressions?

R: Oui, j'ai récemment passé un an à Mountain View. Je reviens un peu: TensorFlow est sorti il ​​y a deux ans.

Dans le même temps, dans le laboratoire de machine learning, Google Brain a annoncé un nouveau programme pour les résidents, selon lequel une vingtaine de personnes y sont invitées. Je pense que l'idée était d'inviter des gens qui ne sont pas nécessairement familiers avec l'apprentissage automatique, mais qui pensent en mathématiques et en programmation. Ceux qui étaient intéressés à travailler avec ces nouvelles idées. L'apprentissage automatique est en constante évolution et beaucoup de travail est en cours, mais maintenant la communauté s'est finalement concentrée sur les réseaux de neurones. On pense que c'est l'algorithme le plus efficace pour l'apprentissage automatique. Par conséquent, une telle idée est venue - rassembler des gens qui sont intéressés à travailler avec le nouveau cadre TensorFlow, afin de éventuellement arriver à des conclusions intéressantes. J'ai passé un an au laboratoire. Fondamentalement, j'ai développé des modèles et écrit des articles scientifiques à leur sujet. Pour la plupart, j'ai travaillé avec des tâches de transformation d'image. Autrement dit, s'il existe une sorte d'image source, vous devez prédire quelle image sera sortie. À mon avis, c'est une tâche très intéressante. L'un des vrais exemples est la colorisation. Vous pouvez prendre une image en noir et blanc et essayer de prévoir les couleurs qui en résulteront. La chose la plus intéressante est que pour cette tâche, il existe toute une infinité de données pour la formation. Après tout, vous pouvez supprimer complètement la saturation de n'importe quelle photo couleur et obtenir l'image originale en noir et blanc. L'un des principaux problèmes de l'apprentissage automatique est le besoin d'une énorme quantité de données, et il y a beaucoup de données pour de telles tâches. Plus récemment, de nombreuses recherches sur les modèles génératifs. Par exemple, il existe des réseaux génératifs-adversaires et des réseaux convolutionnels de pixels qui ont appris à percevoir des images réelles, c'est-à-dire à distinguer les images réelles des copies artificielles qui ressemblent à des images réelles.Je voulais utiliser les résultats de ces études de modèles génératifs et une base de données sans fin pour la formation, et appliquer tout cela aux tâches de transformation d'image. J'ai étudié la superrésolution - c'est un processus qui vous permet d'augmenter la résolution de l'image d'origine. J'ai également travaillé sur la tâche de transformation entre images et réalisé deux projets de colorisation.

P: Merci pour la grande explication, Ryan! J'ai également lu que TensorFlow est une plate-forme puissante pour les tâches d'apprentissage automatique. Classification des images, transformation - bien sûr, je suis particulièrement bon dans ces domaines, mais je suis sûr que tout cela est très excitant. Continuez-vous à travailler dans le domaine de l'apprentissage automatique?

R: Oui, je travaille toujours chez Google, mais déjà en tant qu'ingénieur, et je fais des tâches similaires. J'étudie les modèles génératifs et j'aide les chercheurs à construire des systèmes et modèles de nouvelle génération.

P.: Super! Bien que les modèles génératifs ne soient presque pas liés à vos activités passées - Javascript, Node et développement web ...

R: C'est sûr. Mais quand même, j'ai commencé avec les mathématiques, et j'ai une bonne base mathématique. Eh bien, je ne fais pas partie de ceux qui font campagne pour un domaine spécifique. Je ne veux pas devenir un gourou en JavaScript ou en machine learning. J'aime juste explorer des opportunités intéressantes. Surtout, cela m'inspire pour inventer et construire quelque chose de nouveau qui bénéficiera à l'humanité.

P.: Clair. Il est utile de savoir que la base mathématique aide à l'apprentissage automatique. Dans l'un de vos derniers articles sur le Nihilisme optimiste, vous avez écrit qu'à l'avenir, nous serons en mesure de simuler le cerveau et de construire une machine qui comprendra les gens et pensera comme eux. Êtes-vous proche de cet objectif?

R: Oui, je dois être plus prudent avec les prédictions ... Alors je partage juste mon opinion personnelle: nous sommes inimaginablement loin de modéliser l'intelligence humaine. Les systèmes d'apprentissage automatique avec lesquels nous travaillons sont soit très primitifs, soit pas du tout fonctionnels. Je viens d'écrire un blog sur ma résidence dans Google Brain, et là j'ai énuméré les problèmes qui se posent lors du développement de tels modèles. Il me semble que ceux qui sont loin de cette sphère pensent souvent que vous pouvez prendre un modèle, lui transmettre des données et tout fonctionnera par lui-même. Mais ce n'est pas si simple.Il existe de nombreux pièges et problèmes sous-étudiés. Pour obtenir même les résultats les plus modestes, il faut parfois plusieurs mois d'expérimentation et de personnalisation en filigrane. Nous sommes donc encore très loin d'imiter le cerveau humain, mais il existe déjà des technologies prometteuses - par exemple, les réseaux de neurones convolutifs ou la méthode de rétropropagation des erreurs. Et, ce qui est encourageant, ces technologies sont basées sur un modèle de réseaux de neurones, qui ne ressemble pas tellement au cerveau humain, mais est dans une certaine mesure inspiré par les connaissances à ce sujet. Nous avons également des GPU et des méthodes pour les former, et nous savons déjà comment mener une formation distribuée avec eux au moins en partie. Par conséquent, à mon avis, les bases de systèmes plus grands et plus intelligents sont en train d'être jetées en ce moment. Personnellement, je suis athée, et je ne crois pas que mon cerveau soit autre chose,que les produits chimiques et les neurones. Ma conscience et la conscience de toute personne sont en quelque sorte encodées dans les interactions de ces neurones. Par conséquent, en principe, il n'y a aucun obstacle à imiter ces processus - davantage de recherches et de développements dans ce domaine sont simplement nécessaires. Il est trop tôt pour prédire combien de temps cela prendra.

P.: Je vois. Ryan, vous en avez vu beaucoup - dites-moi, comment pensez-vous que la technologie évoluera dans 20 ans?

R: Je suis avec beaucoup d'intérêt le machine learning et les opportunités qu'il ouvre. Avant même de créer une véritable intelligence artificielle, ces technologies se retrouvent dans de nombreuses applications différentes. En principe, ils seront très utiles dans tout système où vous devez faire des hypothèses raisonnables. Par exemple, vous pouvez utiliser la vision par ordinateur pour trier les matériaux dans les centres de recyclage. Il existe tout simplement d'innombrables domaines dans lesquels les technologies de base de l'apprentissage automatique seraient utiles. Je pense qu'ils seront de plus en plus appliqués dans divers processus, ce qui aura un impact énorme sur le domaine de la technologie et sur l'humanité dans son ensemble.

P.: Je suis d'accord, l'apprentissage automatique est un sujet passionnant. C'est tellement intéressant de voir comment les voitures sans chauffeur roulent le long de Mountain View. Un jour, ce sera formidable de se reposer sur une chaise et de confier à la machine un contrôle complet. Ryan, merci pour l'excellent framework Node et pour votre visite. Et bonne chance dans vos futurs projets!

R: Merci pour l'invitation, c'était intéressant de parler!

P.: Merci! C’est tout. J'étais heureux de discuter avec Ryan, un gars humble et génial. Il a déjà accompli beaucoup de choses au début de sa carrière de développeur et a fait un chemin impressionnant. Retrouvez-moi dans 2 semaines pour voir la prochaine histoire!

Source: https://habr.com/ru/post/fr413187/


All Articles