Vitaly Bragilevsky (
@_bravit ) enseigne toujours les cours Haskell et la théorie des algorithmes à la SFedU. Il donne également des cours sur place dans d'autres villes, est l'éditeur et le traducteur de nombreux livres sur Haskell et la programmation fonctionnelle, est membre des comités Haskell 2020 et du compilateur GHC, et il intervient activement lors de conférences. Par exemple, il donnera un court cours de
construction de compilateurs sur Haskell lors de la conférence fonctionnelle
FPURE à Kazan.
En raison d'un si grand nombre d'activités, l'enregistrement final est sorti pendant près d'une heure (
lien audio )! Lisez ci-dessous sa transcription textuelle, où Vitaly parle des avantages de la carrière d'un enseignant, de nombreux livres sur Haskell et pas seulement et, bien sûr, sur Haskell lui-même, et si vous devez être un génie pour écrire dans cette langue.
- Comment avez-vous réussi à devenir enseignant? Dans votre activité, le nombre de discours lors de conférences, vous ne ressemblez pas à un enseignant ordinaire.
Dans mon passé, les enseignants étaient différents.- Eh bien, les enseignants changent. Et je dois dire, bien sûr, que cette activité n'est vraiment pas très typique. Mais j'ai toujours voulu être professeur. Probablement, quand j'étais encore à l'école, je me suis imaginé être un enseignant et j'ai réfléchi à la façon dont j'enseignerais cela mieux que ceux qui m'enseignent. Et d'une manière ou d'une autre, cela s'est passé.
Quand j'étais en troisième année à l'université, j'ai commencé à enseigner à l'école de lycée, dont je suis diplômé. Et quand il a obtenu son diplôme universitaire, il a commencé à enseigner à l'université. C'était une façon très naturelle, et puis je ne m'imaginais pas comme quelqu'un d'autre. Par conséquent, pour moi, ce chemin était simple, direct et je n'avais pas d'options: j'ai toujours voulu cela et j'ai commencé à enseigner.
- Et comment est-il arrivé à l'institut? Vous êtes-vous spécialisé dans la programmation?- Je suis diplômé de l'Université d'État de Rostov avec un diplôme en mathématiques appliquées et informatique.
Nous avons étudié beaucoup de mathématiques appliquées, mais il y avait déjà beaucoup de formation en programmation. Alors oui, je peux dire que j'ai étudié en tant que programmeur.
Beaucoup de mes camarades de classe qui ont suivi la filière des programmeurs travaillent maintenant comme des patrons de programmeurs.
"Alors vous êtes resté là-bas et vous êtes allé aux études supérieures?"- Oui, je suis resté dans la même université. Je n'ai pas fait d'études supérieures. Et je ne me suis pas engagé dans une activité scientifique. Il y a eu quelques tentatives, mais je ne peux pas dire que j'étais engagé dans une science déterminée. J'ai continué à faire des choses qui me semblaient plus intéressantes que de faire de la science. Ici, il était encore superposé que dans notre pays il n'y avait aucun domaine scientifique qui m'intéressait. Et nous pouvons dire que non jusqu'à présent. Et pour pratiquer la science à distance, sans guide, par moi-même, je ne pouvais pratiquement pas.
- Et d'après la pratique, si nous le prenons, nous n'avons qu'à Novossibirsk quelque chose à voir avec les compilateurs?- Les compilateurs sont un peu différents après tout. L'école de compilation dans notre pays est assez forte, mais je m'intéressais à des choses plus théoriques. Par exemple, lié aux types.
Si nous prenons le
Dragon Book , alors un petit chapitre est consacré à la théorie des types et il n'y a vraiment rien. Des sections géantes consacrées à l'analyse, toutes sortes de choses de ce genre, mais ce qui m'intéresse n'est pas là ...
Quand j'ai obtenu mon diplôme, cela m'a attiré, mais rien de plus. J'étais plus intéressé à apprendre des choses théoriques. Et il se trouve que je les ai étudiés. Mais c'était purement auto-éducation. Aucun résultat concret, aucun échappement sous forme de travaux scientifiques.
- Et lequel des livres sur ce sujet pourrait être lu alors? Pier?- Si je ne me trompe pas, Pierce (
TAPL - Types et langages de programmation ) en anglais est sorti en
2005 . Puis il a été traduit en russe, et l'éditeur nous a ensuite envoyé un colis au département, où 5 à 6 de ces livres ont été traduits en russe. Nous avons eu des séminaires au cours desquels nous avons lentement étudié tout cela, fait des présentations et résolu des problèmes.
Mais avant cela, des livres en anglais sont également apparus. Il existe un excellent moyen d'apprendre quelque chose - d'en parler à un autre. Et j'ai suivi un cours sur l'utilisation du λ-calcul pour modéliser différentes constructions de langages de programmation. Il y avait un livre en anglais,
Springer . Autrement dit, vous lisez et en même temps dites à ceux qui souhaitent vous écouter.
- Vous enseignez différentes disciplines et avez généralement commencé avec Java. Comment se fait-il qu'ils aient commencé à enseigner Haskell?- Lorsqu'un jeune enseignant vient travailler dans une université, ils lui donnent des cours, pas habituellement de son choix, mais quoi lire. J'ai le premier cours spécial que j'ai lu, appelé «Web XML Technologies». La première fois que je l'ai lu, c'était en 2003. Début juillet, ils m'emmènent au département, ils disent que c'est votre charge, et en septembre vous commencez à lire le cours. Je n'étais ni dans l'un ni dans l'autre alors. Attribué - cela signifie que vous étudiez et commencez à lire. J'ai étudié XML dans le cadre de ce cours, puis j'ai commencé à étudier les services Web, en quelque sorte la programmation, et à partir de là, je suis passé à Java. Un cours Java est apparu et l'a enseigné un peu pendant plusieurs années.
Autrement dit, les cours apparaissent à partir de ce qu'ils ont enseigné, et c'est seulement alors que vous commencez à vous offrir ce qui vous intéresse et que vous voulez lire. S'il y a une place pour le coller dans le curriculum, le département est d'accord. Et donc le cours de PF est apparu, à mon avis en 2008/09.
Et à ce moment-là, je connaissais très mal Haskell. On peut supposer qu'il ne savait pas. Mais cela n'arrête généralement pas de lire un cours spécial. Les étudiants, bien sûr, ne comprenaient rien, et j'en ai discuté avec eux après de nombreuses années. Mais l'enseignant, qui donne des cours individuels, lit de mieux en mieux. Je l'ai déjà compris à un moment donné et j'ai commencé à mieux enseigner, comme il me semble.
- Et quelles ont été les évaluations des étudiants qui ont reçu le matériel?- Je ne crois aux évaluations des étudiants que si elles sont très abusives. Si les élèves réagissent bien, on ne peut pas y croire, car on ne sait pas exactement quels motifs ils ont pour cela. Et donc je n'ai pas entendu de mauvais abus. En fait, quand vous enseignez, vous pensez à chaque fois que vous feriez mieux l'année prochaine. Et vous restez toujours insatisfait de ce qui est maintenant. C'est-à-dire que c'est un processus d'amélioration continu.
Il est clair que les étudiants considèrent l’étude de Haskell comme une sorte d’obligation: ils doivent étudier, alors ils étudient. Et en général, ils ont raison.
- Comment cela a-t-il affecté les diplômés? Y a-t-il ceux qui sont passés au fonctionnalisme?- Je connais les unités utilisées par Haskell parmi celles qui ont suivi ce cours. Le cours ne s'appelait pas Haskell, mais FP. Et pour moi, il était toujours important que les étudiants essaient de comprendre les idées du PF, et Haskell, pas Haskell, est la dixième chose. Et j'espère qu'aucun de mes étudiants n'a peur d'utiliser des fonctions d'ordre supérieur et des fonctions Lambda dans d'autres langages de programmation industriels.
Et je pense que c'est absolument normal. Un monde dans lequel tout le monde programmera à Haskell n'est guère un très bon monde. Et s'ils n'ont pas peur des idées de PF - c'est bien.
- Et pourquoi ce sera un mauvais monde?- Parce que Haskell nécessite un travail à un niveau abstrait très élevé. Et le niveau d'humanité ne permet pas, à mon avis, à autant de programmeurs de résoudre tous les problèmes sur Haskell. Moins le niveau programmeur est requis, mieux c'est, plus nous pouvons résoudre de tâches. Par conséquent, les langages simples sont meilleurs que les langages complexes.
Nous ne pouvons pas exiger de toute l'humanité que tout le monde soit un génie et que tout le monde comprenne la théorie des catégories. Et nous ne pouvons pas exiger que tout le monde comprenne Haskell. Mais nous pouvons créer des langages de programmation avec lesquels presque tout le monde peut travailler. Et de tels langages de programmation devraient être communs. C'est déjà la tâche de leurs développeurs de faire faire aux programmeurs moins d'erreurs pour que les programmes se cassent moins souvent. Mais c'est différent. Les exigences des développeurs ne doivent pas être élevées. Et à mon avis, cela se produit dans n'importe quel domaine d'activité.
Prenez des voitures. Le niveau d'expert du conducteur devrait baisser tout le temps. Autrement dit, il devrait être de plus en plus facile de conduire une voiture. Il en va de même pour la programmation. Et Haskell, bien sûr, impose des exigences élevées, et ce n'est pas très prometteur. Ou on va prendre: ne comprends pas la monade, tire!
- Voici un exemple avec les pilotes, c'est compréhensible. J'essaie avec des médecins. Je ne voudrais pas que leur niveau baisse avec le temps.- J'ai entendu à plusieurs reprises que le niveau des médecins peut être augmenté en utilisant le niveau du logiciel. Les choses liées aux diagnostics, en ce moment, sont bien résolues par le logiciel. Il y a des analyses, il existe différentes méthodes d'apprentissage automatique qui aident à poser un diagnostic. Et la tâche du médecin est d'utiliser tout cela. Le logiciel doit être tel que le niveau du médecin soit suffisant pour utiliser ce logiciel.
Bien sûr, je ne comprends pas cela, mais je crois que c'est l'avenir. Nous n'avons pas besoin d'avoir un million de médecins experts. Autrement dit, ce ne devrait pas être un médecin, mais un opérateur de logiciel qui diagnostiquera, prescrira un traitement, etc. Une autre chose est que des experts extra-classe sont nécessaires pour développer de tels logiciels.
Cela peut sembler trop haineux, mais la pratique du développement humain montre que non seulement tous ne sont pas intelligents, mais que tous ne devraient pas être intelligents. C'est tout à fait normal. Si 1% de la population est intelligente, c'est bien, et plus n'est pas nécessaire. Peut-être que j'aimerais bien, mais c'est toujours impossible. Par conséquent, nous avons besoin de différents niveaux, de différents travaux.
- J'ai entendu dire que vous avez participé à des traductions de livres. Pouvez-vous en parler?- Ma première entreprise dans l'édition de livres a commencé par ce qui suit. J'ai entendu dire que la maison d'édition DMK-Press devrait publier le livre «
Explorez Haskell pour de bon ». J'ai été intéressé par cette traduction, car j'avais besoin de recommander aux étudiants quelque chose qu'il est conseillé de lire en russe sur Haskell.
Et moi, je me souviens bien, à la fin du mois de décembre, j'ai écrit une lettre à l'éditeur avec une question, comme ça, j'enseigne Haskell, j'ai entendu dire que des travaux étaient en cours pour publier une traduction. Dans quel état est ce travail? Et le rédacteur en chef de cette maison d'édition, Dmitry Movchan, m'a répondu que nous étions pratiquement en train de terminer, aimeriez-vous voir la disposition originale, que s'est-il passé là-bas?
Il m'a envoyé le plan d'origine, je l'ai regardé et j'ai été horrifié par l'état dans lequel il se trouvait. Il y avait des choses terribles. Par exemple, la moitié des exemples de code ont été indentés de manière incorrecte. Parce que les éditeurs de Haskell ne sont pas versés, et quelque part tout est aligné à gauche, ailleurs. Et la qualité de la traduction était également flippante dans de nombreuses parties. Et quand j'ai vu cela, j'ai écrit que vous ne pouvez pas publier de cette façon, et vous devez faire quelque chose à ce sujet et me laisser faire quelque chose. Je vais vous écrire un tas de commentaires sur quoi faire avec ce texte.
Ils ont accepté, et en un mois et demi, je leur ai envoyé divers commentaires sur le texte. Quelque chose devait être traduit à nouveau, certaines sections n'étaient pas traduites, elles devaient être traduites. J'ai donc fait la connaissance de la maison d'édition et au bout d'un moment, le livre est sorti. Là, je suis répertorié comme éditeur scientifique. Roman Dushkin, et je suis le deuxième. Et c'est ainsi que tout a commencé.
Et après cela, j'ai commencé à proposer aux maisons d'édition des livres à traduire. J'ai traduit avec Artyom Pelenitsyn, mon collègue universitaire, le livre de Byrd «
Pearls of Functional Programming ». Nous avons traduit «
Introduction à la théorie des langages de programmation », un livre mince. J'ai également traduit le livre de Marlow,
Parallel and Competitive Haskell Programming . Ou est-ce tout, ou autre chose, je ne me souviens pas, pour être honnête. Voici la dernière chose que mes élèves ont traduite, le «
programme Haskell » de Will Kurt.
J'ai fait ces choses pour faire des livres pour la communauté russophone, ce qui, selon moi, lui serait utile à lire. Je n'ai pas travaillé comme traductrice pour gagner de l'argent, mais pour que les livres paraissent en russe. Parce que nous avons encore l'anglais - c'est un problème.
- Avez-vous participé à la pratique de programmation fonctionnelle ? Je n'ai pas du tout trouvé ce magazine.- Eh bien, oui, j'ai écrit un article pour lui dans le troisième numéro ou quelque chose du genre. J'ai écrit sur les convolutions et comment elles permettent de programmer de nombreux calculs sur des listes.
- Qu'est-il arrivé au magazine? Qui a commencé et pourquoi tout a-t-il décroché?- Il est sorti plusieurs années. J'ai une collection complète d'imprimés. Je ne connais pas tous les détails de la façon dont cela s'est produit. Mais l'un des principaux organisateurs de ce magazine est Lev Valkin, un
lionet de LiveJournal. Il était, à mon avis, l'éditeur des premiers numéros, puis cela a été fait par
Zhenya Kirpichev , qui travaille maintenant dans Google. À mon avis,
Dmitry Astapov est toujours l'un de ceux au tout début. Ce sont toutes des personnes qui étaient alors actives dans le segment des LJ russes. Leurs messages ont été très populaires et ont fait l'objet de discussions gigantesques. Donc, à un moment donné, ils ont décidé de faire un magazine sur ce sujet. Et à mon avis, le magazine était très bon, les articles étaient très bien écrits.
Ils ont fonctionné comme ceci: les auteurs ont écrit des articles et ces articles ont été très bien évalués par les pairs. Il y a eu un sérieux processus de correction - j'ai été forcé de jeter un tas de blagues sur l'article. Valkin m'a dit: "
Vous lisez maintenant, c'est drôle pour vous, et alors vous aurez honte ." J'ai jeté un tas de blagues, etc. En général, le texte a fait l'objet d'un travail sérieux et s'est très bien déroulé.
Après cela, j'ai rencontré Valkin à l'automne et nous en avons parlé un peu et il dit qu'il y avait une certaine envie de le rendre plus sérieux. Mais plus grave - cela signifie la traduire en anglais pour élargir le public. S'engager dans la forme actuelle ne semblait pas très prometteur. Mais une telle décision conduirait au fait qu'il ne décollerait pas dans un public anglophone, car si bon en vrac, et en russe aussi, car il est difficile pour les développeurs russophones de lire en anglais.
Certaines personnes ne voulaient pas continuer en russe, elles voulaient en anglais, d'autres ne voulaient pas en anglais. Et en général, la fatigue est venue. Autrement dit, il n'y avait personne qui voulait devenir la force motrice derrière le magazine. Parce qu'il est clair que cela prend beaucoup de temps et que personne ne peut se le permettre. Mais sans force motrice, cela ne peut pas exister.
Par exemple, la pratique des magazines russes modernes est soit tout à fait générale, et les magazines spécialisés ne sont pas nécessaires, personne ne les connaît et personne ne lit. Même si elles existent, elles sont soutenues par certaines organisations, les gens sont payés et dans le cas de fprog, ils ont collecté de l'argent, mais ce n'est pas allé au revenu, mais pour garder la presse et ainsi de suite.
"Ont-ils envoyé une version imprimée directement?"- Oui, il y avait certains services, vous pouviez vous abonner à distance et recevoir des numéros réguliers. Autrement dit, ils ont été imprimés, et pas seulement sous forme électronique. Bien sûr, c'est agréable de les tenir entre vos mains. Le même Valkin a passé beaucoup de temps: il a acheté des polices pour un magazine afin que ce soit solide. Et c'est magnifique. Tout cela a été fait dans TeX, ce qui est toujours difficile. C'était beaucoup de travail et c'était très difficile de le faire.
"Vous vouliez passer immédiatement au livre que vous écrivez actuellement sur" Haskell in Depth "?" En quoi diffère-t-il de « Explorez Haskell pour de bon »?- Le livre est positionné comme le second par Haskell. Pour le lire, vous devez connaître Haskell. C'est la première différence entre "Learn your Haskell" et tout le monde, car ils entrent tous depuis le tout début, et ici je me permets même de ne pas expliquer la monade. Parce que déjà tout cela doit être étudié.
La deuxième chose qui est importante pour moi lors de l'écriture est que ce livre devrait mettre l'accent sur la capacité de Haskell à résoudre des problèmes pratiques. C'est un Haskell tellement pragmatique qui peut être utilisé dans l'industrie. Par conséquent, j'essaie d'utiliser des bibliothèques. Très peu de livres Haskell utilisent réellement des bibliothèques. Dans une approche pragmatique, il n'y a qu'un seul livre, «
Real World Haskell », qui a été publié en 2008, c'est-à-dire il y a très longtemps. Et puis, ils se sont très peu concentrés sur les bibliothèques, bien qu'ils l'étaient déjà à l'époque, mais ils ne sont pas beaucoup utilisés ici. Et au contraire, dès le début, je considère qu'il est nécessaire d'utiliser autant de bibliothèques que possible pour résoudre le problème. Lorsque vous utilisez des bibliothèques, vous pouvez aller beaucoup plus loin. Ceci est le deuxième livre - un accent sur l'utilisation dans la programmation industrielle.
Et le troisième est probablement une tentative de décrire des choses qui sont dispersées à travers un tas de billets de blog. Plus précisément, je travaille maintenant sur un chapitre sur les performances, les performances et les tests de performances de toutes sortes et sur la façon d'optimiser le code. Et je regarde "Real World Haskell", ça dit bien, mais pas assez. Depuis 10 ans, Haskell a fait beaucoup de progrès dans ce domaine et beaucoup d'informations dispersées, et maintenant j'essaie en quelque sorte de les rassembler dans un chapitre.
Haskell a de nombreux sujets sur lesquels il n'y a pas de source unique à lire. Il est clair qu'en raison de considérations de volume, je ne suis pas en mesure de tout donner, mais malgré le fait qu'il s'appelle Haskell en profondeur, je suis toujours en profondeur - vous pouvez écrire un million de pages, et tout sera de plus en plus profond. Mais j'essaie de donner un certain minimum, après quoi il est déjà facile de regarder des articles de blog individuels et de lire toutes sortes de listes de diffusion différentes.
Ce sont trois objectifs: le deuxième livre, c'est-à-dire la poursuite de la formation, une approche pragmatique et une telle préparation du lecteur sur des sujets qui sont dispersés dans de nombreux articles.
- Si je comprends bien, dans un avenir proche, deux livres sur le Haskell sont en préparation. Il y a aussi le livre de Granin ( graninas ) « Design fonctionnel et architecture ».- Eh bien, son thème est toujours différent. Il y écrit sur les architectures d'application, si je comprends bien. , , , . , - .
— , . ?— , . “
Beginning Haskell: A Project-Based Approach, 2014 ”. . , . . - . , - . .
, 2017 ,
, . . “
Joy of Haskell ” ,
Haskell Book . “
Intermediate HaskelL ”, -,
. , . , . .
, , , . , . , . - . , — . . , . , .
— ? - ?— . , - , , . , . , .
— - - ?— , . , . , . - , , .
— . - , . , ?— , (
). . . , , . , IT , . , . 15 , , . .
— Haskell 2020 . ? , ? . - Rust?— 2 .
Haskell 2020 — , . . — . , . .
— .
ghc . — ghc. , . , .
— . , . , .
, . , , , . , linear-types linear-arrows. , . , .
, — , . .
— - , , ?— . 2018 . . “
”. , . , . , , . , , , - .
— , ?— . ghc, -, 2005 . . - , , .
: , . int integer . . , int integer , integer. , double int , double. , . A B, .
— ?— , , . , . , , , . , 15 , .
— . , . , , 1% ?— - 1% — . - — , . , . . 1% , . , .
FPURE est la seule conférence de programmation fonctionnelle en Russie cette année. L'événement se tiendra du 24 au 25 mai à Kazan. Plus de 200 représentants russes et étrangers de diverses communautés de PF: Scala, Haskell, Clojure, F #, Elixir et autres. Vous pouvez acheter un billet et découvrir plus d'informations ici .