8 сезон · выпуск 2 · 29 сентября 2022 · 46 мин
Kotlin. Как разработка из Питера покорила Google
Разработка Наш человек в… Языки программирования
Слушать · 46:25
В 2010 году энтузиасты из компании JetBrains решили сделать собственный язык программирования. Тысячи человек следили за его созданием и ждали релиза, а через 7 лет Google объявил Kotlin официальным языком для платформы Android. О том, как ребята прошли этот путь, в этом эпизоде рассказывает сам Андрей Бреслав — ex-руководитель Kotlin.
Реклама. Попробовать бесплатную часть курсов по мобильной iOS и Android-разработке от Яндекс Практикума: https://clck.ru/32A8ef
Подкаст «CTRL SHIFT!» от студии Либо/Либо: https://podcast.ru/1635964055
Ссылки из эпизода:
Сайт языка: https://kotlinlang.org
«Книга дракона»: Compilers: Principles, Techniques, and Tools. Alfred V. Aho, Monica S. Lam, Ravi Sethi, and Jeffrey D. Ullman https://www.amazon.com/Compilers-Principles-Techniques-Tools-2nd/dp/0321486811
Подписаться на «Запуск++» в Телеграме: https://t.me/+N_AopnXC0dBkMGQy
Подписаться на Либо/Либо+ в Телеграме, куда включены эпизоды «Запуск++»: https://t.me/+LXZx5JRqO4o0MjJi
Партнер этого подкаста — Яндекс Практикум. https://practicum.yandex.ru/
Над выпуском работали
- Редакторка
- Маша Агличева
- Продюсерка
- Настя Медведева
- Звукорежиссер
- Юра Шустицкий
- Дизайнер обложки
- Петр Сутупов
Транскрипт
Самат Галимов, Андрей Бреслав · расшифровано автоматически, ошибки возможны
-
Всем привет! Меня зовут Самат Калимов, и это подкаст «Запуск завтра». Как технический директор я пытаюсь разобраться, как устроены сложные и интересные штуки. Я зову профессионалов, с которым можно поговорить простым человеческим языком. Сегодня мы поговорим о языке программирования Kotlin. Это головокружительная история успеха. Если вы пользуетесь телефоном на андроиде, то с большой вероятностью вы пользовались программами, написанными на языке Kotlin. Сам создатель языка Андрей Бреслав расскажет нам, как так получилось, что разработкой, родом из Петербурга, пользуются миллионы людей по всему миру, а ставку на неё делают такие корпорации, как Google. Вы услышите меньше про какие-то технические особенности языка, какие-то подводные камни, интересные только профессионалам. Если вы хотите в этом разобраться подробнее, то вы сможете это сделать на следующей неделе в пятницу. У нас выйдет бонусный эпизод про язык Kotlin. Подписаться можно в Telegram или в Apple подкастах с ссылкой в описании к этому эпизоду. Это подкаст студии Либо-Либо, и мы его сделали вместе с сервисом онлайн образования Яндекс Практикум. У Практикума есть курсы по разработке, по анализу данных и по английскому языку. Если вы хотите освоить цифровую профессию, переходите на сайт Яндекс Практикум и учитесь. Кстати, у Практикума есть два курса по мобильной разработке, под iOS и Android. У обоих курсов есть бесплатная часть, вы там сможете сделать свое первое приложение и понять, нравится вам это или нет. Если хотите стать мобильным разработчиком, переходите на сайт Яндекс Практикум по ссылке в описании и учитесь.
-
Я Андрей Бреслав, я 10 лет своей жизни посвятил руководству проектом Kotlin в JetBrains, занимался там дизайном языка, писал компилятор и руководил командой.
-
Когда появился язык Kotlin?
-
Мы начали, на самом деле даже не мы, это в питерском офисе JetBrains, начали разговаривать про язык Kotlin где-то в начале весны 2010 года. Он тогда не назывался Kotlin, и я тогда не работал в JetBrains и ничего об этом, обо всем не знал. Но достаточно скоро после того, как эти разговоры начались, меня туда позвали по приглашению Андрея Иванова, который незадолго до этого перешел в JetBrains, познакомиться с ребятами. Мы познакомились, и тогда мы вот прям в этот вечер накидали какие-то даже первые идеи, чуть подописывали на бумажке, но естественно никакого кода еще не написали.
-
Зачем вообще JetBrains решили сделать свой язык?
-
Сейчас, уже из сегодняшнего дня, это прямо супер логичное и рациональное решение. В 2010 году язык программирования Java жесточайше стагнировал. Просто ужасно стагнировал. Там предыдущая осмысленная версия Java 5 вышла в незапамятный какой-то 2004, по-моему, год. После этого там вышла Java 6, которая даже не была вообще апдейтом языка. И просто все выли в голос, потому что, ну, язык старый, язык не апдейтится. Рядом у Майкрософта есть офигенно современный язык C Sharp. И всем, ну, прямо очевидно было, что все очень плохо. И, соответственно, поскольку у JetBrains огромный бизнес как раз построенный на инструментах для Java программистов, и JetBrains там сам весь писал на Java, ребята отлично понимали, что это просто гигантская боль. И вот есть окно возможности, когда можно вывести язык программирования на JVM, то есть то, чем будут пользоваться программисты, которые сегодня пишут на Java, но современное, крутое. И, соответственно, для JetBrains создание нового языка программирования— это создание нового рынка. Создать инструмент для самих себя, чтобы больше не мучиться с Java и писать на хорошем языке. быть более продуктивными.
-
Для него нужны инструменты.
-
Да. Мы сами сделаем для него инструменты и всем их продадим. Были такие соображения. Тогда самой жизнеспособной альтернативой Java была Scala. Ребята очень подробно мне рассказали в чем проблема со скалой. Они просто сами пробовали ее у себя в продакшене. Понятно, что там с ней. Там все время в скалу добавляются по сей день какие-то значит хитрые фичи. Какая-то хитрая математика значит за ними стоит и язык сложный. Он сложный для понимания людьми, сложный для компиляции, сложный для тулов. То есть хорошую IDE для скалы вот такую как там для C-Sharp есть или для Java написать просто невозможно. И я вполне поверил, что, да, действительно нужен новый язык программирования, и JetBrains может вывести его на рынок, сделать популярным.
-
А тебя чего позвали? Ты такой, типа, суперэксперт в создании языков? Почему?
-
Я точно не знаю, что думал Андрей Иванов, когда меня звал, но я действительно в своей аспирантуре занимался языками и в Borland'е работал, где мы бесплатно учили студентов разных технических вузов тем вещам, которым вузы их не учили, программистским. Я работал в группе, которая занималась созданием маленького языка программирования, но там они его не сами придумывали, они писали реализацию языка, который кто-то другой специфицировал.
-
То есть ты ученый, который специализируется на этом, и плюс у тебя есть практический опыт в Борланде?
-
Ну, типа того, да. Но в Борланде-то я был совсем джуниор-джуниор, то есть я пришел вообще ничего не умел, но тем не менее имел дело с этим языком. Потом я писал дипломные работы про что-то такое языковое под руководством людей из Борланда. В общем, видимо, Андрей как-то запомнил, что я про языки что-то понимаю. просто позвал меня познакомиться я действительно к этому моменту по своей науке там уже дофига ковырялся с предметно ориентированными языками то что называется dsl соответственно я реально глубоко закопался в то как это все делается и интересовался в принципе языками программирования поэтому знал там как работает искала там и и Java, естественно, и C Sharp, и всё на свете. Поэтому у меня реально была такая экспертиза. Но, честно говоря, это всё, ну вот вообще весь проект Kotlin— это такой невероятно наглый, как бы шапкозакидательский был ход. То есть не было никакой гарантии, что это получится вообще, и что это получится конкретно у меня. Но вот мы как нашли общий язык с ребятами, когда познакомились быстро, и они в меня поверили, за что я им благодарен, и я тоже поверил, что действительно может сработать, Ну, я при этом хорошо отдавался отчет, что если не сработает, я много чему научусь.
-
Хорошо. Вот вы поняли, есть проблема. Какие вообще шаги нужно предпринять для того, чтобы создать свой язык программирования? Что это из себя представляет?
-
Ну, технически, как с любым продуктом, тебе нужно понять, кто аудитория, какие у аудитории юзкейсы, и дальше, ну, это будет такой там набор требований для твоего решения. Ну, у нас набором требований было такое, мы хотели сделать современный язык для промышленного программирования на платформе Java. То есть, было понятно, что он будет там непременно safe, в смысле статически типизированный и автоматически находящий какие-то ошибки, которые часто встречаются. встречаются. Было понятно, что он должен быстро компилироваться, и это то, что, кстати, не получилось сразу сделать, только сейчас там ребята доделывают быстрый компилятор. И было понятно, что он должен быть очень хорошо совместимым с Java, чтобы все джавовские библиотеки в Kotlin работали без проблем, и чтобы котлиновские библиотеки в Java тоже работали без проблем.
-
Очень круто.
-
Вот, это были наши требования. Ну а дальше надо думать из каких языков. Может понадобятся какие-то существующие кусочки. А дальше, значит, как ты будешь это все сшивать из разных языков вместе. Каких идей тебе не хватает, что придется придумать самому. Ну и там надо как-то запихаться вот в этот constraint space, когда у тебя есть все твои требования. у тебя есть физические возможности. Ну вот, надо как-то влезть, значит, вот в этот маленький уголок пространства, принять некоторое количество решений волюнтаристки, некоторое количество решений попробовать отказаться и потом взять другое. Мы много раз поменяли решение по многим дизайновым вопросам языка. То есть в этом смысле дальше был такой вполне agile, в смысле, что мы делали прототип, пробовали, что-то не нравилось, меняли дизайн и так далее довольно долго.
-
Вот про это мне интересно. Просто когда делаем сайт, например, мне более-менее понятно. Типа, чуваки делают дизайн, и тут, мне кажется, похоже, ты думаешь, как это все будет. Дальше фронтендеры пишут фронтенд-код, бэкендеры пишут бэкенд-код. Это начинает вместе работать. А в случае языка программирования, что ты вообще пишешь, на чем ты пишешь?
-
Ну, это, кстати, очень любопытно, что ровно все те же слова, которые ты сказал, в случае языка программирования есть. Там есть дизайн, есть фронтенд, есть бэкенд. Буквально.
-
Да.
-
Но они понятны, это разные немножко смыслы имеют. То есть дизайн— это какая-то спецификация того, что должно произойти. Мы, конечно, полностью формальных спецификаций не писали, просто договаривались между собой, как оно должно работать, записывали как-то более-менее понятным образом. И, соответственно, на этом этапе экспертизой участвующих людей проверялась юзабилити, то есть насколько будет это удобно на самом деле в реальных юзкейсах. Просто, значит, вообразить головой, как это будет использоваться, что мы знаем, вот просто как опытные инженеры уже, как это бывает, вот что важно, что не важно. Вот, это был первый этап. Дальше, собственно, шло все в реализацию. Реализация состоит из фронтенда и бэкэнда. Фронтенд— это та часть компилятора, которая занимается чтением текста, разбором его на кусочки, на дерево, типизации и так далее. А бэкэнд— это та часть, которая генерирует исполняемый код.
-
Достигли ты цели, которые ставил изначально при создании языка?
-
Мы достигли многих целей. То есть мы сделали язык очень совместимый с Java. Это было очень большой челлендж, очень сложная штука. И у нас получилась офигенно хорошая совместимость. То есть Kotlin Java понимает во всех вообще возможных вариантах. Java понимает Kotlin максимально, насколько это возможно, и все довольно хорошо интерропится, действительно. То есть нет никакой проблемы написать даже внутри одного проекта, писать часть схода на Java, часть на Kotlin. У нас компилятор так написан, мы его исходно на Java писали. И можно, естественно, в программе на Kotlin использовать java-библиотеки и kotlin-библиотеки параллельно. Можно в программе на чистой Java использовать Kotlin в библиотеке, даже не зная, что это Kotlin. Так что это все очень хорошо получилось.
-
Интероп получился.
-
Да. Это было суперсложно. То есть, если бы не было интеропа, мы бы все это сделали гораздо быстрее, нам было бы гораздо проще.
-
Окей.
-
То есть, интероп— это гигантский constraint. Просто это очень сложная инженерная челлендж. Получился довольно хороший с точки зрения безопасности язык. То есть, мы по совету Ромы Елизарова, который просто приходил в гости как-то на заре Kotlin, добавили null safety, и мы это сделали первыми из мейнстримовых языков. И потом мы видим сейчас, что другие языки ее заимствуют. В смысле, мы не знаем, что точно у нас, но они тоже ее добавляют. И это была прям очень хорошая идея. В связи с интеропом это было суперсложно, но мы справились. Мне кажется, что Kotlin хорошо ловит ошибки программистов, и многие ошибки в Kotlin в принципе невозможно допустить. Мне кажется, мы в очень хорошем месте с точки зрения сейфти. Это то, что получилось лучше всего. Ну и с boilerplate мы тоже очень эффективно поборолись, действительно по сравнению с Java и Kotlin офигенно краткий, там прям очень много чего можно записывать коротко. Это тоже важное достижение, то есть это все получилось неплохо.
-
Хочу вам порекламировать новый подкаст студии Либо-Либо. Он на английском языке и называется Control Shift. Там изучают пивоты и крышесносные истории о том, как люди применяли свои классные навыки для того, чтобы помогать другим людям. Например, история ученого, который пытался применить теорию игр к тому, чтобы находить подходящих партнеров для брака, а в результате придумал, как реципиентов, чем спас сотни тысяч жизней. Подкаст на английском языке, но очень понятный. Ссылка в описании к этому эпизоду. Когда вообще об этом языке узнали снаружи? Вот в 10-м году вы его начали делать?
-
Мне кажется, что мы где-то в 11-м году первый раз рассказали где-то публично про то, что мы делаем котлин. И как раз тогда и появилось имя котлин. Потому что изначально внутреннее название языка было джет, по естественным причинам. Но оказалось, что трейдмарка занята. И мы, значит, мучительно перепридумывали название. Это было просто ужасно. Я ненавижу придумывать название. И тот же Дима Жемеров, который, насколько я знаю, вообще исходно предложил идею делать новый язык, предложил название Kotlin. И там у этого Был некий бэкграунд, значит, параллельно с нами возникло сразу несколько альтернативных языков новых на JVM. Там был язык Xtend, и был язык Ceylon, который, значит, очень известный такой программист в джавовском мире, Gavin King, стал делать в компании Red Hat. На самом деле, внутри компании JBoss, которую поглотил компания Red Hat. Ну, мы, естественно, читали там про них всё, что могли, и у Гевина была вот прикольная идея. Он назвал язык Цейлон, потому что Джава— это остров, на котором делают кофе, а, значит, Цейлон— это остров, на котором делают чай. Ну вот, отличная аналогия. И я так понимаю, что Дима вдохновился именно этой мыслью и сказал, вот, Котлин— это остров в Санкт-Петербурге, кофе и чай там не делают, но зато он за окном, вот, буквально можно на него посмотреть.
-
Кайф. Значит, в 2011 году вы уже про него рассказали.
-
Да. Точно у нас был доклад на JVM Language Summit. Это такой междусобойчик, который разработчики Java устраивают для разработчиков альтернативных языков на JVM. Они вообще огромные молодцы. Они собирают всех людей, которые что-то понимают вот в кишках Java, в одной комнате каждое лето, значит, там на три дня, и там вот Все, собственно, люди из Oracle, естественно, все, и люди из IBM, которые делают свою виртуальную машину, и еще там из 20 мест, где вот реально чем-то таким хардкорным в Java занимаются. В общем, был там, был на большая опенсорсная конференция американская. Я не помню, что было в каком порядке.
-
А к этому моменту язык уже был доступен для того, чтобы начать программировать?
-
Нет. Нет, к этому моменту мы только написали документацию, ну, собственно, я вот сел и там несколько недель писал документацию просто. Мы только ее показали, ну, там были какие-то, естественно, примеры в голове написаны, из головы, точнее, написаны примеры программы, у нас еще там толком ничего не компилировалось. Это было вот главное объявление тогда, но это был такой big splash, то есть много народу как-то реагировало. Ну, там кто-то заинтересовался, кто-то, наоборот, говорил, что это ужасно, типа. Я прям помню, что в Твиттере какой-то неизвестный мне человек написал, что типа, не помню, какое-то первое предложение, а второе предложение было seriously give up. Типа, не надо этого делать, просто бросьте. И я, конечно, не скажу, что я очень сильно переживал, но было так тревожно читать все эти сообщения. Ну и, естественно, когда конкуренты появлялись, одновременно с нами тоже было тревожно. Но в целом было много и какого-то позитива. Было видно, что там язык JetBrains кого-то интересует.
-
Как вы его зарелизили?
-
Ну, зарелизили мы его очень нескоро, значит, зарелизили мы в шестнадцатом году только. В двенадцатом году мы его заопенсорсили, и потом еще, значит, четыре года мы его перевели, выпускали какие-то промежуточные версии, майлстоуны (milestones), нестабильные. То есть, там фокус в чем, что когда у тебя есть язык программирования, совместимость для тебя огромный констрейнт. То есть, если ты меняешь что-то в языке, программы, которые на нем написаны, перестают компилироваться. Зачастую. Поэтому мы, значит, явным образом говорили, что вот пока мы не выпустили 1.0, у нас может ломаться что угодно, мы вообще не отвечаем ни за какую совместимость. И, ну вот, мы выпускали эти майлстоуны (milestones), мы их выпустили, по-моему, 14 штук или что-то такое, короче, в общем, больше десятка. В джитбрейсе мы уже писали какой-то даже продакшн-код на нем, ну, естественно, Котлин сам, и там самые горячие головы у нас взяли Котлин в суперсыром состоянии, в бой, и, в общем, ели гвозди мучительно, но очень много фидбэка полезного давали.
-
Вот вы его когда опубликовали, когда вы зарелизили, вы уже сказали, что это 1.0, как люди о нем узнали?
-
К этому моменту просто блог Котлина был достаточно эффективной платформой для анонса. В 2016 году уже было много таких чемпионов Котлина настоящих, которые его очень любили, его продвигали. То есть уже там несколько тысяч человек следили всё время. То есть ещё не было релиза, уже было много пропонентов таких настоящих, которые много сил в это вкладывали. Писали библиотеки, там контрибьютили даже к нам в компилятор немножко тоже такое было. И более того, есть такой проект «Корда» называется. он не очень известный, потому что он интерпризный, в смысле внутренний для банков. Консорусум из нескольких крупных банков, там JP Morgan, какой-то еще кто-то, в общем, большие банки, написали свой блокчейн внутренний, значит, для своих дел. И, значит, один из авторов этого проекта, Майк Херн, он старый криптоинженер, в биткоине участвовал, и вот он полюбил Kotlin где-то на заре. Kotlin был еще сырой, до релиза он его взял в корду и стал писать корду на нем. Нифига себе. То есть это банковский софт, вообще какой-то хардкорный, Корда. И да, вот по сей день Корда написан на Котлине. Вот так. Офигеть.
-
Это сколько у него должно было быть авторитета, чтобы ему позволили, типа, притащить какую-то сырую технологию внутри банка?
-
Очень много. Ну, Майк очень крутой чувак, так что да, его все послушали.
-
Сколько людей пользуются Котлином сейчас?
-
несколько миллионов. Мы собираем статистику использования IDE. На самом деле мы собираем статистику апдейтов. Типа, когда запрашиваются апдейты. По-моему, последняя цифра, которую ребята публиковали, была что-то там 5 с чем-то миллионов. Вот, последний год. Ну, понятно, что это не все эти люди используют его постоянно. Ну, это сложно все померить. Но, тем не менее, в общем, это точно там... Больше миллиона человек железная, думаю, что не один миллион. Kotlin, ну, какие-то десятки процентов от джавовского рынка примерно составляет. Хорошо.
-
Самый популярный юзкейс использования Kotlin, он тот, который вы изначально продумывали, вот ты говорил, что это Java Interop, вот это все?
-
Ну, фактически да, но мы, конечно, изначально целились в разработчиков на Java, то есть то, что делалось на обычной Java, а именно, в первую очередь, бэкэнды для веба, сервера, и это был главный driving use case, потому что была самая большая аудитория. Но за время, пока мы ковырялись с Котлином, развел Android. Там язык программирования тоже Java был, но при этом другая совершенно среда исполнения. Там своя виртуальная машина, другая, с другими байт-кодами. Транслятор туда. В общем, там какая-то сложная конструкция. Довольно рано я догадался просто, что раз там мобильные приложения часто бывают маленькими, видимо, много начинают новых, будет проще там адоптить язык, потому что там, ну, в новом проекте легче начать с нового языка. Но в целом, начало, конечно, нашего общения с андроидом было очень смешное, потому что к нам в какой-то тоже, не помню куда, либо на форум, либо в твиттер, там, пришел человек, говорит, слушайте, а ваш код на андроиде-то работает? А это был какой-нибудь, я не знаю, тринадцатый, наверное, год, ну, в общем.
-
Андроид еще был не таким популярным в то время.
-
Андроид был не супер популярным, мы как бы знали, что он есть, как теоретически, но у меня был телефон, по-моему, тогда на операционной системе Symbian.
-
От Nokia.
-
Да-да-да. Вот. И мы такие, ну, я там что-то посмотрел в Википедии, значит, слушай, ну там вроде Java должно работать. Мы не пробовали, но попробуйте, может заработает. Я не уверен, там этот же человек вернулся или другой, какой-то человек пришёл и написал нам в трекер баг, что всё падает на андроиде, ничего не работает. И мы посмотрели на этот баг, а там какая-то дикая дичь. Там падает не андроид, еще до андроида дело не дошло. Там где-то, значит, по дороге наш байт-код не транслируется в андроидный байт-код, потому что транслятор, который есть в андроидном тулчейне, падал просто с кордампом. То есть, он там говорил типа сегментейшн фолта, до свидания, и регистры печатал.
-
О господи, даже не ошибку выдавал, а сам ломался просто.
-
Да, он просто падал, он там на каком-то C++, по-моему, написан, и, в общем, просто в кордамп полез. И мы такие, блииин, кордамп валится, нам сейчас придётся его дебажить, разбираться, что там вообще случилось, ну вообще непонятно. И тут кто-то из наших нашёл ещё в трекере Языка Груви такой же баг. И они его починили уже! И вот, там выяснилось, оказывается, этот их транслятор следовал спецификации джавовской виртуальной машины более строго, чем реализация джавовской виртуальной машины от производителя Java. То есть некоторые вещи, которые работали на стоковой джавовской машине, не работали на андроиде, потому что HotSpot, она как бы воспринималась, знаешь, как вот браузер HTML воспринимает, так, типа, fault-tolerant, Типа, ну тут чё-то не закрыта скобка хрен с ним там И вот там так же, то есть есть какое-то количество вещей, которые спецификацией запрещены, а при этом hotspot с ними работает И мы какой-то флаг неправильный писали, какой-то битик просто не туда И у нас там был формальный некорректный класс И Dex этот транслятор, он значит не то чтобы говорил, что типа я вижу чё-то не соответствует спецификации, типа не буду компилировать Он просто падал в CoreDump, не знаю почему, я даже не смотрел его код И мы, конечно, заценили, и там был не единственный такой баг, мы там потом нашли еще какое-то количество, мы в итоге заинтегрировали просто андроидовский вот этот вот чекер корректности байкода просто в наш тест-свит сразу. У нас все тесты гонялись прямо сразу с андроидом, чтобы быть уверенным, что спецификация в лучшей ее форме у нас правильно соблюдена. И нам действительно андроид ловил какое-то количество еще багов, которые на ход-споте вообще не важны. То есть мы ломали их ход-спот, если что, то есть это вообще несложная задача, как выяснилось.
-
Почему вообще андроид-разработчики вас заметили и почему они начали пользоваться Kotlin?
-
Ну, я думаю, что по тем же причинам, по которым мы исходно вообще Kotlin хотели делать, то есть у андроида, у него в этом смысле еще более тяжелая судьба, чем у просто Java, потому что там Java еще там в 2000 каком-нибудь в 2017 году, и в 2016 тоже самое, Java там была еще шестая. То есть уже вышла Java 8, а мы, к сожалению, слишком долго ковырялись с Kotlin, и Kotlin зарелизился позже, чем вышла Java 8, с очень важными добавлениями, с этими лямбдами, с дефолтными методами в интерфейсах. Но Java 8 для Андроида была напрямую недоступна. То есть там были какие-то сложные способы чего-то такое заретрофитить, но в целом на Андроиде Java была шестая.
-
Ничего себе, то есть Андроид разработчикам не была доступна даже свежая версия Java.
-
Да, именно так. И они от этого, естественно, страдали очень сильно. А более того, рядом с ними были разработчики на iOS, которым дали Swift.
-
Ааа, Objective-C тоже был дико старым языком из 80-х. И тут Apple говорит, вот офигенно классный язык, всё модно-молодёжно. А они сидят на старой Java.
-
Да, надо признать, что Apple и Objective-C-то развивал пободрее, чем Oracle развивал Java на тот момент. Но, да, в 2014 году опубликовали Swift. Swift это прямо был, понятно, святой Грааль, офигенный язык, очень хороший, сделанный прям очень толковыми людьми. Удивительным образом сильно похоже на Kotlin, хотя мы-то Swift-а не видели, но просто к тому, что мысли сходятся. Ну, они, наверное, смотрели на наш дизайн, мы не смотрели, но, в общем, у нас много чего совпадает, хотя очень много чего различается. И, ну, естественно, было такое... Как бы, если сравнивать Swift и шестую Java, получится еще хуже в шестнадцатом году, да, чем если сравнивать там Java и C Sharp в десятом году. Ну, просто совсем, просто небо и земля. Соответственно, много людей на Андроиде стало адоптить Kotlin, и были в основном... Ну, там, конечно, были баги какие-то, еще чего-то, но были запросы к нам, типа, как-то страшно, а вот исчезнет ваш Kotlin, что мы будем делать с нашим кодом? Давайте вы как-нибудь договоритесь с Google, чтобы Kotlin как-то признали, значит, официальным языком для Андроида. И мы заходили в Google по всем возможным каналам, и нам там говорили, ну, ребята, не, ну, идите, короче, гуляйте. При этом через год после того, как Kotlin зарелизился, ребята в Google, как они рассказывали потом, провели опрос среди своих таких самых инфлюенсеров-разработчиков.
-
Внутри Гугла (Google).
-
И спросили их, не в Google, а в андроидной экосистеме. Это были люди, которые писали... Они берут на самом деле какой-то свой топ приложений и зовут оттуда людей, с ними советоваться.
-
Спрашивают, какими инструментами пользоваться.
-
И они задали вопрос, чего нужно сделать в андроидовской экосистеме. И там топ-1 был нормальный язык программирования, наконец. И в этот момент внутри Гугла появилось политическое решение, давайте заадоптим в Котлин.
-
Ничего себе.
-
Потому что, ну, действительно, приличное количество людей уже Котлином пользовалось на Андроиде, все знали, что он работает. И у JetBrains с Гуглом уже были, на самом деле, партнерские отношения, потому что Гугл свою Android-студию, это IDE для Андроида, делает на идейской платформе, то есть на платформе от JetBrains, open-source, которую в Гугле допиливают сами для своих задач.
-
Так это 17-й год, да, Гугл к вам сам возвращается?
-
Да, это в семнадцатом году. Собственно, это было достаточно все смешно. Я поехал в отпуск, типа, наверное, где-то в марте семнадцатого года в Париж. И просыпаюсь, я, значит, в моей замечательной гостинице в Париже, смотрю в телефон, а там сообщение. Какие-то люди из Google хотят поговорить. Подключайся. Я подключаюсь и узнаю, значит, что хотят заадоптить Kotlin.
-
Неплохой подарок на отпуск.
-
Да, я, значит, конкретно прищегел. Это был март. Google I.O. конференция, на которой Google всё объявляет. В мае.
-
Март, апрель. Господи, два месяца, что ли?
-
Да.
-
А что вам нужно сделать? Вообще, что значит за Адопти? Типа, что им нужно было сделать?
-
Да, это был, собственно, вопрос. А что вы, друзья, хотите? Ну, они там чего-то технически хотели, там, каких-то мелочей, по сути, было не очень важно, на самом деле. Потому что на IEO они никогда не релизят ничего, не объявляют, что будет зарелизлено через какое-то время. Но, представляете себе, это компания Google, да, значит, там, гигантская корпорация. которая хочет сделать крупную публичную ставку на проект, который делают и другие люди, другая коммерческая компания. В этот момент ты, наверное, хочешь как-то подстраховаться, чтобы эта другая коммерческая компания тебя не нагнула. А заметим, что у Гугла был очень неприятный опыт с Oracle.
-
Это самая известная юридическая тяжба в мире IT.
-
Да, вот эта тяжба, у нее какое содержание? Android придумали не в Google. Был какой-то стартап там, какой-то человек, значит, этот самый стартап придумал, потом через какое-то время Google его купил. А там уже было принято решение, что мы будем использовать язык программирования Java и библиотеки для Java, но свою виртуальную машину и все остальное. И они приходили в, тогда еще, по-моему, в Sun Microsystems, еще не Oracle был, наверное, а может быть уже Oracle, не помню, создателя Java. Да, приходили, короче, к разработчикам Java за лицензии, и те им выкатили какой-то гигантский счет, в общем, они не сошлись, они просто не договорились, и люди в Android приняли решение продолжать использовать Java, несмотря на то, что у них нет лицензии. И это сложный юридический вопрос, там, можно это или нельзя, так суд и не разобрался, потому что язык программирования, сам по себе язык программирования Java, он паблик-домейн, то есть нет никаких прав на него. Ну там дальше, в общем, оркловские юристы нашли к чему прикопаться. И Google в этот момент, вот когда мы в 2017 году договариваемся с ними про Kotlin, они в состоянии по кому? У них, значит, весь Android Division. Это там какая-то огромная толпа людей. Они как бы under litigation в этот момент. Что это значит? Это значит, что вся их, например, почта может быть затребована судом в любой момент. Поэтому, значит, по почте никакие важные вопросы не обсуждаются. Все важные вопросы обсуждаются по видеозвонку. Вот, то есть просто вообще no paper trail. То есть самый чатик, ну там был тогда еще гугл чат, так вот в чатике у всех сотрудников гугла централизована, выключена история.
-
Чтобы суд не мог ее затребовать.
-
Да. Значит, там такая вот атмосфера. Ну и они, значит, в этот момент, а давайте еще один язык программирования возьмем на борт. Какая хорошая идея. И, в общем, там были серьезные концерны. Вот это время все ушло на то, чтобы как-то зафиксировать юридически что-то, чтобы Google мог не бояться. Ну, в итоге решение там, оно всем известно. Там был создан foundation, специально отдельное юридическое лицо, в которое была передана торговая марка.
-
Котлин.
-
Слово Котлин им владеет не JetBrains и не Google, а специальный фонд, который совместно управляется JetBrains и Google. Причем там же сложно, там это совместно управляется, это хорошо сказать. Там какая-то есть корпоративная схема управления.
-
Совет директоров, пять директоров от вас, пять директоров от них, три независимых, какая-нибудь такая ботва.
-
Да-да-да, но на самом деле там типа два от нас, два от них, один независимый, но в общем идею ты понял, а дальше начинается. Какие правила голосования? К каким вопросам, значит, каким большинством, что можно принять? И начинается нетривиально, потому что от этого зависит реально, что будет дальше. Ну у нас, например, некоторое время назад случилась большая беда. Наш независимый директор, которого мы позвали, умер просто. Ну вот бывает, болел, умер. И теперь... Все это зависло в состоянии, когда весь наш чудесный дизайн повис, пока у нас не будет нового независимого директора. Соответственно, мы просто с моими коллегами в JetBrains, программистами, на доске дебажили эти юридические документы на предмет того, в каких случаях что происходит. не раз. Что будет, если эти два директора договорятся, значит, и проголосуют вот так вот? Самая сложная часть вот этих вот там пары месяцев, которые были передо нас, потому что на это. И мы там буквально на тоненько в последний момент успели это подписать. Макс Шаферов летал там в Калифорнию в гости к соответствующему вице-президенту Google. Ну, в общем, вот договорились.
-
И вы стали официальным языком андроида.
-
Да, и мы стали на тот момент, они как-то так объявили это, что типа мы добавляем Kotlin к другим уже поддерживаемым языкам на андроиде. Тогда они поддерживали уже Java C++ и добавили Kotlin. Вот, это был большой праздник, значит, Google IO, вот это в Калифорнии, там гигантская конференция, несколько тысяч человек, мы ездили с Максом как раз, и в момент, когда объявили, что мы берем Kotlin на борт, была овация реально, что зал на несколько тысяч человек весь там, значит, взорвался, и это было очень приятно. В общем, это был очень такой напряженный сначала, а потом вот очень приятный момент. Я очень благодарен коллегам из гугла, там на тот момент PM-директором в андроиде была Стефани Кадбертсон. И она невероятно милая. Человек, который умеет заботиться о других офигенно. И вот она, в частности, после уже анонсмента устроила мне встречу со всеми ключевыми инженерами андроида. И каждый из них пришел и рассказал, кому нравится Котлин. И было видно, что они не врут. Ну, там человек 10 очень крутых инженеров. Мне рассказали, как им нравятся. И я, конечно, был невероятно счастлив. Мне было... Ну, просто меня отпустило. Потому что я до этого был, конечно, просто в узлы завязан все это время. Там жуткое напряжение. Я вот прям помню этот день. Это один из таких самых приятных дней в моей жизни.
-
Ну, это реально признание такое ультимативное. Какие известные проекты сейчас использует Котлин?
-
Их много достаточно. Если там открыть котлиновский сайт, там будет куча всяких популярных имен. Я лучше помню наших ранних адоптеров. То есть, например, там банк N26 такой, ну это такой европейский Тинькофф банк.
-
Это известный немецкий стартап банковский.
-
Да, он использует Котлин 300 лет. Майкрософт использует Kotlin 300 лет у себя и на серверах, и на клиенте. Майкрософт?
-
Ничего себе. Притом, что у них C-Sharp, свой модный язык программирования.
-
Да, да. Ну, у них много всякой разработки. Под Android тоже делают приложения. И на серверах у них много Java, там не везде совершенно C-Sharp. И там, и там они его используют. В Autodesk используют Kotlin для их всяких разных хитрых приложений.
-
Autodesk— это один из главных производителей систем 3D-моделирования, да ведь? Я правильно говорю?
-
Да-да-да, у них там на самом деле много разных приложений, и более профессиональных, и более консюмерских, и в общем вот в них они используют. И еще на самом деле куча имен Netflix, там достаточно рано заадоптил Kotlin, ну в Google, естественно, огромное количество Kotlin используется, и в JetBrains огромное количество Kotlin используется. И так далее, в общем есть довольно много разных пользователей Kotlin, ну и на самом деле сейчас любое реально популярное приложение под Android уж точно написано на Kotlin, ну в смысле на большую долю. То есть понятно, что у Facebook там в их приложении под Android там типа 50 миллионов строк Java было. Я когда услышал, я просто офигел. Мы тоже приходили в гости в Facebook.
-
Операционные системы меньше бывают.
-
Да, да. Но там Facebook в этом смысле вообще неуёмный абсолютно. Но они с нами разговаривали о том, а как им внедрять-то Kotlin в своей... У них тот самый, соответственно, репозиторий гигантский там. Вот, я спросил, ну так а чего такого-то? Сколько у вас там Java? 50 миллионов строк. Я такой, больше, чем идея. Ну, в общем, им было сложно внедрять Kotlin, но они справились.
-
А есть ли проекты, которые целиком сделаны на Kotlin?
-
Ну, очень-очень много приложений, которые либо переписаны с нуля. Вот хороший пример, знаешь, в Atlassian есть всем известный проект Jira.
-
Главная система управления проектами в IT-мире и самая нелюбимая, мне кажется, одновременно.
-
Да, но она самая нелюбимая, потому что самая популярная. Почему Windows самая нелюбимая операционная система? Потому что самая популярная. В Jira, насколько я знаю, они сделали так. У них был гигантский монолит на Java, было тяжело уже его поддерживать, и они стали переписывать одновременно на микросервисы и на Kotlin. То есть у них всё новое кленовое на Kotlin, и есть просто дивайд (divide) / разделение. Типа старый код весь на Java, новый код весь на Kotlin и на новой архитектуре. И, ну вот, когда я там последний раз, сколько-то два года назад, наверное, разговаривал с ребятами оттуда, они были очень довольны, всё, новый код классный, там микросервисы круто пишут, всё, все довольны. В этом смысле, в какой-то момент, наверное, Jira, видимо, станет написана на Kotlin на очень большую долю, хотя она не начата на Kotlin изначально. Так что проектов на чистом Kotlin до черта реально очень много. Ну, вообще, практически все, скорее всего, приложения, которые достаточно большие по объему и начаты в последние 2-3 года, уж точно написаны на Kotlin.—
-
На Android.—
-
Да, на Android. Ну и куча серверного кода тоже. Мы просто, опять же, там общаемся с клиентами, огромное количество серверных сайтов написано на Kotlin. Невероятно.
-
Много упоминаем Java. А можно вообще работать на Kotlin, не зная Java?
-
Практика показывает, что да. Есть существенное количество людей, которые изначально изучали Kotlin и в Java стали разбираться только поскольку сталкивались с джавовскими библиотеками. Это возможно. Kotlin в этом смысле не импортирует из Java ничего неявного. Все, что ты используешь в Kotlin, это какие-то котлиновские концепции. Некоторые из них существуют только ради интеропа с Java, но все равно они котлиновские. Мы их объясняем все с нуля. Но исторически, конечно, нашей аудиторией всегда были люди, которые переходили с Java на Kotlin, потому что их было просто больше всего. И поэтому очень много документации исходной было написано для тех, кто Java знал. И этот bias (байас), он постепенно выправляется, потому что все больше людей начинают с Kotlin с нуля, и поэтому вот там книжки постепенно выходят про Kotlin для тех, кто вообще программировать не умеет. и документация подправляется постепенно, чтобы было меньше этого Java bias.
-
Хочу теперь не совсем про программирование, но, мне кажется, очень важное. Например, кому принадлежит язык? Мы с тобой начали об этом говорить, ты рассказал, что есть foundation, то есть язык, получается, принадлежит этому фонду, этому НКО.
-
Не совсем. Язык вообще никому не принадлежит, к счастью. Есть фонд, фонду принадлежит торговая марка Kotlin. То есть, если кто-то хочет назвать что-то Kotlin, и это что-то из нашего класса торговых марок, то это будет нарушение вот этой торговой марки. При этом, если кто-нибудь хочет сделать язык с точно таким же синтаксисом, но другим названием, ему ничто не помешает, потому что это опенсорсный проект.
-
То есть я могу его легко форкнуть, взять и сделать его копию.
-
Да, значит он под свободной лицензией Apache 2, она тебе позволяет форкнуть, назвать его дотлин и вперед. В этом смысле копирайт на код принадлежит JetBrains и контрибьюторам. Что это значит? Это значит, что если, например, кто-нибудь захочет взять этот же код и под другую лицензию его, например, распространять, сам по себе он для многих лицензий будет невозможным.
-
То есть я могу взять Kotlin и сделать с его помощью что-то, не прося никого разрешения?
-
Да, смотри, значит, с точки зрения пользователя, Kotlin вообще не накладывает никаких ограничений. Ты можешь использовать язык Kotlin для своего кода и библиотеку Kotlin'овскую использовать для своего кода, и никому ничего не говорить. Ты там, единственное, что ты должен сделать, это в каком-то там своем этом User License Agreement написать, что ты использовал Kotlin'овскую библиотеку. Просто attribution, больше ничего не надо. Это, соответственно, если ты просто хочешь пользоваться. Если ты хочешь этот код сам использовать, модифицировать, ты можешь взять его и использовать в своем проприетарном абсолютно продукте без проблем, пожалуйста. Ничего, опять же, там никого не надо просить. Тоже написать там в своем readme, что ты использовал этот код. Все. Больше ничего не нужно делать.
-
То есть ты не обязан раскрывать свой
-
код, если ты... Да, но если ты хочешь распространять этот код дальше, то у тебя есть ограничения, то есть ты не можешь это делать под любой лицензией, какой захочешь. Ты можешь это делать под той же лицензией, то есть если ты берешь наш Apache-вский код и распространяешь его дальше под Apache, нет никаких проблем. Если ты хочешь распространять под чем-то другим, там есть много сложностей.
-
Уже юридических?
-
Да.
-
Разрабатывает ли Kotlin кто-либо кроме вас, кроме JetBrains?
-
Да, довольно много участвует Google. Ну, то есть, если брать всех вообще контрибьюторов, там их тысячи людей. Просто отдельных независимых людей. Самый крупный из них организованный Google, там, ну, несколько десятков, наверное, человек в общей сложности так или иначе трогает Kotlin. Систематически там есть одна команда, которая просто коммитит компилятор. То есть, ну, они там тем, что их интересует, занимаются. Скоростью, там, компиляции для Андроида, там, бэкэндом нужным, там, и так далее. У нас был большой joint effort, когда ребята в Google делали Compose. Это, собственно, фреймворк для UI реактивного. Там им понадобилось много всяких точек расширения в компиляторе, чтобы втыкаться, свои плагины, короче, вставлять и что-то делать хитрое. И мы с ними договорились об этом. Сначала все использовали еще fork компилятора, на нем хакали все, что хотели. А потом был некоторый процесс такого convergence, когда мы договаривались, как мы... Это fork,
-
типа, часть его, то fork себе включите.
-
Да-да, как мы минимизируем то, что они там распилили, значит, сделаем из этого API и у себя его откроем. Ну вот уже сейчас уже все слилось, все нормально, можно использовать только Kotlin с Compose. Вот, Google самый крупный, ну и дальше там есть огромное количество людей разных из разных компаний, очень много просто индивидуальных людей, ну и там у каждого контрибьютора как-то своя специализация. То есть огромное количество людей прислало только один маленький патч в жизни вообще и там поэтому никакой специализации. Но люди, которые коммитит регулярно, ну точнее не коммитит, а контрибьют регулярно. У них, ну вот есть там какие-то люди, которые разобрались в ВДЕ и контрибьют в ВДЕ. Кто-то разобрался в библиотеках, контрабьют в библиотеке. В компилятор, насколько я знаю, мало кто чего-то вообще присылает, ну это сложно. Большой парок входа. Ну и мы их, кроме всего прочего, стараемся нанимать сразу. потому что глупо не нанять такого человека. Зачем? Он там где-то чем-то другим занимается, если может, наш компилятор комитет.
-
Отлично. Другая очень важная вещь, которую я всегда спрашиваю про языки, это есть ли какие-то отличительные особенности сообщества пользователей Kotlin?
-
Мы старались прямо осознанно строить френдли-сообщество, которое было бы отзывчивым, помогало друг другу и так далее. Этим занимался в основном не я, мои коллеги из JetBrains, Хади Харири очень много сделал для этого, Илья Рженков очень много сделал, еще несколько человек там, прям много участвовал. И в целом отзывы, которые я знаю про котлиновское сообщество, котлиновское сообщество действительно очень дружелюбное. Людям помогают, подсказывают, как чего, там нубские вопросы, не нубские вопросы. В общем, в этом смысле все действительно очень френдли. И я очень доволен атмосферой. То есть у нас такое максимально не токсичное, по крайней мере, до сих пор было сообщество. К сожалению, я просто знаю, что там у некоторых наших товарищей из других языков есть проблемы прямо с токсичными сообществами. Ну, так получилось. У нас, кажется, таких проблем нет. Есть какое-то количество людей... А есть специальные
-
люди, которые этим занимаются?
-
Ну, у нас так или иначе были люди изнутри, которые просто много общались в сообществе, ну и там, частично модерировали. Вот там Хадди и Илья, например, много прям модерировали то, что там происходило. Сейчас я, честно говоря, не знаю, как это организовано. Ну вот на Reddit, например, котлиновский сабреддит, я там все еще числюсь в модераторах, но на самом деле ничего особо не модерирую. Там, например, Джейк Уортон модерирует. Один из, там, через пять, наверное, модерирует. Один из них вот Джейк. Джейк какое-то время проработал в Гугле, но вообще сейчас и до этого в Square. Ну, такой большой, очень влиятельный человек в котлиновской экосистеме, написал много библиотек крутых. Ну, вообще классный парень, вообще, эфигенный инженер совершенно. А там в котлиновском слеке, например, ну, какие-то люди из джетбрейнса так или иначе всегда участвовали и следили, что там происходит. Ну, в разное время разное. на заре Хади и Илья много этим занимались.
-
Котлин— это хороший первый язык программирования?
-
Мне кажется, да. Но тут надо сделать важное замечание, что есть две религии абсолютно разных о том, как вообще хорошо изучать программирование. Одна религия про то, что нужно сначала разобраться в основах и, соответственно, писать на каком-то языке с прямым управлением памятью. То есть, чтобы у тебя был, не знаю, C там или ещё что-нибудь такое, но C уж совсем тяжело, просто он архаичный очень. Ну, там, что-нибудь другое, тоже, ну, там, опять же, у Rust свои ограничения достаточно сложноват. Но, в общем, что-нибудь такое, чтобы можно было потрогать память руками.
-
Понять, как устроены процессоры, вот это всё.
-
Да, чтобы люди понимали, как оно устроено, что такое вообще выделить память, освободить память, почему с этим могут быть вопросы какие-то и так далее. В этом смысле, на самом деле, язык Паскаль, пока был жив, был очень хорошим языком первым. Ну, когда я его преподавал в школе, там, в двухтысячные годы, он, конечно, был уже немножко архаичный, потому что в нем дженериков нет, но с точки зрения вот именно доступа к памяти, очень хороший язык. Ну, Паскаль, понятно, почил, слава богу, но остались какие-то другие альтернативы системные. Ну и, соответственно, противоположная идея, что нужно дать человеку возможность как можно быстрее писать работающий код. И в этом смысле идеальными языками будут какие-то динамические языки, там Python, JavaScript. JavaScript хорош тем, что он, конечно, в браузере дает тебе возможность сразу попробовать. Ну, в общем, что-нибудь такое минимально требовательное к разработчику. Kotlin не является идеалом с точки зрения ни одной из этих религий. Но при этом мне кажется, что в целом идея того, чтобы люди про типы узнавали сразу, она не лишена смысла. То есть, мне кажется, что на самом деле неплохой отправной точкой будет Kotlin. Начинать изучать программирование на Kotlin совершенно нормально. Библиотеки простые, понятные, всё там можно делать. Типов немного, то есть ты пользуешься типами по чуть-чуть и постепенно узнаешь, что это такое. Мне кажется, это неплохой первый язык. Так что вот в этой религии, которая про то, чтобы как можно скорее написать полезную программу, у Котлина есть неплохие перспективы.
-
Окей. Насколько вас требованы Котлин-программисты?
-
Я давно не смотрел никаких данных про это, но когда я смотрел последний раз, был очень большой восходящий тренд. То есть, доля вакансий, которые стали упоминать Котлин, росла прям супербыстро. Насколько я понимаю сейчас, ну, на Android это просто уже дурной тон наджать писать, но и на сервере очень много вакансий, и, ну, последний раз, когда я смотрел аналитику, там, пару лет назад, прям была очень большая производная. Я думаю, что еще будет расти много лет.
-
А кто является конкурентом Котлина? Какой язык программирования?
-
Ну, главный конкурент Котлина, конечно, Java. Java сама по себе развивается, и там много классных вещей случилось. Часть из них приятно напоминает Котлина, это очень мило. В Java, на самом деле, занимаются не только такими вещами, которые можно сделать на уровне компилятора, но и вещами, которые можно сделать только на уровне виртуальной машины. У нас такой возможности не было. То есть там есть несколько очень важных проектов, которые очень долго делаются, но они действительно сильно поменяют жизнь. Project Valhalla. Это важная штука, я надеюсь, что они её доделают. Java действительно серьёзный конкурент, потому что, конечно, она совсем не тот архаичный язык, каким она была 12 лет назад. Мне кажется, что Kotlin всё ещё довольно сильно выигрывает, но конкуренция серьёзная, и Java на самом деле очень здорово рассогналась с точки зрения привнесения изменений в язык. И кажется, что в результате им в целом полегчало. Они стали релизиться каждые полгода. Они, видимо, у нас научились релизить экспериментальные фичи. Соответственно, рано выкатывать, чтобы люди пробовали и так далее. Это всё очень здорово, динамично. Они молодцы в этом смысле. Так что да, Java точно сейчас конкурент номер один для Kotlin. Ну, Swift в каком-то смысле конкурент. Ну, конечно, в гораздо меньшем. То есть мы на iOS у Swift никогда не выиграем, это очевидно.
-
Потому что Apple просто вас задавит.
-
Во-первых, да, а во-вторых, всё-таки Swift— очень хороший язык, специально сделанный для iOS. Но его трудно перегнать, будучи более general-purpose языком. Но, тем не менее, там есть какие-то use cases, и какие-то вещи, возможно, в будущем будут писаться на код-линии из тех, которые сейчас пишутся на Swift, просто потому что кроссплатформенная разработка между мобильными платформами— это достаточно важный use case. С появлением WebAssembly мы начнем гораздо бодрее конкурировать с JavaScript. Ну, WebAssembly с появлением, я так сказал, WebAssembly, конечно, давно существует, но дело в том, что в WebAssembly сейчас делается garbage collector встроенный.
-
Слушай, надо пояснить, WebAssembly— это возможность писать ассемблерный код, то есть компилируемый код для браузеров. То есть если раньше был только JavaScript, то теперь уже можно писать на чем угодно и туда впихивать прямо бинарники.
-
Да, и с garbage collector уже гораздо более viable на WebAssembly. Прямо сейчас то, что сейчас есть в каждом браузере— это возможность именно низкоуровневый код запускать, то есть программы на C, грубо говоря, компилировать для браузера. На C, на Rust, на чем-нибудь таком. Kotlin тоже можно запихать туда коленом с трудом, но он будет тормозить, и это не очень здорово. Делается к нему, соответственно, дополнительная еще функциональность— это автоматическое управление памятью.
-
То есть он будет очень сильно похож на JVM в этом плане?
-
Он будет похож на JVM, но и на любую другую VM.
-
Виртуальную машину.
-
На JavaScript-овую, на какую угодно. Мы прямо тесно сотрудничаем с людьми, которые разрабатывают garbage collector (сборщик мусора). Там в Google, команда в Mozilla, еще где-то. Там просто Kotlin— это один из таргетов. Прямо явным образом он графиколлектор делает так, чтобы Kotlin на нем работал хорошо.
-
Прикольно.
-
И там мы уже поборемся с JavaScript-ом. Ну, с TypeScript-ом, конечно, в первую очередь. Не с JavaScript-ом, с TypeScript-ом. Поборемся за лидерство на этой платформе. Посмотрим, как там будет. Я думаю, что это основные. Мы пытаемся, конечно, и с Python конкурировать в Data Science, но там очень большой разрыв. Но у нас есть очень прикольные проекты Data Science, и там ноутбуки всякие, и крутые библиотеки, которые позволяют делать все достаточно естественно. Там очень хорошая работа сделана, и я думаю, что будет развиваться.
-
Класс. Первый финальный вопрос. Если бы ты разрабатывал язык, зная все, что знаешь сейчас, что бы ты сделал по-другому?
-
Знаешь, главные, наверное, вещи, которые бы я сделал по-другому, они организационные, то есть я бы гораздо агрессивнее в самом начале набирал команду и старался бы гораздо раньше зареализовываться, не через, там, пять с чем-то лет, а года через два. Это такое общеорганизационное, ну и лично про себя я бы, конечно, нашел себе ментора и учился управлять людьми с чьей-то помощью. Это такие самые главные, наверное, именно организационные ошибки. Технически есть какое-то количество неудачных решений, которые в Kotlin остались, дизайновых именно, там есть что поменять. Какие-то вещи, которые нельзя сделать быстро в IDE, синтаксис сделан не очень удобно. Но есть конкретные решения, которые я поменял. Думаю, что с корутинами, тоже было бы там полегче, не так все было бы сложно. И так далее. Там с Kotlin Native можно было сделать все вообще иначе и быстрее, сделать полезный продукт. Много чего можно было сделать иначе. Бесконечное просто пространство и много чего пришлось выучить, так сказать, learn the hard way. То есть мы просто ошиблись и узнали о том, что ошиблись на практике. Собрали грабли. Этого, конечно, много было. С точки зрения, наверное, именно философской такой дизайновой, больших принципиальных вещей, которые стоило бы сделать иначе, я не знаю. То есть вот именно крупные такие философские вещи, которые были положены на основу Котлина, оказались удачными. Мне кажется, что там все было неплохо.
-
Интересно, а сколько людей сейчас работает над Котлиным? Просто число.
-
Когда я уходил, в JetBrains работало.
-
Офигеть.
-
Но это всё вместе, да? То есть это и компилятор, и билдтулы, и IDE, и библиотеки. То есть всё-всё-всё-всё-всё.
-
Очень круто. И это все, скорее всего, довольно высокоуровневые инженеры. Джунов-то на такую работу не возьмешь.
-
На самом деле, в этом смысле у нас очень здорово получилось. У нас очень молодая команда, потому что мы брали много ребят сразу после вуза. Даже еще во время обучения в вузе мы брали ребят со стажировок. В Котлине было много стажеров, и мы самых таких бодрых брали сразу в инженерии, и часть из них у нас выросла до очень высоких позиций.
-
Обычно я спрашиваю, типа, как узнать побольше про эту тему еще? Тебе я задам другой вопрос. Как создать свой язык программирования?
-
придумать дизайн и написать компилятор. Но здесь, мне кажется, очень важно предупредить сразу, что это забавное развлечение, которое доступно любому практически программисту, то есть там никаких суперсложных тем нет. Но, конечно, это заранее стоит понимать, что если вы это делаете в одиночку, это, скорее всего, просто хобби-проект, развлечение по приколу, и ничего популярного у вас не получится. Просто потому что большинство языков, которые разрабатываются, а их там, наверное, каждый день создаётся несколько, Это какие-то, ну вот, проекты на поиграться.
-
Слушай, а посоветуй, пожалуйста, какой-нибудь источник информации. Типа вот если программист послушал, подумал, блин, хочу свой язык забыть. Из чего стоит начать? Прочитать проекты где-то.
-
Очень хорошие интродакторы книжки нету. Есть довольно старые, но вот самый известный, наверное, учебник Dragon Book. Называется он по-русски Компиляторы: принципы, технологии и инструменты,
-
по-моему, вот так. Ссылку на эту книжку мы положим в описании к этому эпизоду.
-
Да. Он там безумно древний, но в целом как бы ничего принципиально не изменилось, конечно, с тех пор. Слава богу, что нет какого-то более простого учебника в этом месте, иначе ещё больше людей тратили бы время на это, а не на какие-то другие более полезные занятия.
-
Всё равно ссылка на эту книжку будет в описании к этому эпизоду.
-
Обязательно, да.
-
Окей, Андрей, спасибо тебе огромное, что выделил время. Это был бесконечно интересный разговор.
-
Да, тебе спасибо огромное. Вопросы очень крутые.
-
Это подкаст Студии Либо-Либо, и мы его сделали вместе с сервисом онлайн-образования Яндекс Практикум. Над подкастом работали редакторка Маша Агличева, продюсерка Настя Медведева, звукорежиссер Юрий Шустицкий. За джингл спасибо Алексею Зеленскому. Спасибо, что вы с нами. Редактор субтитров А.Синецкая Корректор А.Егорова