Im
letzten Teil der Untersuchung riet mir
Roman Timushev , mich mit Vlad in Verbindung zu setzen, was ich auch tat. Vlad hat klargestellt, was mich interessiert, delines und sich bereit erklärt, ein paar Absätze zu schreiben. Am nächsten Morgen sah ich einen Hinweis auf Facebook. Es war Vlad, der einen neuen Zeugen fand -
Alexander Podkhalyuzin . Von 2008 bis 2017 arbeitete er als Teamleiter am Scala-Plugin in IDEA und sah persönlich die gesamte Entwicklung der Scala-Bewegung, vor allem aber nicht den russischen Teil.
"Klickte" in meinem Kopf - Pläne ändern sich, dies ist ein neuer Thread in der Untersuchung. Sie markierten die Zeit und nahmen ein einstündiges Interview mit Alexander auf. Es gibt so viele Informationen, dass es keine Möglichkeit gab, sie irgendwo anders als in einem separaten Teil zu platzieren. Deshalb warne ich Sie - es liegt viel Text vor Ihnen.

In diesem Teil sprechen wir mit
Alexander Podkhaluzin und
Mikhail Mutsyanko . Außerhalb des Programms - Kommentar von
Ilya Sergey . Scala-Plugin, die ersten Scala-Events in Russland, in Kotlin, Native in beiden Sprachen, Sunset Eclipse und vieles mehr.
Wie Alexander zur Scala kam, nach Kotlin ging und unterrichtete
Von 2008 bis 2017 hat Alexander Podkhalyuzin das JetBrains Scala-Plugin in IDEA als Teamleiter entwickelt. Später ging er zu Kotlin Tooling, zuerst zu Kotlin / Native, dann zu Kotlin als Ganzes.Alexander : Die Aufgabe ist groß, nach Jahren ist alles verwirrt. Die Bewegung begann übrigens nicht im Jahr 2010, sondern drei Jahre zuvor. 2007 bin ich gerade zu JetBrains gekommen und hatte Glück mit MPS ... Wissen Sie, was MPS ist?
Vadim : Ich habe gehört, dass es eine deklarative und visuelle Sprache ist.
Alexander : MPS ist der Zeit voraus. Dies ist das
Meta-Programmiersystem - generative Programmierung sofort mit der IDE. Ich habe einen Job bei MPS in der Firma bekommen, aber sie haben dort bereits eine Person gefunden. Ich hatte Glück - ich wurde geschickt, um ein Scala-Plugin zu schreiben.
JetBrains begann ein Plugin zu schreiben, ließ es aber fallen, weil es Groovy war. Er war beliebt und forderte Unterstützung. Alle, die mit dem Scala-Plugin zu tun hatten, arbeiteten am Groovy-Plugin. An Scala war niemand beteiligt, und ich habe ein solches Erbe geerbt.
Ich bin Anfang 2008 in das Unternehmen eingetreten. Ich wusste nichts, ich fing an, einen Parser zu graben, einen Fehler zu beheben, den zweiten, dritten - das ging für immer weiter. Infolgedessen setzte er sich und schrieb es neu. So langsam entwickelte sich.
Ilya Sergey hat vor mir am Plugin gearbeitet. Ich habe ihn gefunden und mit ihm am Plugin gearbeitet. Es ist lustig, dass ich Mathematiker war und Ilya Programmierer. Aber er wollte Mathematiker werden, und ich wollte Programmierer werden. Ich programmierte gern, war bereit dazu und verstand nicht, warum Ilya es nicht mochte. Und er hat mich nicht verstanden. Infolgedessen hat das Leben alles an seinen Platz gebracht.
Ilya hat JetBrains verlassen und ist in Spanien in der Informatik tätig, fast Professor. Er ist kürzlich angekommen und hat erklärt, wie man nach automatischen Rennen sucht - das ist eine Art Wissenschaft. Noch bei einem Wettbewerb setzte er sich und schrieb zehntausend Zeilen über Scala. Er sagte, dass alles super ist, alles funktioniert. Er fuhr immer noch die ersten Scala Days, wie es scheint, im Jahr 2009.
Nachdem ich mir die Biographie von Ilya angesehen hatte, hielt ich es für wichtig, die Details aus der Quelle zu klären.In dem von Alexander erwähnten Bericht ging es um statische Analysen, um die Rennbedingungen in Java-Anwendungen zu ermitteln. 2018 haben wir mit Facebook zusammengearbeitet. Ein Bericht und zwei weitere Artikel wurden darüber geschrieben. Es stimmt, es gibt den gesamten Code auf OCaml. Der Wettbewerb ist der ICFP-Programmierwettbewerb , den ich dieses Jahr veranstaltet habe . Ich habe auch fast den gesamten Code für den Wettbewerb in Scala mit Scala.js geschrieben.
Ich benutze Scala ausschließlich als Benutzer. Mit Hilfe von IntelliJ IDEA und Scala Plugin wurden viele Prototypen für meine Forschungsprojekte geschrieben: Synthese von Programmen mit TyGus / suslik-Zeigern , Testen geometrischer Algorithmen . An der Universität unterrichte ich einen Multithreading-Kurs, in dem Scala die Hauptsprache ist.
Ilya Sergey , Professor an der National University of Singapore .
Alexander : Ich habe 2011 angefangen, Scala Days zu fahren. Seit drei Jahren schreiben wir tatsächlich den zweiten Scala-Frontend-Compiler. Es dauert Jahre, es ist normal. Alles funktionierte langsam und schlecht für uns, aber gleichzeitig gab es zumindest etwas. Aus Sicht der Redaktion war sowieso nichts besser. Ich kann mich nicht erinnern, ob Eclipse zu diesem Zeitpunkt mit der Unterstützung begonnen hat. Ja, es scheint, dass sie ihn parallel unterstützt haben.
Vadim : Ich habe mit Roman Timushev gesprochen und er hat mir über 13 Jahre erzählt, wie er angefangen hat, Treffen in Moskau zu schreiben und abzuhalten. Nach seiner Version benutzten dann alle Eclipse. Es war ziemlich erträglich, es wurde offiziell unterstützt.
Alexander : Ja, das war es. Im Jahr 2011 war Eclipse sehr schlecht und erreichte 2013 eine Geschwindigkeit wie unsere im Jahr 2011. Im Gegensatz zu Eclipse schreiben wir unser eigenes Front-End, sodass sich die Fehlerhervorhebung vom Compiler unterschied. Dies ist unpraktisch und ein zentrales Thema. Einige Fehler werden im Compiler nicht hervorgehoben, aber umgekehrt. Eclipse verwendet Compiler-Code.
Die Verwendung von Compiler-Code ist eine schlechte Idee, da alles langsam funktioniert. In Kotlin ist es ähnlich, wenn Compiler-Code verwendet wird. Die Situation ist nicht so schlimm wie in Scala - sie haben ein wenig über die IDE nachgedacht, aber es ist aus Sicht der IDE immer noch nicht einfach, eine gute Leistung zu erbringen.
Im Jahr 2011 fand in Philadelphia der
Scalathon (
Fotos ) statt. Dies ist die erste Konferenz, zu der wir eingeladen wurden, aber es war seltsam, dass wir dorthin gingen. Sie kontaktierten JetBrains, wenn wir an der Veranstaltung teilnehmen möchten. Vorher haben sie nirgendwo mit Scala angerufen, und als wir anfingen, etwas zu tun, haben sie es bemerkt. Benutzer, wie Scala-Programmierer, hatten eine Gulkin-Nase - ungefähr 100 Personen während der Konferenz. Beim Scalathon traf ich
Bill Venners .
Vadim : Der Name ist bekannt, aber ich kann mich nicht erinnern, wer er ist.
Alexander : Der Autor von zwei Dingen: Scalatest und das Hauptbuch
Programming in Scala . Dies ist ein Buch, das mit Martin Odersky geschrieben wurde - unserer Bibel!
Vadim : Ich habe nicht gelesen.
Alexander : Es ist egal. Bei mir ist dieses signierte Buch von Bill Venners und Martin Odersky. Sie gaben es mir an einem der Scala-Tage in 12 oder 13 Jahren. Bei einer Dinnerparty für alle Teilnehmer wurden Personen ausgezeichnet, die zur Community beigetragen haben. Plötzlich riefen sie mich an und ich erhielt ein Buch für meinen Beitrag.
Seit 2011 werden auch die Scala Days besucht. Sie fanden zunächst einmal im Jahr in Europa oder in Amerika und später zweimal statt. Letztes Jahr habe ich an einer Konferenz teilgenommen, bin aber nicht zur zweiten gegangen. Letztes Jahr habe ich einen Bericht über den Vergleich von Kotlin / Native und Scala Native eingereicht. Niemand im Kotlin-Team glaubte, dass der Bericht akzeptiert werden würde, aber er wurde angenommen. Vielleicht aus Respekt oder aus anderen Gründen. Der Bericht wurde von wenigen Zuhörern besucht. Scala-Programmierer interessieren sich nicht für alles, was das Wort "Kotlin" enthält. So war und ist es immer noch.
Vadim : Ich denke, dass das Wort "Native" eine Rolle gespielt hat.
Alexander : Nein, an Scala Days sammeln alle Berichte über Scala Native immer volle Räume, zum Beispiel eine Aufführung von Denis Shabalin. Gleichzeitig ist die Technologie weit von der Produktion entfernt. Sie ist zumindest für weitere 10 Jahre nicht dazu bestimmt, dorthin zu gelangen.
Vadim : Warum denkst du so? Ich war überrascht, aber es gibt
Richard Whaling ,
der ein Buch über Scala Native
schreibt - es gibt bereits viel Material. Er
geht zu Podcasts und spricht darüber, wie er es in der Produktion verwendet. Er hat eine Sphäre, in der es viele Daten gibt. Er ist sehr zufrieden mit Native unter diesen Bedingungen.
Alexander : Siehe meinen Bericht über den
Vergleich von Scala Native und Kotlin / Native , in dem ich meinen Standpunkt erläutere. Zum Zeitpunkt der Aufführung arbeitete eine Person an Scala Native. Daher kann von keinem Produkt die Rede sein. Wenn wir über eine Person sprechen, die irgendwo Technologie angewendet hat - vielleicht. Es ist einfach kein Mainstream, es wird nur wenige Benutzer geben.
Kotlin / Native hat eine spezielle Anwendung - Code-Sharing zwischen iOS und Android. Gerade das schafft ein gewisses Interesse. Scala Native hat dies nicht und es gibt nichts, woran man sich festhalten kann. Scala Native kann für Berechnungen verwendet werden, wenn Sie Scala-Code und schnelle Berechnungen wie Tensorflow kombinieren müssen. Scala Native bedeutet jedoch nicht, dass Sie sich zwischen Scala und Native sicher gegenseitig anrufen oder gemeinsamen Code fummeln können.
Bei Kotlin wollen wir unbedingt denselben Code schreiben und kompilieren. Dies ist eine verdammt gute Arbeit im Sinne des Designs, dass Sie nicht POSIX verwenden, sondern eine Art Interlayer-Bibliothek, die in der JVM und ohne diese gleichermaßen gut funktioniert. Wenn Sie keine solche Bibliothek haben, ist das alles, krants. Der Code wird an dieser Stelle anders sein, und wenn er anders ist, wie kann man ihn dann pflegen? Wie werden Bibliotheken bereitgestellt, in denen verschiedene Endpunkte kompiliert und bereitgestellt werden müssen? Es gibt auch ein Build-System und Abhängigkeiten. Wenn Sie graben, dann die Fragen - der Abgrund. Eine Person, die Scala Native entwickelt, kann nicht alle beantworten. Die Bewerbung ist eine separate Geschichte, und dazu können Sie meinen Bericht sehen.
Vadim : Nun, lass uns zurück gehen. 2011 waren Sie bei den Scala Days und waren Sie vor 2016 noch mit dem Scala-Plugin?
Alexander : Bis 2017.
Vadim : Dann bist du nach Kotlin gefahren. Was ist passiert?
Alexander : Aus irgendeiner Sicht habe ich nicht alles getan, was ich konnte. Sie könnten das Scala-Plugin weiterentwickeln - viele Chips, es gibt noch etwas zu erledigen. Aus geschäftlicher Sicht ist es jedoch als Projekt erfolgreich. 80% der Scala-Programmierer verwenden IntelliJ IDEA. Wie viel wissen Sie über Produkte, die 80% des Marktes erobert haben? Es gibt nur wenige von ihnen.
Was ist als nächstes zu tun? Ich möchte neue Ziele, neue Horizonte und innerhalb des Scala-Plugins war dies unmöglich. JetBrains entwickelt eine eigene Programmiersprache und steht Scala skeptisch gegenüber. Es ist unmöglich, einen Platz für Scala in der Firma zu finden, also gehe ich entweder oder arbeite hier und danach. In Unternehmen oder etwas anderes. Ich musste eine schwierige Entscheidung treffen.
Bis zu einem gewissen Grad machte ich mich fertig. Zuerst wurde mir klar, dass
Kolya Tropin an meiner Stelle
sein wird, wenn ich das Team verlasse. Er leitet jetzt das Team. Ich bereitete mich vor, und ich bereitete es auf besondere Weise vor. Ich verstand, dass er an meiner Stelle stehen konnte. Die zweite - langsam verteilte alle Subsysteme, lehnte sie ab. Ich musste sie nicht mehr programmieren.
Die Apotheose von all dem war eine Handverletzung, eine Operation und 2 Monate Krankheitstage. Nach dem Ausgang ging ich zum Generaldirektor Maxim Shafirov. Er kam und sagte: "Gib mir noch etwas." Es gab einen solchen Auslöser, etwas bereitete sich unbewusst darauf vor, und diese zwei Monate durften entschieden werden. Und Max schlug vor. Ich sagte "alles andere als Kotlin." Ich sehe, ich komme aus der Scala-Welt und die Scala-Welt hasst Kotlin.
Vadim : Es ist nicht so, dass ich es hasse, es ist nur unangenehm, dass ein solches Produkt aufgetaucht ist. Dies ist der Scala-Stummel. Gleichzeitig ist Marketing aktiv, der Markt wird erobert - jene Menschen, die auf die gute Seite von Scala gehen könnten.
Auf der anderen Seite ist das gut? Wenn Sie sich eine Wissenslücke vorstellen, die Sie beherrschen müssen, um effektiv in Scala oder Haskell schreiben zu können, ist dies für einen Java-Entwickler gigantisch. Hier ist Kotlin ein Umschlagplatz, den Sie sicher erreichen, aussetzen und weiterfahren können.
Alexander : Das ist nicht ganz richtig. Als es keinen Kotlin gab, kamen Leute zu Scala, die mit Java nicht zufrieden waren - etwas fehlte, viel Boilerplate. Scala trat an die Stelle von Better Java. Kotlin zielt ausschließlich auf diese Nische.
Mit Kotlin, Android und allem, was passiert ist, und jetzt mit mehreren Plattformen, ist das alles. Kotlin fixierte sich nicht auf ein Android, auf eine Nische und ging weiter.
Vadim : Ich finde es gut - Oracle hat sich gerührt. Nun haben zumindest einige normale JEPs Java weiterentwickelt.
Alexander : Ich denke, der Grund ist nicht Kotlin - das ist eine normale Konsequenz. 2 Jahre bevor Google Kotlin ankündigte, war es vernachlässigbar. Als ich mich für einen Umzug entschied, gab mir Max Shafirov eine Liste zur Auswahl. Obwohl ich "nur nicht Kotlin" sagte, war die Kotlin / Native-Support-Option in IDEA auf dieser Liste. Aus der ganzen Liste habe ich mich daher entschlossen, nach Kotlin zu ziehen. Am Tag nachdem ich Kotlin / Native übernommen hatte, sagte
Andrei Breslav , dass sie beim nächsten Google I / O bekannt geben würden, dass Kotlin offiziell eine Android-Sprache ist.
Hier ist der Gedanke: "Goofy." Ich dachte, ich würde etwas für eine bedingt marginale Sprache tun. Es war klar, dass die Better Java-Nische schwer zu erobern war. Mit der Veröffentlichung von Java 8 mit Lambdas ist dies noch schwieriger geworden. Scala ist damit einverstanden, es ist nicht stark mit Lambdas und nicht mit dem, was besser ist als Java. Es ist zufällig - zufällige Leute kamen zu Scala mit dem Verständnis, dass sie besseres Java brauchen.
Nach Java 8 verlangsamte sich der Fluss dieser Leute. Sie werden nicht nach Scala und Kotlin gehen - sie haben Lambdas. Dies reicht zunächst aus, und das Beste ist nicht mehr interessiert. Ich setzte mich, dachte nach und stellte fest, dass die Skala jetzt anders ist.
In meinem Kopf wechselte ich zu einem Team auf einer Skala, die nicht viel größer ist als im Scala-Plugin. Zu dieser Zeit gab es 100.000 Benutzer, und Kotlin hatte 40.000. Eine ganz andere Skala. Mir wurde klar, dass es Spaß macht, dass sie es mir nicht im Voraus gesagt haben. Ich habe mich für Kotlin entschieden, weil es interessant war, es zu versuchen, und nicht um ehrgeizige und ehrgeizige Ziele zu erreichen.
Im Allgemeinen ist Scala besser zu programmieren. Wenn Sie nach 9 Jahren Programmierung in Scala anfangen, Kotlin zu schreiben, haben Sie keine Hände mehr. Darin liegt etwas Traurigkeit.
Was würde ich tun, wenn ich CTO wäre? Für eine einfache Kotlin-Aufgabe wäre es für mich einfacher, ein Team zusammenzustellen. Es wäre billiger oder effizienter. Ich hätte Scala-Programmierer billiger rekrutieren können, aber ich hätte ein schlechteres Ergebnis erzielt, weil sie in dieser Scala etwas Schreckliches tun werden. Auch wenn es auf dem Arbeitsmarkt schwierig ist, werde ich Java-Programmierer einstellen - Kotlin wird es viel einfacher machen, sie auszubilden. Dies ist unter dem Gesichtspunkt des Starts eines neuen Projekts, wenn es keine ernsthaften technologischen Dinge gibt.
Für die Bankenbranche gibt es beispielsweise Gründe, Scala zu verwenden. Kotlin kann sie nicht lösen. Die gleiche Metaprogrammierung in Scala ist viel bequemer.
Wenn Sie über dieses Thema nachdenken, können Sie auf Scala coole Infrastruktur-Dinge erstellen, aber in Kotlin ist dies unmöglich. Es gibt dieselben Anmerkungsprozessoren. Eines Tages wird es möglich sein, aber nur in der Perspektive von mehreren Jahren.
Vadim : Warum ist Scala Ihrer Meinung nach gut für Banken?
Alexander : Es gibt viele Boilerplates, die nicht mit der Programmiersprache zusammenhängen. Dies ist ein System, in dem Benutzerobjekte vorhanden sind. Es erfordert viel Duplizierung, beginnend mit der Datenbank und endend mit allem. Um etwas effektiv zu ändern, benötigen Sie eine gute Unterstützung für die Metaprogrammierung. Es wird überall benötigt, aber es ist notwendig, es mit Vorsicht zu kleben, sonst können Sie stecken bleiben.
Im Jahr 11 wurde ich an die Akademische Universität berufen. Ich war zu faul, um den gesamten Kurs zu unterrichten, und stimmte
Sveta Isakova zu , die jetzt eine Kotlin-Entwickleranwältin ist. Wir waren uns einig, den Kurs in zwei Hälften zu fahren, aber es ging um Scala. Sie wollte wahrscheinlich mehr über Scala erfahren.
Vadim : War die Universität damals die Spitze?
Alexander : Ja, mit einer Magistratur auf 5-6 Kurs. Die ersten Jahre des Wettbewerbs waren klein. Der Wettbewerb um den Platz nahm jedoch zu, als JetBrains, Yandex und Transas mit Sponsoring, einer Einladung zu Praktika und dem Ziel, das Personal für sich selbst zu vergrößern, kamen.
Es stellte sich als cool heraus: privates Geld und eine private Initiative unter staatlicher Deckung und Alferovs Deckung. Er gab einen vollen Freibrief - mach was du willst! Es hat sich als großartig herausgestellt, weil die Kurse relevant sind. Sie rekrutierten Leute, die auf dem neuesten Stand waren, verstanden, was gerade in der Branche geschah, und vor nicht einmal 10 Jahren war nicht klar, wo. Wenn wir über gewöhnliche Universitäten sprechen, ala "mathmech / mehmat", dann geht Pascal dort nicht vorbei - das hat nichts mit dem wirklichen Leben zu tun.
Dies war eine starke akademische Universität. Die Leute verstanden, dass sie bei ihrer Ankunft sehr schnell in die Branche fliegen würden. Hochschulabsolventen rekrutierten gerne in Yandex und JetBrains. Dies ist ein guter Karriereschritt, und der Wettbewerb bestand aus 10 Studenten. Ich habe dort 5 Jahre lang unterrichtet. Im zweiten Jahr sprach Sveta nicht mit mir über Scala und ich rief verschiedene Assistenten an, insbesondere Sveta für Kotlin. Aus diesem Grund haben wir in JVM-Sprachen umbenannt.
Irgendwann bekam ich die Unterstützung von Clojure und verstand diese Sprache ein wenig. Den Studenten zufolge haben sie nicht verstanden, was Clojure tat, was für ein Mist das war. Sie sprechen über normale Sprachen - Scala und Kotlin und plötzlich verwischte Clojure. Ich war einfach kein Experte. Das war die Geschichte.
Über das erste ScalaSPB / ScalaDev
Alexander : Dann erschienen Ereignisse wie die Scala Days in St. Petersburg. Die
erste ScalaDev wurde bestanden , und für die
zweite Veranstaltung kontaktierten
die Organisatoren der ursprünglichen Scala Days St. Petersburg und baten um Umbenennung.
Vadim : Welches Jahr ist das?
Alexander : Ja, alles ist da - 11-13. Die Veranstaltung wurde von Leuten der St. Petersburg Outsourcer E-Legion gemacht. Es scheint, dass sie den Antrag der Raiffeisenbank geschrieben haben. Sie haben sogar eine mobile Anwendung in Scala geschrieben, aber jetzt schreibt niemand mehr so - die Leute sind verrückt.
Vadim : Einer der Gäste des
Podcasts -
Matvey Malkov - hat vor zwei Jahren über Scala und Android gesprochen. Er sagte, dass mit ihnen alles in Ordnung sei und sie es benutzen. Ihr Hauptgewinn ist sowohl das Scala-Backend als auch die Anwendungen.
Kürzlich schrieb ich ihm mit der Bitte, auf der Konferenz zu sprechen, weil Sie niemanden über Mobiltelefone finden. Es stellte sich heraus, dass er die Firma verlassen hatte und das letzte, was er tat, war, Cot so einzurichten, dass er das Kotlin-Modul aus diesem Projekt auf Scala baute, so dass die Jungs allmählich zu ihm übergingen.
Alexander : Vor zwei Jahren war nichts über Kotlin klar. Theoretisch konnte Google Scala nehmen, tat es aber nicht.
Wir traten bei den ersten Scala Days auf und versammelten sogar Leute. Genauer gesagt, nicht am ersten, sondern am zweiten, der bei JetBrains stattfand. Dann trat Sveta Isakova mit einem Intro in Kotlin auf.
Es war lustig - alle Scala-Entwickler empfanden Kotlin als den Feind Nummer eins. Hall reagierte sehr negativ und warf Fragen auf: "Warum wird das nicht gemacht, warum ist es nicht, warum ist es nicht?" Es war gruselig, eine Art Hacking.
Nach Sveta war ich die zweite Person, die auf der Scala-Konferenz etwas über Kotlin sagte - über Kotlin / Native. Meine Erfahrung hat gezeigt, dass dies sinnlos ist. Ich bin nicht wegen des Berichts, ich war daran interessiert, Scala Native zu sehen. Wie es im Inneren angeordnet ist, Programme starten, sich über etwas freuen. Schon damals war ich froh, dass die Binärgröße von Scala Native kleiner war als die von Kotlin. Ich denke, Kotlin / Native hat jetzt weniger, weil 10 Leute daran arbeiten.
Vadim : Oh, nun, du erwürgst
Denis Shabalin definitiv.
Alexander : Das ist unmöglich, es ist eine sehr komplexe Technologie. Wir haben 10 Leute, und das ist nicht genug. Und 10 coole Leute, richtig sehr cool, versuchen diese mehr zu sammeln. Denis selbst ist cool, aber was kann er alleine sein?
Die Geschichte über die Community ist sehr interessant, ebenso wie die ganze Geschichte von Scala. Viele Leute wollten eine Art Framework schaffen, wahrscheinlich brauchte es niemand, um Werbung zu machen und aufzuhören. Viele eigenartige Sterne bildeten sich und einige halfen auch der EPFL. Eine der Voraussetzungen ist eine Abschlussarbeit eines Doktoranden. Zum Beispiel ist Scalameta das Werk von
Zhenya Burmako . Während des Arbeitsprozesses erhöhen Doktoranden den Preis als Programmierer und finden nach dem Abschluss coole Arbeit. Der erste Job mit einem Gehalt ist mehr als für Leute, die seit 10 Jahren arbeiten. Weil sie berühmt sind, berichteten sie über eine Reihe von Konferenzen und drehten sich.
Hier ist noch etwas. Sie sehen, in Kotlin: hier werden wir es tun, hier ist es und in Scala absolut das gleiche. Hier ist Tasty im Kotlin-Backend-IR. Aber da in Scala alles die Community antreibt, ist alles in völligem Chaos. Es gibt kein zentrales Design. Was passiert, wird klappen. Der Mann wollte etwas verbrennen, stellte sich heraus. Martin gefiel es, die Zustimmung ging an die Massen. Und das macht die Branche bei Kotlin immer klarer und professioneller.
Über Eclipse und Jason Zaugg
Alexander : 13 gingen wir zur Konferenz. Alle im Compiler in Eclipse programmierten. Wir standen und Leute, die IDEA benutzten, kamen auf uns zu. Sie freuten sich, dankten. Wir haben 10% des Marktes, der Rest auf Eclipse. Alle Compiler sitzen darauf. Sie sind uns lange aus dem Weg gegangen, plötzlich überzeugen wir sie, es zu benutzen. Aber irgendwann gab es eine Verschiebung.
Im Jahr 11 oder 12 hatten wir einen Mitarbeiter,
Jason Zaugg . In der Open Source-Welt ist dies nicht seltsam, aber es tauchen selten Menschen auf, die viel Zeit und Code investieren. Jason kam, er verdiente viel Geld und er selbst arbeitete in einer Bank. Wir haben ihm sogar das Recht gegeben, sich zu verpflichten. Er musste die Rezension nicht einmal zur Veröffentlichung vorzeigen. Sie saßen nur zusammen, codierten und diskutierten einige Dinge zusammen. Anhand unseres Frontends fand er heraus, wie Scala funktioniert. Alles endete damit, dass Jason einen Job als Scala-Compiler bekam. Es ist traurig, dass wir es nicht für uns selbst arrangiert haben. Ich denke, das ist die falsche Strategie. Wenn eine Person kostenlos für Sie arbeitet, muss sie für sich selbst arrangiert werden, sonst geht sie zum Scala-Compiler. Davon gab es nichts mehr.
Jason ist eine großartige Person und ein cooler Mitwirkender. Er war ein Fan von IDEA. Tatsache ist, dass das Scala-Plugin am Compiler-Code hängt. Der Code ist komplex - Abhängigkeitsinjektion (DI), die im Wesentlichen ein Kuchenmuster ist. Wenn Sie eine Datei öffnen, müssen Sie den gesamten Compiler analysieren. Aufgrund von DI gibt es ALLES im Kontext, und alles ist mit Typinferenz vorhanden, und Sie müssen den Typ überall anzeigen - alles ist miteinander verflochten. Die Analyse einer Datei dauerte 5 Minuten. Selbst bei der Konfiguration des Compilers als Projekt kam noch Bootstrap. Er muss sich auf sich selbst verlassen, das nennt man Bootstrap. Solche Projekte waren schwer einzurichten.
Jason und ich haben viel Zeit damit verbracht, uns anzupassen. Um Bootstrap-Projekte zu ermöglichen, programmieren Sie im Compiler, damit Sie zumindest Code in diese komplexen Dateien eingeben können. Zuerst war alles rot und ich habe viel Zeit damit verbracht, alles in Grün zu verwandeln. Wir haben sogar einen Test durchgeführt, bei dem überprüft wurde, ob unser Frontend auf dem Compiler grün ist oder nur wenige Fehler enthält. Dementsprechend wechselte das Compilerteam vollständig zu IDEA.
Vadim Chelysov : In diesem Moment begann der Abfluss von Eclipse?
Alexander : Es gibt mehrere Gründe für den Abfluss. Zunächst veröffentlichte IDEA eine Community-Version. Dies bedeutet, dass Sie das Scala-Plugin auf die kostenlose Version des Benutzers setzen können. Wir waren von Anfang an Open Source, und als wir anfingen, war es proprietär, mit Open Source. Es wurde jedoch auf einer kostenpflichtigen IDE installiert. Dafür haben sie Eclipse-Unterstützung geschrieben, weil sie ein Standard-Tool benötigten, das kostenlos verwendet werden kann. Deshalb wurden wir auch frei.
Die zweite - Eclipse als Plattform begann '14 zu sterben. Er ist nicht gestorben, es ist lächerlich zu sagen, aber die Finanzierung ist plötzlich gebrochen. Die Eclipse Foundation begann weniger Geld zu sammeln und es ist unklar, wie die Plattform unter solchen Bedingungen entwickelt werden soll.
Der dritte Grund ist, dass sie keine schnelle IDE erstellen konnten.
Der Präsentations-Compiler arbeitete langsam, und wenn wir über irgendeine Art von Funktionalität sprechen - es handelt sich im Allgemeinen um Tryndets -, ist das Refactoring äußerst schwierig. Im Compiler werden Bäume aus Sicht der Optimierung unidirektional erstellt, Sie können kein übergeordnetes Element übernehmen. Um den übergeordneten Knoten zu finden, müssen Sie eine Datei von oben nehmen, zu ihnen gehen und schrecklich viel Aufhebens machen.
Der vierte Grund ist, dass sie mit der Anzeige im Compiler arbeiten. Dies ist der Baum, der nach dem Entkoppeln erhalten wird. Der Editor ist in der Front-Anweisung geschrieben, und im Präsentations-Compiler ist im Allgemeinen nicht klar, welche Art von Code. Es ist unklar, wie man damit arbeitet und das Refactoring organisiert. Wie kann man diese vordere Aussage extrahieren und nicht all diesen verrückten Mist? Dementsprechend erschienen Merkmale langsam.
Gleichzeitig war unser Frontend miserabel und funktionierte nicht gut. Aber damit er zumindest so war, musste er schreckliche Dinge tun. Es war einmal, dass die Methode für
{i <- 0 to 10} println(i)
Unterstützung für 80% der Sprache erforderte. Da es entkoppelt ist und Sie eine implizite Konvertierung für
Range - 1 to 10
, sind die impliziten Parameter
CanBuildFrom
. Außerdem gibt es immer noch eine verrückte Hierarchie von Sammlungen und Lambdas und ein anderes anonymes Lambda mit einem unbekannten Parameter - komplettes Zinn. Sobald dieses Beispiel funktioniert, müssen Sie verstehen, dass es 80% des Frontends funktioniert. Daher bedeutete selbst ein schlechtes Frontend, dass wir eine unglaubliche Menge an Scala-Funktionen unterstützten.
Jetzt hat IDEA viele Sprachkonverter geschrieben. Sie sind seltsam, aber anders, und als alles begann, erinnert sich niemand. 2009 ging ich zu einer Konferenz und war dort schockiert - warum nicht eine Konvertierung von Java nach Scala vornehmen? Wir haben besprochen, dass Sie die Semikolons zum Entfernen und Erweitern von Typen satt haben - Sie müssen sich irgendwie bewegen. Ich setzte mich und schrieb abends tausend Zeilen - ein einfacher Konverter einer Sprache in eine andere.
Aber ich ging noch weiter und fand heraus, wie ich es einfach machen kann, diese Funktion zu finden. Wenn ich in Java-Code kopiere, erwarte ich, jetzt Semikolons einzufügen und zu entfernen. Dies ist mein Lieblingsfall, wenn Sie eine Funktion erstellen, die sich ideal für die Auffindbarkeit eignet. Während du sie nicht brauchst, weißt du nichts über sie. Sobald Sie es brauchen, bekommen Sie es sofort. Es ist wie im Apple-Stil - einfach und unkompliziert. Dementsprechend wurden seit dieser Zeit viele Konverter von JetBrains geschrieben, und die Werbefunktion besteht darin, dass sie auf der Beilage angeboten werden. Aber ja, ich habe es mir ausgedacht, das ist mein Stolz.
Über Compiler
Mikhail Mutsianko , einer der aktuellen Entwickler des Scala-Plugins bei JetBrains, ist mit der Aufnahme verbunden. In dieser Ausgabe des Podcasts haben Mikhail und sein Kollege Andrei Kozlov das Plugin ausführlicher besprochen.Alexander : Ich ködere hier Scala-Geschichten. Mischa, sag mir, wie du erschienen bist?
Michael : Ich bin ursprünglich in Kotlin aufgetreten. Andrei Breslav hat eines der ersten Praktika gemacht - einen Studenten. Ich kam zu dem Projekt, Kotlinovsky DSL-Bytecode der Android-UI-Bibliothek zu generieren. Sie heißt jetzt
anko . Dann suchte ich nach Themen für ein Diplom und er schickte mich zu Sasha. Als Diplom habe ich einen Baumdolmetscher für Scalameta gemacht.
Alexander : Genau das ist das Thema, das Mischa in Form eines Diploms erhalten hat - Unterstützung für die Metaprogrammierung. Mischa tat dies für eine lange Zeit. Haben wir am Ende etwas getan?
Michael : Ja, es hat funktioniert. Es stimmt, dann wurde Scalameta gerügt. Scala 3 wird etwas Ähnliches haben, aber mit einer standardisierteren API.
Alexander : Ich weiß überhaupt nichts über Dotty.
Vadim : Ich habe heute gerade gesehen, dass Miles Sabin sein Stück Code gefummelt hat, in dem es formlos mit neuen Makros nach Dotty migriert, und es scheint, als würde es sich herausstellen. Typable migriert.
Mikhail : Ja, insbesondere ist er einer von denen, die Anweisungen zum Typechecker in Scala geben, damit Shapeless ohne Krücken sofort funktioniert. Biegen Sie den Compiler im Wesentlichen formlos.
Alexander : Oh, komm schon! Machst du Witze? Sag mir, biegt sich Scalaz?
Michael : Nun, irgendwie ist nicht klar, wer Scalaz gerade schreibt. Miles steht nicht hinter ihm.
Vadim : Jetzt kümmert sich die ganze Community um Dotty. Miles sieht formlos aus. Zum x-ten Mal haben sich diese Implikationen geändert, zusammen mit einer Diskussion
darüber, wie man Typklassen von
Luka Jacobowitz macht .
Alexander : Über die Community. Zu Beginn des 17. Jahres beschloss das Scala Center, Influencer für die
Arbeitsgruppe in der Gemeinde zu sammeln. JetBrains wurden immer aus der Ferne und sorgfältig beobachtet. Gott bewahre, wir machen das Programmieren in IntelliJ IDEA gefährlich. Als es schwierig wurde zu leugnen, dass Sie noch bei IDEA programmieren müssen, wurden wir akzeptiert. Sie luden mich zu einer Diskussion ein, aber dann verletzte ich mich an der Hand und kam nicht. Dann verließ er Scala und erschien kein einziges Mal in der Arbeitsgruppe.
Es hat mich immer amüsiert, dass die Leute sagten: "Warum müssen wir die Details des Compilers dokumentieren, gibt es noch keinen zweiten Compiler?" Das war lustig, weil das Scala-Plugin immer der zweite alternative Compiler war. Es gab natürlich immer noch Typelevel, aber es ist eine Gabelung.
Wir waren stark von der Entwicklung von Scala beeinflusst. Als Jason Zaugg im Compiler erschien, war es cool. Er begann uns zu sagen: "Wir haben das getan, unterstützen uns." Es gibt eine Kommunikation. Wenn Compiler nach unten schauen und sie nicht verwenden, sagen sie uns nichts. Das war vor Jason.
Michael : Jetzt trete ich regelmäßig
Guillaume Martres , der Tasty sägt, und
Fengyun Liu - er sägt Makros.
Zusammenfassend
Vadim : Alexander, vielen Dank, lassen Sie uns zusammenfassen. Ich habe gestern mit einem Mann gesprochen. Er sagte, dass er in Scala das einzige implizite Konzept mochte, an dem verschiedene Merkmale aufgehängt waren. Jetzt, in Dotty, sind sie zu denselben expliziten Erweiterungsmethoden gekommen, offensichtlich wurden alle Implikationen für den Anwendungsfall mit genauen Worten deklariert. Wahrscheinlich Kotlin und Swift ausspioniert. Wie fühlst du dich dabei? Und generell zu Scala 3?
Alexander : 2018 waren die letzten Scala-Tage, die ich besucht habe. Darauf
sprach Martin Odersky über die Tatsache, dass Scala so viele Sprachkonzepte hat, Kotlin dreimal mehr, C # noch mehr. Gleichzeitig sind die Fähigkeiten von Scala umfangreicher.
Wir fanden es cool, aber es ist nicht so. Ich war beeindruckt und erkannte, dass Martin versteht, dass wir umziehen müssen. Das einzige, was sich Sorgen macht, ist, dass Scala eine Art Nischensprache werden sollte. Die grenzenlosen Möglichkeiten der Sprache schaffen genau diese Nische. Dies ist das DSL, das sie zu tun weiß, und es ist alles cool. Kotlin nach dem besten Java zu suchen ist jedes Jahr schwierig und schwieriger. Die Hauptsache ist, Ihre Nische nicht zu verlieren. Wenn sie all diese Funktionen hinzufügen und ihre Nische nicht verlieren, wird es cool. Aber wenn Miles alles ausführt, kann es funktionieren. Ja, Mischa?
In den folgenden Teilen der Untersuchung über den Ursprung der Scala-Bewegung warten wir auf ein Interview mit Vladimir Uspensky, Roman Elizarov und Nikolai Tatarinov. Wenn Sie der Geschichte der Scala-Bewegung neue Facetten hinzufügen oder Ihre Nutzungserfahrungen mitteilen möchten, reichen Sie Berichte ein . Call for Papers schließt nach 10 Tagen.