В этом новом десятилетии все отрасли подводят итоги и смотрят вперед. SegmentFault, как вертикальное средство массовой информации для сообщества разработчиков и технологической отрасли, всегда интересовался развитием отрасли и связанными с ней разработками. Недавно он собрал прогнозы и перечень основных платформ и сообществ в области технологий.

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

питон

Самая большая новость для Python в этом году заключается в том, что Гвидо ван Россум, отец Python, официально ушел в отставку и передал Python Руководящему комитету Python. До сих пор в этой передаче власти не было «труда», поскольку Эрик Маттес, автор «Ускоренного курса Python», считает это нормальным, потому что «Гвидо будет держать себя в роли А в сообществе. «Кроме того, поддержка Python 2.7 прекратится в 2020 году, что, вероятно, вызовет дискомфорт у тех, кто придерживается Python 2.7.

Несмотря на это, Python по-прежнему остается предпочтительным языком для науки о данных.

Для Маттеса одним из захватывающих аспектов Python является то, что «в сообществе родились различные интересные и критические проекты, и сообщество так долго сознательно создавалось». Члены Руководящего комитета Python и ядро ​​разработчика CPython Кэрол Уиллинг также отмечают эти проекты, такие как служба Binder, которая способствует воспроизводимым исследованиям путем создания исполняемых сред в Jupyter Notebook, особенно когда они превышают свои первоначальные цели.

Она отметила, что «биндеры широко использовались в обучающих семинарах и учебных пособиях на многих конференциях по Python в прошлом году». Уиллинг также обратился к проектам CircuitPython и Mu, спросив: «Кому не нравятся аппаратные средства, мигающие светодиоды, датчики и использование удобного редактора Mu, разве это не отличный выбор как для взрослых, так и для детей? “

Ява

В этом году в основном хорошие новости для Java. «Слухи о кончине Java снова стали желаемым за действительное критиками платформ», — пояснил Бен Эванс.

Но и здесь не все гладко. Как мы указывали в прошлом году, Java 11 была выпущена в сентябре 2018 года и содержит множество новых функций, в том числе множество важных функций, которые имеют явное преимущество при использовании контейнеров. Однако, согласно опросу JetBrains, введение этой новой версии не принесло широкого распространения, и более 80% разработчиков все еще используют Java 8.

Эванс задается вопросом: «Означает ли это, что люди не используют Java в контейнерах, как мы это знаем? Или люди просто интересуются преимуществами использования Java 11 в контейнерах?»

Несмотря на медленное внедрение, шестимесячный цикл выпуска Java продолжает развиваться: Java 12 вышла в марте 2019 года, а Java 13 вышла в сентябре. По словам Триши Джи, это действительно начинает показывать свою ценность:

Каждая версия маленькая, но предсказуемая. Хотя не все из них имеют захватывающие новые языковые изменения, вы можете видеть, что язык неуклонно движется вперед.

Кроме того, он поддерживает идею функции предварительного просмотра, и я думаю, что наши выражения переключения работают очень хорошо — разработчики должны попытаться использовать эту функцию и предоставить реальную обратную связь, основанную на ощущении использования, а не на абстрактной, концептуальной идее обратной связи. В Java 13 синтаксис выражений переключателей немного изменился, что возможно, потому что это функция предварительного просмотра и не имеет фиксированных настроек.

Когда Oracle перевела Java SE на модель на основе подписки, 2019 год преподнес еще один сюрприз. Но, как отмечает Марк Лой, соавтор книги «Изучение Java», «по мере роста энтузиазма в отношении OpenJDK все сообщество Java сталкивается с «неудачными» изменениями».

Что касается только что наступившего 2020 года, Эванс предполагает, что в 2020 году можно продолжать обращать внимание на тенденции развития в 2019 году:

Как мы подойдем к серийной версии проекта Valhalla? Будут ли работать инкрементные стратегии, обеспечивающие сопоставление с образцом и алгебраические типы данных (Project Amber)? Оправдает ли Quarkus свои обещания и ранние убеждения фанатов? Станет ли 2020 год важным шагом для Kotlin в развитии Android?

Это захватывающее время, мы переходим к чему-то новому, и происходит много всего.

Котлин

В мае 2019 года Google объявил, что Kotlin теперь является предпочтительным языком для разработчиков приложений для Android, предполагая, что этот язык получил широкое распространение.

Хотя многие разработчики Android еще не полностью перешли на Kotlin, те, кто уже перешел, знают о преимуществах, которые он дает. Авторы Head First Kotlin Дон и Дэвид Гриффитс делятся некоторыми причинами подъема Kotlin:

Неудивительно, что у Kotlin хороший уровень инструментальной поддержки языков, созданных IDE-компаниями. Экспериментальный DSL для кодовых контрактов позволяет разработчикам предоставлять гарантии поведения кода. Есть ли у вашей функции побочные эффекты? Гарантировано ли возврат ненулевого значения? Контракты кода позволяют вам давать эти обещания, и компилятор может использовать их для ослабления проверок во время компиляции.

Теперь барьеры между различными платформами Kotlin также разрушаются. Квалификатор «ожидаемый»/«фактический» облегчает разработчикам написание кода, совместимого со средами Java/Native/JS. Поддержка сериализации означает, что данные JSON проще преобразовывать в объекты Kotlin и наоборот.

Надеюсь увидеть, что Kotlin продолжит удивительный рост — и не только в Android. Глава группы поддержки разработчиков JetBrains Хади Харири отмечает, что успех Kotlin/Everywhere позволил людям изучить основы и лучшие практики Kotlin в Android, Google Cloud Platform и многоплатформенной разработке, а также используйте данные, чтобы проиллюстрировать:

«С мая по ноябрь мы успешно достигли 30 000 человек в 86 странах. В 2019 году билеты на KotlinConf были распроданы три года подряд, и в нем приняли участие более 1700 человек. Это особенно признак того, что интерес разработчиков и их принятие растут. “

Go

Когда Gophers оглядывается на 2019 год, они могут вспомнить легендарную историю о том, как попробовали это предложение. Разработчик и писатель Go Джон Боднер объясняет:

Одна из самых распространенных жалоб на Go заключается в том, что обработка ошибок слишком многословна. Поэтому в начале июня разработчики ядра Go предложили добавить новую встроенную функцию под названием try. Теперь открыт вопрос GitHub для обсуждения этой новой функции. В течение месяца было около 800 отзывов, большинство из которых были отрицательными. Те, кто выступает против этой новой функции, считают, что это изменение делает код слишком «невероятным» и затемняет логический поток. Изучив отзывы, команда Go отметила предложение как завершенное и закрыла его 16 июля.

Что примечательно в этом процессе, так это не отказ функции, а, как описывает это Боднер, «то, как происходит процесс: функция предлагается, обсуждение уважается, но многие люди думают, что изменение не совместимо с Go. стиль. Наконец, язык управления Людей решает уважать большинство. Именно это имеют в виду разработчики, когда говорят о сообществе. “

2020 год должен сделать спецификацию контрактов Go более ясной. Это известное предложение Generics.

По словам Боднера, «кажется, что Go использует несколько иной подход к дженерикам, чем другие языки, но он вписывается в идиоматическое использование Go». Надеюсь, он сохранит свой идиоматический стиль Go, добавив полезные функции для разработчиков на других языках.

Ржавчина

Мы поговорили с соавтором Джимом Блэнди из Programming Rust, чтобы узнать, как изменился его взгляд на прогресс Rust в 2019 году.

В прошлом году он отметил: «Rusty уже давно поддерживает асинхронное программирование в той или иной форме, но асинхронные функции предоставляют такой код с синтаксисом, который является значительным улучшением по сравнению с предыдущими продуктами Rust».

Сбылись ли его надежды на улучшение синтаксиса Rust? Да, в конце: Бренди объяснил, что синтаксис asynchronous/wait не стал стабильным до версии 1.39, выпущенной 7 ноября 2019 года.

«Изначально мы надеялись, что синтаксис асинхронности/ожидания может стать частью Rust 2018, но потребовалось больше времени, чтобы добиться цели». Тем не менее, он возлагал большие надежды на то, что Rust значит для Rust в 2020 году: «Интеграция асинхронности в язык позволяет программе проверки заимствования знать о ваших действиях, поэтому асинхронный код выглядит как идиоматический Rust.

Сообщество Rust также в восторге от WebAssembly, в этом году WebAssembly стал теоретической заменой C/FFI для экосистемы, требующей переносимых высокопроизводительных модулей. Как отмечает эксперт по Rust Натан Стокс: «Вы также можете использовать легкие песочницы!» Что больше всего впечатлило Стокса, так это то, «сколько теорий были успешно прототипированы и доказаны».

Раньше я использовал WebAssembly исключительно как цель компиляции для запуска кода, отличного от языка JS, в браузере. Возможность использовать веб-сборки с любого языка вне браузера потрясает.

Быстрый

Самая большая история, которая произошла в Swift в прошлом году, — это выпуск SwiftUI, последней платформы Apple для разработки пользовательских интерфейсов на всех устройствах Apple, и Swift-версии TensorFlow.

Как объяснила Тимира Джеймс, декларативный характер SwiftUI привлек широкое внимание разработчиков и считается будущим преемником UIKit.

Что касается Swift от TensorFlow, Баттфилд-Аддисон называет его «фундаментально новым использованием Swift». Он объяснил: «Swift всегда был отличным языком разработки приложений и системного программирования, а также новым языком веб-разработки и серверной разработки, но теперь, благодаря Swift для TensorFlow, это также мощная среда машинного обучения». Причины следующие:

Swift для TensorFlow был разработан командой, в которую входил Крис Латтнер, первоначальный создатель Swift, и предоставил (или предоставит после завершения) все необходимое для машинного обучения и численных вычислений. Самое удивительное, что базовая структура компилятора Swift и дизайн позволяют полностью поддерживать первоклассную поддержку отличительного программирования с автоматически выделяемыми функциями.

Полное программирование с дискриминацией по языку сделает возможными ранее невозможные вещи: лучший пример — возможность построить нейронную сеть, используя стандартные программные отладчики для постепенного обратного распространения и отладки производных классов.

Swift для TensorFlow также обеспечивает полную поддержку Python для Swift, позволяя специалистам по обработке и анализу данных смешивать и сопоставлять полезные и знакомые им платформы Python с понятным кодом Swift.

Забегая вперед, Джеймс и Баттфилд-Аддисон рады видеть новое направление, в котором движется Свифт. Джеймс отмечает, что «Swift быстро адаптируется в различных сообществах и стеках за пределами мобильного сообщества, особенно в бессерверном пространстве», — называет Баттфилд-Аддисон «потрясающие фреймворки для веб-разработки (такие как Kitura) и множество замечательных фреймворков для определенных доменов… таких как как SwiftPlot, которая является родной Swift-версией Matplotlib, вездесущей в Python. “

Как выглядит будущее?

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

У некоторых языков могут быть крупные релизы в 2020 году. Например, C++20 выйдет этим летом, а Scala 3.0 ожидается к концу 2020 года. Но понятно, что даже самые незначительные изменения могут вызвать огромные волны в повседневной жизни программистов.