Не Java и не Python: самый таинственный язык программирования
Основанная в 2000 году Сергеем Дмитриевым, Евгением Беляевым и Валентином Кипятковым компания JetBrains известна профессионалам прежде всего как производитель интегрированной среды разработки программного обеспечения IntelliJ IDEA, главного рабочего инструмента разработчиков ПО. Первую революцию в этой области произвела компания Borland в 1982 году, выпустив среду разработки Turbo Pascal, которая объединяла в себе текстовый редактор, отладчик и компилятор, что позволяло программистам работать не выходя из программы, многократно улучшая производительность и скорость написания кода.
JetBrains привнесла в технологию много нового. Например, среда понимает код как связанный структурный объект, а не просто как текст. Первая технология, которая сделала JetBrains имя, – ренейминг, переименовывание символов. «Например, у вас есть метод, который называется X, и когда вы его называли X, вам было понятно, что вы хотели сказать, в голове была ассоциативная цепочка, – объясняет Максим Шафиров, – а вот через несколько лет смотрите на это и думаете, что надо было быть мудрее. А теперь уже ничего нельзя сделать, так как этот X уже используется в проекте тысячи раз. И это не единственный метод, который вы назвали X, и вы уже не можете текстовой подстановкой заменить X на что-то более понятное, потому что в разных контекстах X значит разные вещи. А в нашей среде вы сможете это легко сделать. Такое простое и базовое преобразование, но, как ни странно, одно из самых важных для повышения понимаемости кода. И таких преобразований в нашем продукте сотни, если не тысячи». И если изначально JetBrains разрабатывала свою интегрированную среду для Java-разработчиков, то сейчас есть варианты для всех популярных языков и платформ, которые бывают в современном мире разработки. И конечно, для Kotlin.
Котлин. Остров и язык
В 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 интегрирован с другими решениями, он может учитывать активность сотрудников. «Если, например, вы занимаетесь сейчас отладкой программы, то он откладывает все второстепенные сообщения – от ботов и автоматизированных сервисов, – поясняет Максим, – а для человека, который шлет вам личное сообщение, например "пойдем чай попьем" (что, кстати, тоже важно), мы показываем сообщение: "адресат сейчас занят в сессии отладки. Ты точно хочешь его пригласить чай попить?"»
Также компании важно кросс-профессиональное взаимодействие. К примеру, дизайнеры сейчас неплохо разбираются в архитектуре программ и даже в языках программирования и могут многое обсудить с коллегами-кодерами. А программисты тоже стремятся не слепо имплементировать то, что им нарисовали дизайнеры, но и высказать свое мнение. «Поэтому мы считаем, что границы между специальностями должны быть более прозрачными, а обмен – более легким, – говорит Шафиров. – Дизайнер нарисовал какой-то фрейм, программист его видит в деталях, а дизайнер, в свою очередь, понимает, в какую версию программы его фрейм попал. Это не представляется очень сложным и будет оказывать позитивный эффект на работу команды». Стратегия все та же: JetBrains делает продукт, удобный для себя, и он оказывается нужным еще многим.
Уходящий мир
Спрашиваю Максима о программировании будущего, где достаточно сказать, чего ты хочешь, а искусственный интеллект сам напишет для тебя код. Шафиров смеется. «Я не оракул. И машинное обучение, и искусственный интеллект прекрасно работают для определенного класса задач и совсем никак не работают для другого. Я пока не представляю, как можно воплотить в жизнь эту фантастику. Потому что в начале вы сами до конца не знаете, чего хотите. А точная спецификация ваших желаний и есть программа», – объясняет он.
Прямо сейчас в прошлое уходит мир, где код писался и исполнялся на компьютере. Сегодня программы очень сильно распределены, запускаются на большом количестве устройств и взаимодействуют друг с другом в асинхронном режиме. «Мы думаем над тем, как совсем иначе устроить программирование и что мы можем сделать, чтобы этот новый мир стал лучше», – заканчивает Максим.