Привет, Хабр! Мы в компании Friflex запустили подкаст «Гости из IT». Вместе с экспертами из разных областей IT разбираемся в технологиях и обсуждаем, как они меняют нашу жизнь и работу.
Сегодня размышляем про Kotlin. Почему его любят, обвиняют в сахарности и не могут заключить в рамки классического определения. Своими мыслями делятся эксперты по Kotlin: Александр Нозик, директор центра научного программирования и руководитель российской Kotlin-группы, и Александр Соколинский, популяризатор Kotlin в комьюнити разработчиков. А модерируют дискуссию блогер Алексей Гладков и Петр Чернышев из Friflex.
Что такое Kotlin?
Александр Соколинский: Язык Kotlin получил название в честь острова Котлин, который находится недалеко от Санкт-Петербурга. В JetBrains (компания-разработчик Kotlin) Kotlin называют default language. Если нужно сделать какую-то задачу, то, скорее всего, ее можно написать на этом языке. Это может быть что угодно: телеграм-боты, приложение для iOS…
Александр Нозик: Бесполезно давать Kotlin классическое определение — статически типизированный, объектно-ориентированный язык программирования. Потому что вы можете писать в разных парадигмах на всех современных языках. Даже на несчастном C++. Вы можете заниматься функциональным программированием на Python. Только у Kotlin шире возможности.
Есть два разных Kotlin. Первый — как better Java. Вы берете обычную объектно-ориентированную java-программу и переписываете ее на более удобном языке. Это то, что люди называют сахаром. Все проще пишется и легче собирается.
А есть idiomatic Kotlin, он ближе к функциональным языкам. Его дизайн библиотек, дизайн API, подход к проектированию и модуляризации отличается от Kotlin Java. Можно писать как на функциональном, и как на процедурном.
Вообще проще назвать области, где Kotlin не применяют. Например, MBD (Model-based definition). Потому что Kotlin — это безопасный язык со сборкой мусора. А на MBD это часто мешает.
Что происходит с Kotlin?
Александр Соколинский: Kotlin играет большую роль в «мобилках». Но JetBrains и профессиональное сообщество прикладывают много усилий, чтобы Kotlin ассоциировался не только с мобильной разработкой. Если посмотреть опросы профессионального сообщества, то только половина опрошенных считает, что основная деятельность Kotlina — «мобилки. Тут много бэкэнда, просто его не видно.
Если говорить о перспективе, то Kotlin не единственный. У нас есть много языков последнего поколения: Swift, Rust, Julia, TypeScript.
Kotlin выделяется двумя вещами. Первый фокус вынесен в лозунг языка, его девиз — прагматичность. Этот язык разработан не для того, чтобы реализовать языковые фичи, а чтобы быть удобным. Ну и вторая вещь — interoperability. Это возможность прямого и обратного вызова с другими языками. В TypeScript эта фишка тоже есть, но у Kotlin она лучше реализована.
Можно ли переманить разработчиков на Kotlin?
Алексей Гладков: Все зависит от языка, с которого переманивать. Если с Java, то тут все очень просто. Kotlin — это более удобная Java. Он позволяет сделать все то же самое, с теми же затратами производительных ресурсов. При этом писать гораздо быстрее и удобнее.
Если мы говорим про Swift, нельзя забывать, что он привязан к iOS. А Kotlin — более свободный язык.
А вот разработчиков на Rust или SciTE переманить не удастся, потому что в системном программировании у Kotlin нет лидирующих позиций.
Kotlin — самый сахарный язык?
Александр Соколинский: При проектировании в Kotlin не добавляют фичи просто ради удобства. Фичи в Kotlin вписываются в общее направление языка, комбинируются между собой и создают единую философию, систему идиом. Поэтому я считаю, что обвинения Kotlin в сахарности несправедливы.
Если в Kotlin будут мультиресиверы, то другие, более сахарные языки, не появятся.
Александр Нозик: Часто слышу такой аргумент в отношении Kotlin: «Смотрите, тут синтаксический сахар». Но это неправда. Я много занимаюсь мультиплатформенными библиотеками и дизайном API.
Мне говорят: «Да, эти вещи можно написать на Java». А я отвечаю, что любую программу можно писать на ассемблере. Программа, написанная на низкоуровневом языке, например, на С или на ассемблере, совсем по-другому выглядит и по-другому организована. Так и у программы, написанной с использованием фич Kotlin, абсолютно другой дизайн модулей и вашего приложения.
Например, в мобильной разработке все молятся на dependency injection (DI). В бэкенде DI встречается гораздо реже. Потому что фичами Kotlin можно заменить то, что делается на уровне библиотек в мобильной разработке. Не буду лезть в эту глубокую кроличью нору, но я абсолютно не согласен с мнением, что фичи языка — это синтаксический сахар.
_____________________
В чем основная идеология Kotlin? Как перейти на него с другого языка, и причем тут дядюшка Боб? Смотрите в полной версии подкаста.
И слушайте эпизод подкаста про Kotlin на всех стриминговых платформах:
P.S. Мы ведем дружелюбный канал про Flutter в Telegram. Присоединяйтесь!