Свернуть
Не Java и не Python: самый таинственный язык программирования

Не Java и не Python: самый таинственный язык программирования

С 21 по 26 июня в Москве в Манеже должен был пройти финал Международного командного студенческого чемпионата по программированию (ICPС) — аналог олимпийских игр по информатике. Официальные языки программирования чемпионата — C++, Java, Python и Kotlin. И если первые три известны любому старшекласснику, то последний — только продвинутым специалистам. Чтобы стать в один ряд с классическими языками, новый должен обладать неоспоримыми преимуществами. Особый интерес к этому языку вызывает то, что он разработан компанией JetBrains, основанной нашими соотечественниками, недаром он назван в честь острова Котлин в Финском заливе, на котором расположен город Кронштадт. «Популярная механика» поговорила с CEO JetBrains Максимом Шафировым, бывшим тренером той самой легендарной питерской команды, которая привезла в Россию первый кубок ICPС.

Основанная в 2000 году Сергеем Дмитриевым, Евгением Беляевым и Валентином Кипятковым компания JetBrains известна профессионалам прежде всего как производитель интегрированной среды разработки программного обеспечения IntelliJ IDEA, главного рабочего инструмента разработчиков ПО. Первую революцию в этой области произвела компания Borland в 1982 году, выпустив среду разработки Turbo Pascal, которая объединяла в себе текстовый редактор, отладчик и компилятор, что позволяло программистам работать не выходя из программы, многократно улучшая производительность и скорость написания кода.

В офисе JetBrains В офисе JetBrains

JetBrains привнесла в технологию много нового. Например, среда понимает код как связанный структурный объект, а не просто как текст. Первая технология, которая сделала JetBrains имя, — ренейминг, переименовывание символов. «Например, у вас есть метод, который называется X, и когда вы его называли X, вам было понятно, что вы хотели сказать, в голове была ассоциативная цепочка, — объясняет Максим Шафиров, — а вот через несколько лет смотрите на это и думаете, что надо было быть мудрее. А теперь уже ничего нельзя сделать, так как этот X уже используется в проекте тысячи раз. И это не единственный метод, который вы назвали X, и вы уже не можете текстовой подстановкой заменить X на что-то более понятное, потому что в разных контекстах X значит разные вещи. А в нашей среде вы сможете это легко сделать. Такое простое и базовое преобразование, но, как ни странно, одно из самых важных для повышения понимаемости кода. И таких преобразований в нашем продукте сотни, если не тысячи». И если изначально JetBrains разрабатывала свою интегрированную среду для Java-разработчиков, то сейчас есть варианты для всех популярных языков и платформ, которые бывают в современном мире разработки. И конечно, для Kotlin.

В офисе JetBrains В офисе 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 оказался конкурентным: все больше спортсменов программируют именно на нем.

JetBrains

Просто космос

Максим Шафиров не обычный CEO: помимо руководства большой успешной компанией он и сам пишет код. А сейчас с энтузиазмом трудится над новым проектом компании — Space, интегрированной средой для управления процессами и работы в команде.

Сегодня меняются не только сами программы — они выполняются на большом количестве устройств и взаимодействуют друг с другом. То же самое происходит и с разработкой: программирование давно уже не удел одного сотрудника, а командная работа. Важно, чтобы все вовлеченные в процесс были в курсе того, что происходит. Ведь в создании приложений участвуют не только программисты, а работники очень разных специальностей, а вопрос коммуникации, понимания и прозрачности до сих пор не решен. И Space призван решать этот спектр вопросов. Как технологически (система хранения исходных кодов, система автоматизации сборки и проверки всех изменений), так и коммуникативно. Это и есть следующий шаг в развитии интегрированных сред, которые используются не только для разработки, но и для общения.

В Space тоже появились интересные штуки — например, во встроенном коммуникаторе. Дело в том, и мы все с этим сталкиваемся постоянно, что сообщений приходит все больше, и они сильно отвлекают от работы. С другой стороны, без информации сейчас никуда, и непонятно, что с этим делать. Но, поскольку Space интегрирован с другими решениями, он может учитывать активность сотрудников. «Если, например, вы занимаетесь сейчас отладкой программы, то он откладывает все второстепенные сообщения — от ботов и автоматизированных сервисов, — поясняет Максим, — а для человека, который шлет вам личное сообщение, например «пойдем чай попьем» (что, кстати, тоже важно), мы показываем сообщение: «адресат сейчас занят в сессии отладки. Ты точно хочешь его пригласить чай попить?»»

Также компании важно кросс-профессиональное взаимодействие. К примеру, дизайнеры сейчас неплохо разбираются в архитектуре программ и даже в языках программирования и могут многое обсудить с коллегами-кодерами. А программисты тоже стремятся не слепо имплементировать то, что им нарисовали дизайнеры, но и высказать свое мнение. «Поэтому мы считаем, что границы между специальностями должны быть более прозрачными, а обмен — более легким, — говорит Шафиров. — Дизайнер нарисовал какой-то фрейм, программист его видит в деталях, а дизайнер, в свою очередь, понимает, в какую версию программы его фрейм попал. Это не представляется очень сложным и будет оказывать позитивный эффект на работу команды». Стратегия все та же: JetBrains делает продукт, удобный для себя, и он оказывается нужным еще многим.

Уходящий мир

Спрашиваю Максима о программировании будущего, где достаточно сказать, чего ты хочешь, а искусственный интеллект сам напишет для тебя код. Шафиров смеется. «Я не оракул. И машинное обучение, и искусственный интеллект прекрасно работают для определенного класса задач и совсем никак не работают для другого. Я пока не представляю, как можно воплотить в жизнь эту фантастику. Потому что в начале вы сами до конца не знаете, чего хотите. А точная спецификация ваших желаний и есть программа», — объясняет он.

Прямо сейчас в прошлое уходит мир, где код писался и исполнялся на компьютере. Сегодня программы очень сильно распределены, запускаются на большом количестве устройств и взаимодействуют друг с другом в асинхронном режиме. «Мы думаем над тем, как совсем иначе устроить программирование и что мы можем сделать, чтобы этот новый мир стал лучше», — заканчивает Максим.

Статья «На понятном языке» опубликована в журнале «Популярная механика» (№5, Май 2020).