С 21 по 26 июня в Москве в Манеже должен был пройти финал Международного командного студенческого чемпионата по программированию(ICPС) — аналог олимпийских игр по информатике. Официальные языки программирования чемпионата — C++, Java,Python и Kotlin. И если первые три известны любому старшекласснику,то последний — только продвинутым специалистам. Чтобы стать в один ряд с классическими языками,новый должен обладать неоспоримыми преимуществами. Особый интерес к этому языку вызывает то,что он разработан компанией JetBrains,основанной нашими соотечественниками,недаром он назван в честь острова Котлин в Финском заливе,на котором расположен город Кронштадт. «Популярная механика» поговорила с CEO JetBrains Максимом Шафировым,бывшим тренером той самой легендарной питерской команды,которая привезла в Россию первый кубок ICPС.
Основанная в 2000 году Сергеем Дмитриевым, Евгением Беляевым и Валентином Кипятковым компания JetBrains известна профессионалам прежде всего как производитель интегрированной среды разработки программного обеспечения IntelliJ IDEA, главного рабочего инструмента разработчиков ПО. Первую революцию в этой области произвела компания Borland в 1982 году, выпустив среду разработки Turbo Pascal, которая объединяла в себе текстовый редактор, отладчик и компилятор, что позволяло программистам работать не выходя из программы, многократно улучшая производительность и скорость написания кода.
В офисе JetBrainsJetBrains привнесла в технологию много нового. Например, среда понимает код как связанный структурный объект, а не просто как текст. Первая технология, которая сделала JetBrains имя, — ренейминг, переименовывание символов. «Например, у вас есть метод, который называется X, и когда вы его называли X, вам было понятно, что вы хотели сказать, в голове была ассоциативная цепочка, — объясняет Максим Шафиров, — а вот через несколько лет смотрите на это и думаете, что надо было быть мудрее. А теперь уже ничего нельзя сделать, так как этот X уже используется в проекте тысячи раз. И это не единственный метод, который вы назвали X, и вы уже не можете текстовой подстановкой заменить X на что-то более понятное, потому что в разных контекстах X значит разные вещи. А в нашей среде вы сможете это легко сделать. Такое простое и базовое преобразование, но, как ни странно, одно из самых важных для повышения понимаемости кода. И таких преобразований в нашем продукте сотни, если не тысячи». И если изначально JetBrains разрабатывала свою интегрированную среду для Java-разработчиков, то сейчас есть варианты для всех популярных языков и платформ, которые бывают в современном мире разработки. И конечно, для Kotlin.
В офисе JetBrainsКотлин. Остров и язык
В 2010-м JetBrains решилась на довольно самонадеянный поступок — сделать идеальный язык программирования. Компании было тесновато с Java, язык развивался медленно, было видно, что концепции, придуманные еще в 1970-е годы, доехали до каких-то современных языков, а до Java — нет, а в JetBrains почти все писалось на Java. Поэтому появилась идея сделать для себя язык, в котором будет все хорошо.
«Языки программирования чем-то похожи на научные статьи. Люди, которые их делают, обычно из академической среды: им интересно попробовать новые концепции, как что будет работать, — объясняет Максим. — А мы из индустрии программирования, «от сохи». И делали язык, который нужен именно разработчикам. Универсальный и достаточно приемлемый для индустрии, чтобы на нем можно было создавать как можно больше приложений и программ».
Есть такое понятие — парадигмальный сдвиг, когда появляются новые выразительные средства, позволяющие программировать в новой парадигме. По мнению Шафирова, таких сдвигов в Kotlin нет, это скорее удачный набор имеющихся свойств из других языков. «Kotlin более удобный, позволяет программисту делать меньше ошибок. Из других языков программирования он взял вещи, которые в хорошем языке должны быть, и убрал те, которых быть не должно. Это и сделало его популярным», — говорит Максим.
Максим Шафиров: «Android появился случайно. Энтузиасты пытались писать на Kotlin код под Android, у них что-то где-то получалось не очень. Они нам говорили — смотрите, вот здесь не работает и здесь не работает. Мы внимательно к этому отнеслись, все поправили. И выяснилось, что Kotlin очень удобен и для Android тоже, хотя мы на это совершенно не рассчитывали».
На самом деле все не совсем так. Например, Kotlin убрал огромную проблему — Null Pointer, пустые ссылки, указывающие «в никуда», что часто приводило к завершению программ. В Kotlin Null-безопасность заложена уже в типовую систему: программа с такой ошибкой просто не откомпилируется.
Еще одно важное преимущество Kotlin — мультиплатформенное программирование, элегантный способ писать код сразу под несколько платформ. «Мне неизвестны языки, в которых это реализовано так же эффективно, — говорит Максим Шафиров. — Ведь это очень важно, поскольку в современном мире устройств и платформ очень много. А тут вы можете переносить код между различными платформами — от мобильных телефонов до компьютеров, от серверов до клиентских приложений». Еще одна фишка Kotlin — сопрограммы-корутины. Изобретенная еще в 1960-х годах концепция начала набирать обороты только сейчас, в связи с развитием синхронного и параллельного программирования.
Многие узнали о Kotlin после того, как Google признал его одним из официальных языков для Android, и существует ошибочное мнение, что язык изначально придумывался именно для мобильных приложений. «Android появился случайно, — поясняет Шафиров. — Энтузиасты пытались писать на Kotlin код под Android, у них что-то где-то получалось не очень. Они нам говорили: смотрите, вот здесь не работает и здесь не работает. Мы внимательно к этому отнеслись, все поправили. И выяснилось, что Kotlin очень удобен и для Android, хотя мы на это совершенно не рассчитывали».
Еще один миф, что язык пришел из спортивного программирования. Но в спорте обычно ценятся другие качества. Там нужно быстро писать программу, которую видите первый и последний раз в жизни. Поэтому такие свойства Kotlin, как поддерживаемость и читаемость, чтобы другие программисты могли понять код или высокоуровневые концепции, не особо востребованы. Тем не менее Kotlin входит в число официальных языков программирования чемпионата ICPС. Дело в том, что JetBrains является одним из главных спонсоров чемпионата, что и понятно: в нем участвуют почти все профильные университеты мира, и лучший способ популяризировать язык придумать сложно. Но и в таком, спортивном варианте Kotlin оказался конкурентным: все больше спортсменов программируют именно на нем.
Просто космос
Максим Шафиров не обычный CEO: помимо руководства большой успешной компанией он и сам пишет код. А сейчас с энтузиазмом трудится над новым проектом компании — Space, интегрированной средой для управления процессами и работы в команде.
Сегодня меняются не только сами программы — они выполняются на большом количестве устройств и взаимодействуют друг с другом. То же самое происходит и с разработкой: программирование давно уже не удел одного сотрудника, а командная работа. Важно, чтобы все вовлеченные в процесс были в курсе того, что происходит. Ведь в создании приложений участвуют не только программисты, а работники очень разных специальностей, а вопрос коммуникации, понимания и прозрачности до сих пор не решен. И Space призван решать этот спектр вопросов. Как технологически (система хранения исходных кодов, система автоматизации сборки и проверки всех изменений), так и коммуникативно. Это и есть следующий шаг в развитии интегрированных сред, которые используются не только для разработки, но и для общения.
В Space тоже появились интересные штуки — например, во встроенном коммуникаторе. Дело в том, и мы все с этим сталкиваемся постоянно, что сообщений приходит все больше, и они сильно отвлекают от работы. С другой стороны, без информации сейчас никуда, и непонятно, что с этим делать. Но, поскольку Space интегрирован с другими решениями, он может учитывать активность сотрудников. «Если, например, вы занимаетесь сейчас отладкой программы, то он откладывает все второстепенные сообщения — от ботов и автоматизированных сервисов, — поясняет Максим, — а для человека, который шлет вам личное сообщение, например «пойдем чай попьем» (что, кстати, тоже важно), мы показываем сообщение: «адресат сейчас занят в сессии отладки. Ты точно хочешь его пригласить чай попить?»»