
Aujourd'hui, dans notre studio virtuel, l'un des donateurs les plus célèbres est
Jeffrey Richter .
Il est actuellement architecte logiciel partenaire chez Microsoft avec Distributed Cloud Apps & Storage. En d'autres termes, une personne qui sait tout sur Azure Storage.
FAQ |
---|
Trop de texte. De quoi s'agit-il?Pour le rendre plus amusant à lire, pour cet article, nous avons proposé une mise en page plus intéressante. Il y aura des têtes parlantes à gauche et du texte à droite. Si vous passez tristement à la partie qui vous intéresse, alors dans la table des matières, il y a des liens d'ancrage. Distribution:  Eugene phillennium Trifonov (questions non techniques ) - Conseils de développement d'entreprise
- Combiner différents types d'activités
- Que lire, quoi étudier, comment écrire
 Oleg olegchir Chirukhin ( problèmes techniques ) - Pourquoi Richter apprend JS, Golang et Python
- Dois-je continuer à écrire en C ++
- L'évolution et l'avenir du développement sur la plateforme de Windows, .NET et en général
- JavaScript va-t-il conquérir le monde, la sécurité du type est-elle nécessaire
- Un peu sur les avantages des fournisseurs de cloud
- Quoi de mieux d'avoir - un jet privé ou un hélicoptère privé
- Comment tout faire
Pourquoi cet article est-il tombé dans le hub JavaScript?Uniquement pour ceux qui sont intéressés par l'opinion de l'architecte Azure concernant JS et sa position dans l'holivar sur la sécurité des types. Cet holivar découle d'interviews en interviews , et il ne voit pas la fin.
Pourquoi cet article est-il tombé dans le hub C ++?Richter a initialement écrit des livres sur C ++. Uniquement pour ceux qui sont intéressés par l'avis de l'architecte Azure concernant l'avenir et l'applicabilité de C ++
|

Jeff est devenu célèbre au début des années 90 lorsqu'il a écrit un livre sur la façon de programmer Windows 3.1. Son livre «Programming Applications for Microsoft Windows» est devenu un classique, publié plus tard sous le nom de «Windows via C / C ++» et a résisté à plusieurs éditions.
Avec l'avènement de .NET, il a écrit "CLR via C #" - qui s'est également avéré être un classique, ainsi que plusieurs éditions. À cette époque, il était l'un des fondateurs de Wintellect et, ne faisant officiellement pas partie de Microsoft, il était plus libre d'évaluer. Ce qui lui a valu une réputation d'expert indépendant majeur sur Windows. Il s'agit d'un homme légendaire du niveau de Charles Petzold et Don Box.
A propos de la vie: ingénieur, écrivain, entrepreneur
Nous avons de nombreuses questions différentes pour vous, et je vais commencer par quelques autres moins liées à la partie technique. Ai-je bien compris que vous travaillez simultanément chez Microsoft et Wintellect?
Je suis propriétaire de Wintellect depuis dix-huit ans et jusqu'à la dernière semaine. Il y a trois ans, j'ai rejoint l'équipe Azure chez Microsoft, et depuis lors je n'ai plus travaillé chez Wintellect. Je n'avais aucun lien significatif avec Wintellect.
Vous avez. Mais encore, je voudrais vous poser quelques questions concernant votre expérience en tant que créateur de Wintellect. De nombreux programmeurs se réunissent lors de nos conférences qui connaissent bien le processus de développement de logiciels, et certains d'entre eux envisagent très probablement de créer leur propre entreprise, mais ils ne connaissent pas le côté entrepreneurial de la question. Vous avez également des connaissances dans les deux domaines, il serait donc intéressant d'entendre vos conseils aux personnes qui envisagent de créer leur entreprise.
Vous ne consacrerez certainement pas tout votre temps au développement et vous en apprendrez beaucoup sur d'autres domaines: les affaires, la gestion de l'argent, l'économie, les finances, l'embauche et le licenciement. Vous devrez constamment prendre beaucoup de décisions et interagir beaucoup avec les gens: avec les clients, les partenaires. Vous devrez trouver des options qui conviennent à toutes les parties. Malgré tout cela, chez Wintellect, j'ai pu passer suffisamment de temps à développer, car nous employions des gens qui étaient principalement engagés dans les affaires. Néanmoins, j'ai également dû participer à l'aspect entrepreneurial de la question, et je l'ai fait avec plaisir, car c'était une nouvelle expérience intéressante. Le fait que je n'ai pas eu besoin de penser aux bits et octets 24 heures sur 24 fait de moi, à mon avis, une personne plus intégrale. Je ne suis désolé pour rien.
Avez-vous rencontré des difficultés inattendues? Ou, au contraire, est-ce que les choses ont été plus faciles que vous ne le pensiez?
Notre chemin était sans équivoque très inégal: parfois les affaires allaient bien, de nouveaux clients arrivaient. À d'autres périodes, tout était quelque peu différent. Lorsque nous avons souscrit un abonnement vidéo WintellectNOW , le lancement et la rentabilité se sont révélés beaucoup plus difficiles que nous ne le pensions. En fin de compte, cela s'est avéré, et maintenant il est assez réussi, mais cela a pris environ un an de plus que prévu. De plus, des surprises arrivent aux employés: certains sont merveilleux, d'autres nuisent à l'entreprise, et ces choses ne sont souvent clarifiées que plus tard - elles sont invisibles dans le travail quotidien. Dans l'ensemble, nos attentes ont souvent été trompées dans le bon comme dans le mauvais sens.
Il me semble que de nombreux développeurs ne veulent pas créer leur propre entreprise, craignant que, passant du temps en affaires, ils ne soient plus guidés par les dernières technologies. Avez-vous eu du mal à vous tenir au courant de l'aspect technique des choses?
C'est une bonne question. À mon avis, la solution est la spécialisation. Lorsque Wintellect a été fondée, elle comptait trois partenaires techniques. Chacun de nous était engagé dans un certain domaine. Aucun de nous ne pourrait être un expert dans tous ces domaines. Mon domaine était la programmation système - systèmes d'exploitation, langages, temps d'exécution, multithreading, etc. Cette organisation des affaires économise des ressources. Si une langue a une nouvelle version publiée une fois par an, le suivi est facile, et dans les domaines qui sont importants pour moi - cela ne m'a jamais posé de problème.
Vous faites beaucoup de choses liées au côté entrepreneurial: faites des présentations, écrivez des livres. Avez-vous l'impression que ces différentes formes d'activités interfèrent les unes avec les autres, ou vice versa? Par exemple, est-ce que la rédaction d'un livre avec de futures présentations aide?
Aide certainement. De toutes les classes, écrire des livres absorbe le plus de temps et de nerfs, forçant l'attention sur la langue, la grammaire, l'organisation du matériel et la recherche des bonnes démonstrations. C'est très difficile, et l'écriture de chaque livre prend généralement plusieurs mois. Mais lorsque ce travail est terminé, la création de diapositives est déjà beaucoup plus facile, car il y a déjà des démonstrations, et il vous suffit de donner une pincée sur le matériel. De plus, une compréhension de la structure interne de divers systèmes me permet de donner les bons conseils et de choisir la bonne technologie pour résoudre les problèmes lorsque je travaille en tant que consultant ou chez Microsoft dans l'équipe Azure Storage. En général, toutes ces activités s'entraident grandement.
Votre expérience d'écriture a-t-elle changé votre façon de lire des livres? Prêtez-vous plus d'attention aux livres à cause de cela?
Je pense que j'ai changé et il me semble que je prête également plus d'attention aux présentations des autres orateurs. Je regarde si l'orateur a la capacité de présenter le matériel, s'il est familier avec le matériel, s'il répète ce que les autres ont dit ou s'il comprend vraiment profondément le problème. Je fais également attention aux mêmes choses dans les livres: le livre est-il bien écrit, y a-t-il une compréhension technique approfondie de la question, y a-t-il des recommandations directes ou est-ce que la structure interne du système est décrite. Dans mes livres, j'essaie de décrire le fonctionnement du système, de noter les côtés positifs et négatifs, de montrer comment reporter d'éventuels problèmes, de décrire les exigences de performance. Il me semble que mes livres sont considérés comme relativement réussis du fait que je donne beaucoup de contexte pour chaque technologie, et pas seulement d'indiquer: faites-le, faites-le différemment. Je continue d'étudier les nouvelles technologies, je lis donc de la littérature technique, regarde des vidéos de YouTube et d'autres sources, j'assiste à des reportages. Il ne me suffit pas de découvrir que certaines technologies fonctionnent de cette façon et de cette façon, je dois approfondir les choses, comprendre dans quels cas elles sont bonnes et dans lesquelles elles ne fonctionnent pas, quelles astuces elles ont.
Puisque vous suivez des livres et des rapports d'autres auteurs, pouvez-vous recommander le travail ou la vidéo de quelqu'un d'autre?
Récemment, j'ai étudié Go et Python dans le cadre de mon travail chez Microsoft, à cet effet j'ai lu les logs de l'équipe Go et les spécifications de ce langage. J'ai toujours été surpris que les développeurs ne lisent pas les spécifications de la langue dans laquelle ils écrivent, car cela définit complètement comment la langue devrait fonctionner. Au lieu de cela, les gens lisent des livres. Je recommande de toujours lire les spécifications. Sinon, je regarde habituellement des vidéos de discours lors de conférences sur diverses technologies. Il est difficile de conseiller quoi que ce soit ici - certains haut-parleurs sont meilleurs, d'autres pires.
Vous n'avez pas besoin d'appeler quelqu'un qui est définitivement meilleur que tout le monde - dites simplement qui vous avez aimé.
J'aime les intervenants qui entrent dans les détails de la question. Je suis toujours intéressé par les rapports sur la gestion de la mémoire. En raison de la gestion de la mémoire, il y a généralement beaucoup de problèmes de performances, ce qui est très important pour moi. Tout rapport sur le travail du garbage collector dans la langue dans laquelle j'écris m'intéressera: par exemple, s'il utilise la compression ou non, etc. C'est particulièrement bon lorsque le rapport parle de choses pour lesquelles les informations sont inaccessibles - le travail du garbage collector n'est généralement pas décrit même dans la spécification. Il existe des modèles qui rendent la collecte des ordures plus efficace. Tout cela m'intéresse.
Technologie et équipement
Entrons dans une petite conversation avec mes ennuyeuses questions techniques. Jeffrey, vous êtes de Microsoft. Pourquoi avez-vous besoin de Go et Python s'il y a un merveilleux C #?
Chez Microsoft, je travaille dans une équipe dédiée au SDK et aux outils pour Azure Storage. Nous développons un SDK pour Azure Storage dans de nombreux langages différents - Go, .NET, Python, Java, NodeJS, PHP, Ruby, C, C ++. Nous restructurons nos SDK et la première implémentation a été effectuée sur Go. Il s'agissait d'un changement critique et nous ne savions pas comment nos clients réagiraient. À cette époque, nous n'avions pas de SDK Go. Le premier SDK a donc été écrit en Go pour que nos clients ne cassent rien. Mais après avoir reçu des commentaires positifs, nous sommes passés à Java, car nous avions d'importants clients qui avaient besoin de la bibliothèque asynchrone Java. À cet égard, j'ai commencé à étudier RxJava et, en général, à travailler davantage avec Java. Naturellement, mon expérience avec C # m'a beaucoup aidé ici. Nous sommes actuellement dans les affaires de NodeJS, donc je suis en train de l'étudier et de TypeScript. De plus, nous avons commencé à porter le nouveau SDK sur .NET - il y en avait moins pour moi ici parce que je le sais déjà. Le prochain en ligne est Python, donc je l'étudie aussi. C'est le travail de notre équipe - nous écrivons le SDK pour toutes ces langues, donc mon activité n'est pas limitée à une seule langue.
Ok, j'ai compris. Vous pouvez trouver une énorme quantité de vos livres sur Amazon. Le plus ancien livre que j'y ai trouvé, «Windows via C / C ++», date de 2007. Mais vous êtes devenu célèbre en tant qu'auteur de livres dans les années 90. Comment ça?
En fait, j'ai publié un livre encore plus tôt, mais il est assez ancien, je ne sais pas s'il est sur Amazon. Il a été écrit pour Windows 3.0, c'est-à-dire c'est vers 1990 ou 1991. Mais très peu de gens l'ont acheté et peu de gens le savent.
Comme Windows 3.0.
Oui, c'était il y a longtemps.
Ensuite, vous êtes passé en C # et avez commencé à écrire des livres à ce sujet, non? Selon vous, quel est l'avenir du C ++? Existe-t-il même? Faut-il continuer à tirer les bagages de C ++, ou est-il préférable de passer à Rust, Go ou quelque chose comme ça?
Je ne pense pas que nous n'aurons plus qu'une seule langue qui vaincra tout le monde. La force des langages de programmation est que chacun d'eux exécute particulièrement bien un type particulier de travail. Environ tous les mois, je vérifie les indices de popularité de différents langages, et aujourd'hui le C et le C ++ restent très répandus. Étant donné que notre équipe Azure chez Microsoft compte de nombreux clients qui utilisent C et C ++, nous n'allons pas quitter ces langages. De plus, grâce à l'IOT, l'intérêt pour ces langues a récemment augmenté. Nous parlons de petits appareils comme un thermostat qui contrôle la température de votre appartement. Ils ont peu de mémoire et des processeurs faibles et, en plus de l'assembleur, C et C ++ leur conviennent le mieux. Je pense donc que ces langues continueront d'être utilisées pendant très longtemps. Depuis que nous avons commencé à parler de Rust - j'ai une certaine expérience avec cela, et à mon avis, il a beaucoup d'idées très intéressantes. Il pourrait s'agir d'une sorte de C / C ++ sécurisé. À mon avis, c'est très prometteur. Néanmoins, il me semblait plutôt immature. Notre équipe ne s'en est pas encore occupée, mais nous continuons de la surveiller, et à l'avenir, la situation pourrait changer.
Dois-je bien comprendre que vous disposez d'un SDK pour C et C ++?
Oui, nous avons un SDK C ++ pour Azure Storage. Certaines autres équipes ont également un SDK C / C ++, mais pas toutes, et elles n'ont pas encore décidé si elles les créeront à l'avenir.
Comment l'industrie du développement Windows a-t-elle évolué? Si je comprends bien, vous y avez tout vu dans le monde. Delphi est la première chose dont je me souviens moi-même. Ensuite, C # a gagné en popularité, et jusqu'à présent, je ne vois aucun signe de chute dans C # /. NET, Java et autres. S'agit-il, selon vous, de la dernière étape de l'évolution de la programmation impérative? Quelle est la probabilité que quelque chose de complètement nouveau apparaisse dans l'année ou les dix prochaines années? Disons, une langue prenant en charge les réseaux de neurones?
Je suis un homme d'un âge vénérable, surtout en comparaison avec vous, et j'ai vu beaucoup de choses dans notre industrie. Je programme depuis environ 45 ans. Un changement important au fil des ans est que le système d'exploitation est devenu moins important. Je me suis principalement concentré sur les services logiciels et les outils de ligne de commande. J'avais l'habitude de travailler beaucoup plus avec l'interface graphique, et mes premiers livres étaient consacrés à cela: les applications GUI avec des menus, des listbox, des comboboxes, la gestion des événements de souris, des touches, etc. À un moment donné, j'ai cessé d'avoir assez de nerfs pour cela, car dans ce domaine, vous êtes constamment confronté à des débats extrêmement féroces sur l'utilisation de la listbox ou de la combobox dans certains cas, si la largeur doit être de 100 ou 1000 pixels, quelle couleur doit être. J'ai été dégoûté par ces discussions, donc finalement j'ai arrêté de faire ça. En ce qui concerne les langues, je pense que nous aurons encore de nombreuses options différentes. Les langues meurent depuis très longtemps, même aujourd'hui vous pouvez rencontrer des gens qui écrivent en Cobol, en Fortran ou dans des langues extrêmement peu connues. De nouvelles langues apparaîtront tout le temps - récemment, Julia a acquis une certaine renommée, Clojure existe un peu plus longtemps. Ces nouvelles langues ont attiré une attention considérable pendant un certain temps, après quoi certaines réussissent et d'autres non. C # a trouvé un chemin impressionnant, il a 15 ans et il est toujours extrêmement courant. À mon avis, l'équipe .NET de Microsoft à bien des égards lui a insufflé une nouvelle vie grâce au fait qu'elle a créé .NET Core, qui fonctionne désormais sous Linux. Si vous écrivez en C #, vos compétences sont applicables dans un grand nombre de scénarios différents. Je pense que l'intérêt pour C # ne faiblira pas avant de nombreuses années.
Minute de publicité. Jeff arrivera à la conférence DotNext 2018 à Moscou avec une présentation intitulée «Construire des applications réactives et évolutives» , qui parlera de l'utilisation d'E / S asynchrones pour construire des systèmes hautement évolutifs (à la fois sur le serveur et sur le client). Il s'envole pour la Russie en direct, pour le dire légèrement, pas tous les jours - c'est un excellent moyen non seulement d'écouter le rapport, mais aussi de discuter en face-à-face des problèmes actuels dans la zone de discussion.
Souhaitez-vous écrire « GNU / Linux Runtime via C #» maintenant ?
Oui, je le veux. À mon avis, pour les développeurs de services GNU / Linux, pour de nombreuses raisons, il est mieux adapté que Windows - sauf dans certains cas. Je pense que C # est un excellent langage. J'ai récemment fait connaissance avec Java: pour des raisons d'exactitude, je peux seulement dire qu'après cela j'ai commencé à apprécier beaucoup plus C #. J'aime vraiment les types de valeur en C #. Nous avons récemment travaillé avec le mappage d'un fichier en mémoire en Java, et ne pouvions pas le fermer directement, nous avons dû attendre la récupération de place. Certaines solutions Java me semblent complètement inutiles. À mon avis, C # et .NET sont bien meilleurs.
Trois ans plus tard, nous, les Javistes, aurons des types de valeur.
Oui, je sais, et vous avez des génériques ...
"Certains" est, à mon avis, une description très précise.
Eh bien oui, vos génériques sont un peu bizarres. Mais Java est un langage incroyablement populaire, et les gens l'utilisent de manière très productive. Il est certainement très important. Mais, à mon avis, dans .NET, certains aspects sont meilleurs. Même si vous ajoutez des types de valeur, nous devons toujours prendre en charge les anciennes versions de Java. Il ne sera donc pas possible de réaliser ces nouvelles opportunités avant plusieurs années. Mais c'est bien: toutes les langues se développent, de nouvelles opportunités apparaissent en elles. Java, .NET, C # - tous vivront très longtemps, en particulier en tenant compte de certains changements récents, tels que .NET Core. Donc, à mon avis, C # pour GNU / Linux est une excellente combinaison pour les personnes qui écrivent des services.
Mais pour interagir avec le backend, vous avez besoin d'une interface utilisateur. Une fois, nous n'avions que des consoles de texte, puis l'interface utilisateur est apparue, ce qui a rendu le logiciel beaucoup plus fonctionnel. Et aujourd'hui, il existe Electron et d'autres moteurs basés sur JavaScript, et tout étudiant peut écrire une interface sur eux. N'avez-vous pas peur qu'à l'avenir tout soit écrit en JavaScript?
Non, je ne pense pas. Tout d'abord, c'est un problème de performances: en JavaScript, il ne peut pas se comparer avec C, C ++, Go, ou même C # et Java. De plus, je ne peux pas imaginer écrire un projet à grande échelle sans sécurité de type dans la phase de compilation. Quand je suis entré dans le monde des langages sûrs, je suis tombé amoureux de lui à première vue. JavaScript seul ne fournit pas de sécurité de type, donc je ne l'utiliserais pas dans un grand projet. Mais TypeScript le serait, et nous écrivons notre nouveau SDK en TypeScript. C'est un pas en avant significatif par rapport au JavaScript standard. Mais je ne pense pas que le monde entier n'utilisera jamais qu'une seule langue pour un seul but. Cela n'a tout simplement aucun sens. Même si nous parlons d'IOT, l'environnement pour exécuter JavaScript nécessite beaucoup de ressources et de nombreux appareils ne peuvent tout simplement pas les fournir.
Eh bien, il n'y a aucun problème avec JavaScript. O are sont-ils? Quels sont les principaux problèmes pour vous personnellement et pour l'industrie dans son ensemble?
Je ne sais pas s'ils sont liés aux langues ou aux systèmes d'exploitation. À l'heure actuelle, les systèmes d'exploitation sont devenus essentiellement des articles ménagers courants. Ils sont utilisés pour envoyer des messages électroniques et accéder à Internet. Pour la plupart des gens, peu importe s'ils utilisent Windows, Mac ou Linux. Les langages que nous utilisons aujourd'hui sont déjà assez puissants. La plupart des langues, en fait, déplacent simplement les données du point A au point B. Vous avez une collection, vous la parcourez, filtrez le contenu - chaque langue peut effectuer de telles actions. Ensuite, nous avons besoin de machines pour communiquer entre elles. Ici, la norme est TCP, HTTP est largement utilisé, mais il existe d'autres protocoles. Toutes ces technologies fonctionnent très bien, cependant, les performances peuvent être encore améliorées. À mon avis, les difficultés les plus graves aujourd'hui sont liées à la création de services. , , . , , . , , , , . , , , . , , , . Microsoft Azure, , , .
Azure ? Ou pas?
. . , , . , , , Azure Storage (, ) CosmosDB, - Amazon — . , . . , , , ? . Azure , . , , . , - , , .
. Wintellect , : «We don't just build software. We build developers.». , ?
Wintellect . , . , , Windows, .NET. , , : , , . . Microsoft , . — , — . . . , , / . , , , , . , , , . : , («you get out what you put in»). , , , . , .
, , . — , , , . ? ? , , , . , . - ? , « »? : , , — .
. , — - , - . - — . . - , . . , , , , . , , . , - , . , . . , , .
, , , ?
, . , : . . . : - . , , , . , . .
. , ?
, .
- «» , ?
Oui . , , , . . , . , , , . , , - , . - . . . , , . , — . , , . , . , , . Wintellect, . , - , . , .
Dernière-dernière question. Y a-t-il un souhait pour nos lecteurs sur Habré?
Je suis amoureux de notre industrie depuis 45 ans, je ne peux imaginer aucune autre activité pour moi. La technologie est en constante évolution, il y a toujours quelque chose de nouveau à apprendre. C'est un excellent choix de carrière. Je rencontre constamment des gens merveilleux ici et je suis heureux de les considérer comme mes amis. Même cette interview m'a apporté beaucoup d'émotions positives, malgré le fait que nous ne nous soyons rencontrés. En repensant à la vie que j'ai vécue, je ne peux pas imaginer d'autre moyen. Je pense que nous vivons une période merveilleuse et nous faisons une chose merveilleuse. Mon souhait est d'en profiter! Très probablement, c'est long.