Встречайте нашего еженедельного спонсора Pusher в Hacker Noon! Pusher создает API-интерфейсы в реальном времени, которые позволяют разработчикам по всему миру быстро добавлять функции общения и совместной работы в свои приложения. Их основной продукт позволяет разработчикам легко создавать такие функции, как уведомления в приложениях, потоки действий, информационные панели в реальном времени, средства отслеживания в реальном времени и многое другое.

Сегодня мы встретимся с евангелистом разработчиков Pusher Зан Маркан, чтобы обсудить состояние Котлина, что заставляет его делать то, что он делает, и что делает космического ковбоя космическим ковбоем. >

Дэвид: Начнем с штата Котлин. Вы недавно провели исследование Kotlin (подробнее о гайках и болтах здесь). С января по март 2018 года вы опросили 2744 человека, чтобы понять, как работает экосистема. Какие результаты опровергли ваши предположения? Какие результаты подтвердили ваши предположения? А какой вывод из того, что происходит с Котлином?

зан: Верно. Мы заметили, что все больше и больше разработчиков используют Kotlin при создании приложений с нашими продуктами, поэтому мы решили копнуть глубже и выяснить, что их мотивирует. Я обнаружил несколько удивительных вещей.

Во-первых, я был искренне удивлен любовью студентов и младших разработчиков к Kotlin. Я ожидал большей разницы между более / менее опытными разработчиками, но новые толпы действительно проникают в Kotlin, поскольку Google положил свое оружие на защиту сообщества.

Еще одна вещь, которая меня удивила, это то, как много людей хотят опробовать функции, которые команда Kotlin пометила как экспериментальные, а именно сопрограммы и поддержку многоплатформенных проектов - примерно по 25–30% каждая.

Результаты опроса более или менее подтвердили мои подозрения о размерах Android - около 80% по данным нашего опроса. Некоторые другие опросы, которые я видел, показывают немного меньше Android, но все же комфортно выше отметки 75%. Отчасти это различие могло быть связано с тем, что моя сеть была в основном ориентирована на Android, но эффект был не таким большим.

Одним из выводов является то, что Kotlin - захватывающий язык, который радует разработчиков.

Это довольно редко (по крайней мере, для чего-то вроде основного языка программирования) и привело к тому, что вокруг всей экосистемы Kotlin сформировалось живое и увлеченное сообщество.

Основная разработка Kotlin осуществляется командой программистов JetBrains из Санкт-Петербурга, Россия. Что еще вы можете рассказать о его основании? А когда вы впервые использовали Котлин?

Насколько мне известно, история Kotlin связана с тем, что JetBrains хотела «улучшенную Java» для своих инструментов разработчика. Взаимодействие и повышение производительности были одними из их основных целей, и ни один другой язык на основе JVM в то время действительно не отвечал всем требованиям - Scala отметила большинство полей, но инструментов просто не было, а время сборки было слишком медленным. для нужд развития JetBrains.

Именно эта идея более функционально совместимой и лучшей Java стала причиной того, что она начала привлекать так много разработчиков Android (включая меня, который делал Android с первых дней).

Несколько лет назад экосистема Android в основном зависела от старой версии Java - странного гибрида между Java 7 и Java 6, в которой не было таких хороших функций, как лямбды, и которая была довольно многословной. Так что люди начали экспериментировать с этой новой вещью, которая казалась хорошо совместимой и позволяла повысить продуктивность (особенно в тех случаях, когда она не все ломала 😅).

Именно это и втянуло меня в это - я впервые услышал об этом в 2014 году, а затем внимательно следил за развитием Kotlin - либо играя с ним в свободное время, либо используя его для быстрого прототипирования вещей. Первый производственный код Kotlin я написал, когда работал над продуктами Pusher Chatkit и Feeds.

Как вы думаете, почему Kotlin обслуживает менее опытных разработчиков? И что мешает этому превратиться в причуду?

Ха! Я не думаю, что он предназначен для менее опытных разработчиков как таковой, на самом деле я вижу в нем довольно похожую группу, которую мы видели в результатах опроса StackOverflow, так что ничего неожиданного с точки зрения развития отрасли.

Мы также увидели, что сначала его использовали в основном опытные (нанятые) разработчики, и только недавно он начал восприниматься студентами и младшими разработчиками.

Я рассматриваю Kotlin как язык, который можно быстро освоить. Существует отличный инструментарий, который позволяет нам работать продуктивно, даже не зная о нем большей части. Он совместим с Java, поэтому любой перенос или миграция может происходить в вашем собственном темпе. И, наконец, и Google, и JetBrains отлично справляются с подготовкой документации и ресурсов, поддерживающих Kotlin.

Что отличало Kotlin от других языков программирования, что, по вашему мнению, способствовало его быстрому распространению? И в более общем плане, что, по вашему мнению, отличает языки программирования, которые получают распространение, от языков программирования, которые стремятся получить распространение?

Поддержка Google и JetBrains определенно помогла. С другой стороны, Google решил официально поддерживать Kotlin в Android только ПОСЛЕ массового толчка со стороны сообщества разработчиков, так что уже был существенный толчок с другой стороны.

Я на самом деле думаю, что это язык, который появился в нужное время в нужном сообществе - сообществе Android, по мере его развития, и люди хотели, чтобы новые инструменты становились все более и более продуктивными. Котлин был там, конечно, у него были свои недостатки, но он был там и достаточно хорош, чтобы люди все сделали правильно.

Как вы видите, как Kotlin эффективно конкурирует и дополняет существующие языки и архитектуры в течение следующих 5 лет или около того?

Если начать с очевидного, то Java довольно проста, и Kotlin уже хорошо ее дополняет. Я считаю, что мы определенно увидим их больше, особенно когда инструментарий объединится и появится несколько инструментов золотого стандарта. Одним из таких инструментов является Arrow, набор инструментов функционального программирования для Kotlin, который был разработан командами Funktionale и Kategory, объединившимися для создания чего-то лучшего, более полного. Я думаю, это будет тенденция.

Что касается других языков программирования - на JVM мы увидим, что происходит со Scala и другими, а за пределами мира JVM еще слишком рано говорить, но я видел несколько многообещающих идей о Kotlin / Native и Kotlin для мульти- платформенные проекты - оба все еще очень экспериментальные, но есть некоторые доказательства концепции, работающие и весьма увлекательные.

Когда Функторы, аппликативы и монады Kotlin в картинках из Альберто Баллано попали на Hacker News, это вызвало интересную дискуссию ... Как вы думаете, что Котлин - это средство доступа?

Звучит гнусно! Это лекарство, открывающее путь к современным языкам программирования - тем, которые делают нас как продуктивными, так и счастливыми.
Он определенно познакомит многих людей с функциональным программированием, особенно с такими вещами, как Arrow, и это может позволить некоторым людям перейти на более жесткие основные языки FP проще.

Еще несколько вещей, которые он может сделать, - это побудить группу разработчиков Android заняться веб-разработкой или собственной разработкой со всей кроссплатформенной поддержкой, а также, поскольку все больше и больше разработчиков выбирают его в качестве своего первого языка программирования, они неизбежно пришли к тому, что Kotlin стал эталоном, по которому они сравнивают все другие языки, и это тоже довольно интересно.

В лингвистике требуется очень много времени, чтобы такой язык, как английский или испанский, получил распространение. И это много диалектов, но использование совершенно нового разговорного языка должно быть менее заметным, чем использование новых языков программного обеспечения. Как вы думаете, достигнем ли мы точки зрелости отрасли, когда количество новых языков программного обеспечения снизится? Или будут появляться новые языки программного обеспечения?

Мы уже видели, как множество отличных языков программирования быстро получили серьезное распространение, и в последние годы на ум приходят Swift, Go, TypeScript и Rust. Каждый из них поддерживается одной (или несколькими) крупной инженерной организацией со значительными ресурсами и существующими сообществами разработчиков.

Каждый из них также почесал определенный зуд своих организаций, и если этот зуд разделяет множество других разработчиков, тогда происходит принятие, и язык набирает обороты, позволяя ему достичь «критической массы». Вот что происходило с каждым из этих языков, о которых я упоминал. Например, Go был запущен, когда Google хотел улучшить параллелизм, и одной из целей Rust было никогда не давать сбоев.

Что касается будущего, я думаю, что определенно появятся новые вычислительные парадигмы, будут разрабатываться новые идеи (кто знает, может быть, когда-нибудь Blockchain действительно станет чем-то) - это не будет очень полезно с нашим существующим инструменты.
Другими примерами являются квантовые вычисления или искусственный интеллект.

Хотя большинство языков в настоящее время претендуют на то, чтобы быть универсальными, это еще не означает, что они одинаково хорошо подходят для всех целей. Мы увидим новые цели, которые потребуют новых языков.

Давайте поговорим о Зан как человеке. Первые два слова биографии на вашем личном сайте гласили: Космический ковбой. Некоторые люди называют вас гангстером любви? Другие называют вас Морисом? Вы олицетворяете помпу любви?

Ха, я люблю эту песню! Возможно, гангстер любви, потому что я не думаю, что кому-то удалось написать Зана с ошибкой в ​​слове Мориса, даже персоналу Starbucks. Я тоже люблю ракеты и до сих пор оплакиваю потерю Светлячка, так что это тоже своего рода тема космического ковбоя.

Настоящая история этого «названия» состоит в том, что несколько лет назад, когда я все еще управлял стартапом, я основал его с несколькими друзьями из университета. Чтобы выглядеть немного более законным, прося денег у незнакомцев (например, привлекая инвестиции), мы сделали визитные карточки для каждого из нас.

Я не разбираюсь в названиях, особенно в C-названиях, когда все делают практически все, поэтому я просто решил пойти другим путем и выбрал Space Cowboy, который примерно так же (не) точен, как и все остальное. По крайней мере, я подумал, что это будет хорошим началом разговора.

Тот факт, что вы спросили об этом, просто доказывает, насколько он хорош для начала разговора.

Говорят, вам нравится IPA в стиле западного побережья. Я сейчас в Колорадо и скучаю по Лагинатису. Какие из 3/5 ваших лучших IPA на западном побережье?

Мне они нравятся очень крепкими и безжалостно охмеленными.

Всякий раз, когда я бываю на Западном побережье, я обязательно беру Pliny the Elder by Russian River и, конечно же, Stone IPA - разумеется, оба проекта. Когда я был ближе к дому, я бы остановился на Jack Hammer от Brewdog.

Что делает хорошего разработчика-проповедника? Как вы стали лучше выполнять свою работу? Что делает технологию Pusher достойной пропаганды?

Самым важным для евангелиста разработчиков (любого человека, связанного с разработчиками в целом) было бы искреннее желание преподавать и делиться знаниями. На самом деле, вероятно, даже важнее быть искренним. Полная остановка. Разработчики - прирожденные детекторы чуши, которые ненавидят, когда их продают.

Это также прекрасное чувство, когда ты знаешь, что помог кому-то стать лучшим разработчиком.

Одна из первых вещей, в которых мне пришлось научиться, - это тайм-менеджмент. Исходя из опыта разработчика, гораздо чаще выделяют большие отрезки времени на выполнение определенных задач. Моя текущая работа намного более динамична, чем эта, и сначала, когда я не ожидал такого изменения или корректировки, это было довольно сложно. Превосходное эссе Пола Грэма о графиках производителей и менеджеров мне очень помогло.

Еще один полезный навык, который я приобрел, - это управление проектами - например, в State of Kotlin большая часть моей работы была связана с настройкой опроса и созданием контента сначала, а затем перешла к более классическому управлению проектами, например, координированию с другие участвовали команды, такие как дизайн и разработчик (они сделали эту работу, не я, еще раз спасибо - вы знаете, кто вы), и, наконец, в распространении информации в различных публикациях, проведении интервью в Интернете.

Технология Pusher известна своей быстрой интеграцией, а также тем, что «просто работает».

Таким образом, проповедовать проповедь - легкий ветерок. У меня даже были люди, которые приходили ко мне на конференцию по мобильной разработке и рассказывали, что их коллеги из веб-команды, использующей Pusher, говорили им, чтобы они рассказали мне, насколько хорош наш продукт Channels - это было захватывающе 😁

В целом, как Kotlin вписывается в реализацию долгосрочного видения Pusher?

Мы уже сделали ставку на Kotlin как на основной язык разработки для наших Android SDK. Мы начали с SDK для новых продуктов - Beams, Chatkit и Feeds, и сейчас нас это вполне устраивает.

Мы также считаем, что в Котлине есть одно из самых интересных и заинтересованных сообществ, и это также одна из причин, по которой мы решили создать опрос State of Kotlin и отчет для него. Мы, безусловно, надеемся, что Kotlin и дальше будет радовать разработчиков и делать их продуктивными, а State of Kotlin способствует дальнейшему его внедрению!

Pusher, наш еженедельный спонсор, создает API-интерфейсы для общения и совместной работы, которые используются в приложениях по всему миру, поддерживаемые легко интегрируемыми SDK для Интернета, мобильных устройств, а также наиболее популярных бэкэнд-стеков. Начать.