Vitaly Bragilevsky (
@_bravit ) unterrichtet noch immer Haskell-Kurse und Theorie der Algorithmen an der SFedU. Er gibt auch Kurse vor Ort in anderen Städten, ist Herausgeber und Übersetzer vieler Bücher über Haskell und funktionale Programmierung, Mitglied der Haskell 2020-Komitees und des GHC-Compilers und spricht aktiv auf Konferenzen. Zum Beispiel wird er auf der
FPURE- Funktionskonferenz in Kasan einen kurzen Kurs zum
Erstellen von Compilern über Haskell geben.
Aufgrund der Vielzahl von Aktivitäten wurde die endgültige Aufnahme fast eine Stunde lang veröffentlicht (
Link zu Audio )! Lesen Sie unten ihr Textprotokoll, in dem Vitaly über die Vorteile der Karriere eines Lehrers, viele Bücher über Haskell und nicht nur und natürlich über Haskell selbst spricht und ob Sie ein Genie sein müssen, um in dieser Sprache zu schreiben.
- Wie haben Sie es geschafft, Lehrer zu werden? In Ihrer Aktivität, der Anzahl der Reden auf Konferenzen, sehen Sie nicht wie ein gewöhnlicher Lehrer aus.
In meiner Vergangenheit waren die Lehrer anders.- Nun, die Lehrer ändern sich. Und ich muss natürlich sagen, dass diese Aktivität wirklich nicht sehr typisch ist. Aber ich wollte immer Lehrer werden. Wahrscheinlich, als ich noch in der Schule war, stellte ich mir vor, ich wäre ein Lehrer und dachte darüber nach, wie ich das besser unterrichten würde als diejenigen, die mich unterrichten. Und irgendwie ging es.
Als ich in meinem dritten Jahr an der Universität war, begann ich an der Lyceum-Schule zu unterrichten, die ich absolvierte. Und als er die Universität abschloss, begann er an der Universität zu unterrichten. Dies war ein sehr natürlicher Weg, und dann stellte ich mich nicht als jemand anderen vor. Daher war dieser Weg für mich einfach, direkt und ich hatte keine Wahl: Ich wollte das immer und begann zu lehren.
- Und wie kam es zum Institut? Haben Sie sich auf Programmierung spezialisiert?- Ich habe an der Staatlichen Universität Rostow einen Abschluss in Angewandter Mathematik und Informatik gemacht.
Wir haben viel angewandte Mathematik studiert, aber es gab bereits viel Programmierausbildung. Also ja, ich kann sagen, dass ich als Programmierer studiert habe.
Viele meiner Klassenkameraden, die der Programmiererlinie gefolgt sind, arbeiten jetzt als eine Art Programmierer-Chef.
"Dann bist du dort geblieben und zur Graduiertenschule gegangen?"- Ja, ich war an derselben Universität. Ich bin nicht zur Graduiertenschule gegangen. Und ich habe mich nicht wissenschaftlich engagiert. Es gab einige Versuche, aber ich kann nicht sagen, dass ich mich mit zielgerichteter Wissenschaft beschäftigt habe. Ich machte immer wieder Dinge, die mir interessanter erschienen als Wissenschaft. Hier wurde immer noch überlagert, dass es in unserem Land keine für mich interessanten Wissenschaftsbereiche gab. Und das können wir bisher nicht sagen. Und um Wissenschaft aus der Ferne ohne Anleitung selbst zu praktizieren, konnte ich es praktisch nicht.
- Und wenn wir es aus der Praxis nehmen, haben wir nur in Nowosibirsk etwas mit Compilern zu tun?- Compiler sind doch etwas anders. Die Compilerschule in unserem Land ist ziemlich stark, aber ich interessierte mich für theoretischere Dinge. Zum Beispiel in Bezug auf Typen.
Wenn wir das
Drachenbuch nehmen, dann ist ein kleines Kapitel der Typentheorie gewidmet und es gibt nichts wirklich da. Riesige Abschnitte, die sich dem Parsen widmen, allerlei solche Dinge, aber was mich interessiert, ist nicht da ...
Als ich meinen Abschluss machte, zog es mich an, aber nichts weiter. Ich war mehr daran interessiert, theoretische Dinge zu lernen. Und so kam es, dass ich sie studierte. Aber es war reine Selbstbildung. Kein konkretes Ergebnis, kein Auspuff in Form wissenschaftlicher Arbeit.
- Und welches der Bücher zu diesem Thema konnte dann gelesen werden? Pier?- Wenn ich mich nicht irre, wurde Pierce (
TAPL - Types and Programming Languages ) in Englisch im Jahr
2005 veröffentlicht . Dann wurde er ins Russische übersetzt, und der Verlag schickte uns ein Paket an die Abteilung, wo 5-6 dieser Bücher ins Russische übersetzt wurden. Wir hatten Seminare, in denen wir das alles langsam studierten, Präsentationen machten und Probleme lösten.
Zuvor erschienen aber auch Bücher in englischer Sprache. Es gibt eine großartige Möglichkeit, etwas zu lernen - einem anderen davon zu erzählen. Und ich habe einen Kurs über die Verwendung von λ-Kalkül zur Modellierung verschiedener Konstruktionen von Programmiersprachen gemacht. Es gab ein Buch auf Englisch,
Springer's . Das heißt, Sie lesen und sagen gleichzeitig denen, die Ihnen zuhören möchten.
- Sie unterrichten verschiedene Disziplinen und haben in der Regel mit Java begonnen. Wie kam es, dass sie anfingen, Haskell zu unterrichten?- Wenn ein junger Lehrer an eine Universität kommt, gibt er ihm Kurse, die normalerweise nicht seiner Wahl entsprechen, aber was er lesen soll. Ich habe den ersten speziellen Kurs, den ich lese, "Web XML Technologies". Das erste Mal, dass ich es las, war 2003. Anfang Juli bringen sie mich in die Abteilung, sie sagen, dass dies Ihre Last ist, und im September beginnen Sie, den Kurs zu lesen. Ich war damals weder bei dem einen noch beim anderen Spezialisten. Zugewiesen - es bedeutet, dass Sie lernen und mit dem Lesen beginnen. Ich habe im Rahmen dieses Kurses XML studiert, dann habe ich angefangen, Webdienste zu studieren, irgendwie zu programmieren, und von dort bin ich zu Java gewechselt. Ein Java-Kurs erschien und brachte ihm mehrere Jahre lang etwas bei.
Das heißt, die Kurse erscheinen aus dem, was sie angewiesen haben, und erst dann bieten Sie sich an, was Sie interessiert und lesen möchten. Wenn es einen Platz gibt, an dem es in den Lehrplan aufgenommen werden kann, stimmt die Abteilung zu. Und so erschien der FP-Kurs meiner Meinung nach 2008/09.
Und zu diesem Zeitpunkt kannte ich Haskell sehr schlecht. Wir können davon ausgehen, dass er es nicht wusste. Dies hört jedoch normalerweise nicht auf, einen speziellen Kurs zu lesen. Die Studenten haben natürlich nichts verstanden, und ich habe das nach vielen Jahren mit ihnen besprochen. Aber der Lehrer, der einzelne Kurse unterrichtet, liest immer besser. Ich habe es schon irgendwann herausgefunden und begann besser zu unterrichten, wie es mir scheint.
- Und wie waren die Bewertungen von Studenten, die das Material erhalten haben, bereits ausgearbeitet?- Ich glaube nur dann an Bewertungen von Studenten, wenn sie sehr missbräuchlich sind. Wenn die Schüler gut reagieren, kann man nicht daran glauben, weil nicht klar ist, welche Motive sie dafür haben. Und so hörte ich keinen starken Missbrauch. Wenn Sie unterrichten, denken Sie jedes Mal, dass Sie es nächstes Jahr besser machen würden. Und Sie bleiben immer unzufrieden mit dem, was jetzt ist. Das heißt, es ist ein so kontinuierlicher Verbesserungsprozess.
Es ist klar, dass die Schüler das Studium von Haskell als eine Art Verpflichtung betrachten: Sie müssen studieren, also studieren sie. Und im Allgemeinen haben sie recht.
- Wie hat sich das auf die Absolventen ausgewirkt? Gibt es diejenigen, die in den Funktionalismus gegangen sind?- Ich kenne Einheiten, die Haskell verwendet, von denen, die diesen Kurs besucht haben. Der Kurs hieß nicht Haskell, sondern FP. Und für mich war es immer wichtig, dass die Schüler versuchen, die Ideen der FP zu verstehen, und Haskell, nicht Haskell, ist die zehnte Sache. Und ich hoffe, dass keiner meiner Schüler Angst hat, Funktionen höherer Ordnung und Lambda-Funktionen in einigen anderen industriellen Programmiersprachen zu verwenden.
Und ich denke das ist absolut normal. Eine Welt, in der jeder in Haskell programmieren wird, ist kaum eine sehr gute Welt. Und wenn sie keine Angst vor den Ideen von FP haben - das ist gut.
- Und warum wird es eine schlechte Welt sein?- Weil Haskell Arbeit auf einem sehr hohen abstrakten Niveau erfordert. Und das Niveau der Menschlichkeit erlaubt es meiner Meinung nach nicht, so viele Programmierer dazu zu bringen, alle Probleme auf Haskell zu lösen. Je weniger Programmierkenntnisse erforderlich sind, desto besser, desto mehr Aufgaben können wir lösen. Daher sind einfache Sprachen besser als komplexe.
Wir können nicht von der ganzen Menschheit verlangen, dass jeder ein Genie ist und dass jeder die Kategorietheorie versteht. Und wir können nicht verlangen, dass jeder Haskell versteht. Aber wir können Programmiersprachen erstellen, mit denen fast jeder arbeiten kann. Und genau solche Programmiersprachen sollten üblich sein. Es ist bereits die Aufgabe ihrer Entwickler, Programmierer dazu zu bringen, weniger Fehler zu machen, damit Programme seltener kaputt gehen. Das ist aber anders. Entwickleranforderungen sollten nicht hoch sein. Und meiner Meinung nach geschieht dies in jedem Tätigkeitsbereich.
Nimm ein paar Autos. Das Expertenlevel des Fahrers sollte ständig sinken. Das heißt, es sollte immer einfacher sein, ein Auto zu fahren. Gleiches gilt für die Programmierung. Und Haskell stellt natürlich hohe Anforderungen, und das ist nicht sehr vielversprechend. Oder wir nehmen: Verstehe die Monade nicht, schieß!
- Hier ist ein Beispiel mit Treibern, das ist verständlich. Ich probiere es mit Ärzten an. Ich würde nicht wollen, dass ihr Niveau mit der Zeit sinkt.- Ich habe oft gehört, dass das Niveau der Ärzte mit dem Niveau der Software erhöht werden kann. Dinge, die derzeit mit der Diagnose zu tun haben, werden durch Software gut gelöst. Es gibt Analysen, es gibt verschiedene Methoden des maschinellen Lernens, die bei der Diagnose helfen. Und die Aufgabe des Arztes ist es, all dies zu nutzen. Die Software muss so beschaffen sein, dass das Niveau des Arztes ausreicht, um diese Software zu verwenden.
Natürlich verstehe ich das nicht, aber ich glaube, dass dies die Zukunft ist. Wir brauchen keine Million Fachärzte. Das heißt, es sollte kein Arzt sein, sondern ein Software-Betreiber, der die Behandlung diagnostiziert, verschreibt und so weiter. Eine andere Sache ist, dass für die Entwicklung solcher Software Experten der Extraklasse benötigt werden.
Das mag zu hasserfüllt klingen, aber die Praxis der menschlichen Entwicklung zeigt, dass nicht nur nicht alle klug sind, sondern auch nicht alle klug sein sollten. Das ist absolut normal. Wenn wir 1% der Bevölkerung haben, die klug ist, dann ist das gut und mehr ist nicht notwendig. Vielleicht würde ich gerne, aber es ist immer noch unmöglich. Deshalb brauchen wir unterschiedliche Ebenen, unterschiedliche Arbeit.
- Ich habe gehört, dass Sie an Übersetzungen von Büchern teilgenommen haben. Kannst du darüber sprechen?- Mein erstes Geschäft im Buchverlag begann mit folgendem. Ich habe gehört, dass der Verlag DMK-Press das Buch „
Explore Haskell for Good “ veröffentlichen sollte. Ich war an dieser Übersetzung interessiert, weil ich den Schülern etwas empfehlen musste, das es ratsam ist, auf Russisch über Haskell zu lesen.
Und ich habe, wie ich mich jetzt erinnere, Ende Dezember einen Brief an den Verlag mit einer Frage geschrieben: Ich unterrichte Haskell, ich habe gehört, dass an der Veröffentlichung einer Übersetzung gearbeitet wird. In welchem Zustand ist diese Arbeit? Und der Chefredakteur dieses Verlags, Dmitry Movchan, antwortete mir, dass wir praktisch fertig seien. Möchten Sie das ursprüngliche Layout sehen, was ist dort passiert?
Er schickte mir das ursprüngliche Layout, ich sah ihn an und war entsetzt über den Zustand, in dem er sich befand. Es gab schreckliche Dinge. Beispielsweise wurde die Hälfte der Codebeispiele falsch eingerückt. Weil die Verlage in Haskell sich nicht auskennen und irgendwo alles nach links ausgerichtet ist, woanders. Und die Qualität der Übersetzung war auch in vielen Teilen gruselig. Und als ich das sah, schrieb ich, dass Sie nicht auf diese Weise veröffentlichen können und dass Sie etwas dagegen tun müssen und mich etwas dagegen tun lassen müssen. Ich werde Ihnen eine Reihe von Kommentaren darüber schreiben, was Sie mit diesem Text tun sollen.
Sie stimmten zu, und innerhalb von anderthalb Monaten schickte ich ihnen verschiedene Kommentare zum Text. Dort musste etwas erneut übersetzt werden, einige Abschnitte wurden nicht übersetzt, sie mussten übersetzt werden. Also habe ich den Verlag kennengelernt und nach einer Weile kam das Buch heraus. Dort bin ich als wissenschaftlicher Redakteur gelistet. Roman Dushkin, und ich bin der zweite. Und so fing es an.
Danach begann ich, den Verlagen einige Bücher zur Übersetzung anzubieten. Ich übersetzte mit Artyom Pelenitsyn, meinem Universitätskollegen, Byrds Buch "
Pearls of Functional Programming ". Wir haben „
Einführung in die Theorie der Programmiersprachen “ übersetzt, ein dünnes Buch. Ich habe auch Marlows Buch
Parallel and Competitive Haskell Programming übersetzt . Oder ist es alles oder etwas anderes, ich erinnere mich nicht, um ehrlich zu sein. Hier ist das Letzte, was meine Schüler übersetzt haben, Will Kurts „
Haskell-Programm “.
Ich habe diese Dinge getan, um Bücher für die russischsprachige Gemeinschaft zu machen, die aus meiner Sicht für ihn nützlich wären, um sie zu lesen. Ich habe nicht als Übersetzer gearbeitet, um Geld zu verdienen, sondern um Bücher auf Russisch erscheinen zu lassen. Weil wir noch Englisch haben - das ist ein Problem.
- Haben Sie an der funktionalen Programmierpraxis teilgenommen? Ich habe diese Zeitschrift überhaupt nicht gefunden.- Nun ja, ich habe dort in der dritten Ausgabe einen Artikel für ihn geschrieben oder so. Ich habe über Windungen geschrieben und wie sie es Ihnen ermöglichen, viele Berechnungen auf Listen zu programmieren.
- Was ist mit der Zeitschrift passiert? Wer hat damit angefangen und warum ist alles ins Stocken geraten?- Er ging mehrere Jahre aus. Ich habe eine komplette Sammlung von Drucken. Ich kenne nicht alle Details, wie es dazu kam. Einer der Hauptorganisatoren dieses Magazins ist Lev Valkin, ein
Löwe im LiveJournal. Er war meiner Meinung nach der Herausgeber der ersten Ausgaben, dann wurde dies von
Zhenya Kirpichev gemacht , die jetzt bei Google arbeitet. Meiner Meinung nach ist
Dmitry Astapov immer noch einer von denen am Anfang. Dies waren alles Leute, die damals im russischen LJ-Segment aktiv waren. Ihre Beiträge waren sehr beliebt und mit gigantischen Diskussionen. Irgendwann beschlossen sie, eine Zeitschrift zu diesem Thema zu erstellen. Und meiner Meinung nach war das Magazin sehr gut, die Artikel waren sehr gut geschrieben.
Sie arbeiteten so: Die Autoren schrieben Artikel und diese Artikel wurden sehr gut von Experten begutachtet. Es gab einen ernsthaften Korrekturprozess - ich war gezwungen, ein paar Witze aus dem Artikel zu werfen. Valkin sagte zu mir: "
Du liest jetzt, es ist lustig für dich und dann wirst du dich schämen ." Warf ein paar Witze raus und so weiter. Im Allgemeinen wurde ernsthaft an dem Text gearbeitet, und es stellte sich sehr gut heraus.
Danach traf ich Valkin im Herbst und wir sprachen ein wenig darüber und er sagt, dass es einen Wunsch gab, ihn ernster zu machen. Aber im Ernst - es bedeutet, es ins Englische zu übersetzen, um das Publikum zu erweitern. Die Beschäftigung mit der aktuellen Form schien nicht sehr vielversprechend. Eine solche Entscheidung würde jedoch dazu führen, dass er nicht in einem englischsprachigen Publikum abheben würde, weil es so gut ist und auch in russischer Sprache, weil es für russischsprachige Entwickler schwierig ist, auf Englisch zu lesen.
Einige Leute wollten nicht auf Russisch weitermachen, sie wollten auf Englisch, andere wollten nicht auf Englisch. Und im Allgemeinen ist Müdigkeit gekommen. Das heißt, es gab keine Menschen, die bereit waren, die treibende Kraft hinter der Zeitschrift zu werden. Denn es ist klar, dass dies viel Zeit in Anspruch nimmt und sich niemand leisten kann. Aber ohne eine treibende Kraft kann dies nicht existieren.
Zum Beispiel ist die Praxis moderner russischer Magazine entweder ganz allgemein, und Fachmagazine werden nicht benötigt, niemand kennt sie und niemand liest. Selbst wenn sie existieren, werden sie von einigen Organisationen unterstützt, die Leute erhalten ein Gehalt und im Falle von fprog haben sie etwas Geld gesammelt, aber alles ging nicht zum Einkommen, sondern zur Unterstützung der Presse und so weiter.
"Haben sie eine gedruckte Version direkt gesendet?"- Ja, es gab einige Dienste, die Sie aus der Ferne abonnieren und reguläre Nummern erhalten konnten. Das heißt, sie wurden gedruckt und nicht nur in elektronischer Form. Sie sind auf jeden Fall schön in den Händen zu halten. Der gleiche Valkin verbrachte viel Zeit: Er kaufte Schriften für eine Zeitschrift, damit sie solide waren. Und es sieht wunderschön aus. Dies wurde alles in TeX gemacht, was immer schwierig ist. Es war viel Arbeit und es war einfach sehr schwierig, es zu tun.
"Wollten Sie sofort zu dem Buch springen, das Sie gerade über" Haskell in Depth "schreiben?" Wie wird es sich von " Explore Haskell for Good " unterscheiden?- Das Buch wird von Haskell als zweites positioniert. Um es lesen zu können, müssen Sie Haskell kennen. Dies ist der erste Unterschied zu „Learn your Haskell“ und allen anderen, da alle von Anfang an eintreten und ich mir hier sogar erlaube, die Monade nicht zu erklären. Denn das alles sollte schon studiert werden.
Das zweite, was mir beim Schreiben wichtig ist, ist, dass dieses Buch die Fähigkeit von Haskell hervorheben sollte, praktische Probleme zu lösen. Es ist so ein pragmatischer Haskell, der in der Industrie eingesetzt werden kann. Deshalb versuche ich Bibliotheken zu benutzen. Sehr wenige Haskell-Bücher verwenden tatsächlich Bibliotheken. In einem pragmatischen Ansatz gibt es nur ein Buch, "
Real World Haskell ", das 2008 veröffentlicht wurde, also vor sehr langer Zeit. Und dann haben sie sich sehr wenig auf Bibliotheken konzentriert, obwohl sie es schon zu dieser Zeit waren, aber sie werden hier nicht viel benutzt. Und im Gegenteil, ich halte es von Anfang an für notwendig, so viele Bibliotheken wie möglich zu verwenden, um das Problem zu lösen. Wenn Sie Bibliotheken verwenden, können Sie viel weiter gehen. Dies ist das zweite Buch - ein Schwerpunkt auf der Verwendung in der industriellen Programmierung.
Und der dritte ist wahrscheinlich ein Versuch, Dinge zu beschreiben, die über eine Reihe von Blog-Posts verstreut sind. Insbesondere arbeite ich jetzt an einem Kapitel über Leistung, Leistung und Benchmarks aller Art sowie über die Durchführung der Codeoptimierung. Und ich schaue auf "Real World Haskell", es heißt gut, aber nicht genug. Seit 10 Jahren ist Haskell in dieser Angelegenheit und vielen verstreuten Informationen weit fortgeschritten, und jetzt versuche ich irgendwie, sie in einem Kapitel zu sammeln.
Haskell , , . , , , Haskell in depth, in depth — , . , - .
: , , , .
— , . ( graninas ) “ Functional Design and Architecture ”.— - . , . , , , . , - .
— , . ?— , . “
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 ist die einzige funktionale Programmierkonferenz in Russland in diesem Jahr. Die Veranstaltung findet vom 24. bis 25. Mai in Kasan statt. Mehr als 200 russische und ausländische Vertreter verschiedener FP-Gemeinschaften: Scala, Haskell, Clojure, F #, Elixir und andere. Kaufen Sie ein Ticket und erfahren Sie mehr Informationen Sie können hierher .