HTML Diff
0 added 0 removed
Original 2026-01-01
Modified 2026-02-21
1 <p><a>#подборки</a></p>
1 <p><a>#подборки</a></p>
2 <ul><li>19 июл 2021</li>
2 <ul><li>19 июл 2021</li>
3 <li>0</li>
3 <li>0</li>
4 </ul><h2>Новости языков программирования за апрель-июнь</h2>
4 </ul><h2>Новости языков программирования за апрель-июнь</h2>
5 <p>Рассказываем, как меняются самые популярные языки программирования и зачем обновляются старички вроде C и C++.</p>
5 <p>Рассказываем, как меняются самые популярные языки программирования и зачем обновляются старички вроде C и C++.</p>
6 <p>Катя Павловская для Skillbox Media</p>
6 <p>Катя Павловская для Skillbox Media</p>
7 <p>В бэкграунде - программирование, французский язык, академическое рисование, капоэйра. Сейчас учит финский. Любит путешествия и Балтийское море.</p>
7 <p>В бэкграунде - программирование, французский язык, академическое рисование, капоэйра. Сейчас учит финский. Любит путешествия и Балтийское море.</p>
8 <p>Раз в квартал мы собираем самые интересные новости из мира языков программирования. С апреля по июнь вышло много обновлений: в этом выпуске мы расскажем, чего ждать от новых версий Kotlin, R, Dart, Rust, Python, Scala и Swift, а также о том, на что ещё стоит обратить внимание.</p>
8 <p>Раз в квартал мы собираем самые интересные новости из мира языков программирования. С апреля по июнь вышло много обновлений: в этом выпуске мы расскажем, чего ждать от новых версий Kotlin, R, Dart, Rust, Python, Scala и Swift, а также о том, на что ещё стоит обратить внимание.</p>
9 <p>В мае вышла новая версия R - 4.1.0, сразу с несколькими интересными изменениями. Например, синтаксис анонимных функций стал проще, а в базовом синтаксисе появился новый оператор. Теперь вместо оператора<strong>%&gt;%</strong>можно использовать более удобный<strong>|&gt;</strong>. Это позволит сократить количество кода и облегчить отладку, однако стоит помнить, что это не полная замена: в некоторых ситуациях всё же понадобится оператор<em>%&gt;%</em>.</p>
9 <p>В мае вышла новая версия R - 4.1.0, сразу с несколькими интересными изменениями. Например, синтаксис анонимных функций стал проще, а в базовом синтаксисе появился новый оператор. Теперь вместо оператора<strong>%&gt;%</strong>можно использовать более удобный<strong>|&gt;</strong>. Это позволит сократить количество кода и облегчить отладку, однако стоит помнить, что это не полная замена: в некоторых ситуациях всё же понадобится оператор<em>%&gt;%</em>.</p>
10 <p>Начиная с этого релиза, R прекращает поддерживать 32-битные версии Windows. Большинство пользователей и так давно сидят на 64-битной операционке - но вдруг у вас старый ноутбук или вы любите запускать старые игрушки на Windows 98.</p>
10 <p>Начиная с этого релиза, R прекращает поддерживать 32-битные версии Windows. Большинство пользователей и так давно сидят на 64-битной операционке - но вдруг у вас старый ноутбук или вы любите запускать старые игрушки на Windows 98.</p>
11 <p><strong>Где почитать подробнее:</strong>на <a>сайте</a>сообщества R или в <a>статье</a>.</p>
11 <p><strong>Где почитать подробнее:</strong>на <a>сайте</a>сообщества R или в <a>статье</a>.</p>
12 <p>У языка вышла новая версия - Kotlin 1.5.0. Она принесла много улучшений - например, стабилизацию некоторых функций и расширение библиотек.</p>
12 <p>У языка вышла новая версия - Kotlin 1.5.0. Она принесла много улучшений - например, стабилизацию некоторых функций и расширение библиотек.</p>
13 <p>Что стабилизировали:</p>
13 <p>Что стабилизировали:</p>
14 <ul><li>поддержку JVM-записей для лучшей совместимости с Java;</li>
14 <ul><li>поддержку JVM-записей для лучшей совместимости с Java;</li>
15 <li>улучшение запечатанных (sealed) классов;</li>
15 <li>улучшение запечатанных (sealed) классов;</li>
16 <li>запечатанные интерфейсы;</li>
16 <li>запечатанные интерфейсы;</li>
17 <li>inline-классы.</li>
17 <li>inline-классы.</li>
18 </ul><p>Также подоспели обновления двух важных библиотек:<em>kotlinx.serialization</em>теперь поддерживает классы значений и числа без знака, а ещё преобразует классы в строки JSON в два раза быстрее. Кстати, обновилась и документация по API этой библиотеки - она стала проще и понятнее.</p>
18 </ul><p>Также подоспели обновления двух важных библиотек:<em>kotlinx.serialization</em>теперь поддерживает классы значений и числа без знака, а ещё преобразует классы в строки JSON в два раза быстрее. Кстати, обновилась и документация по API этой библиотеки - она стала проще и понятнее.</p>
19 <p><em>Kotlinx-datetime</em>теперь поддерживает<em>kotlinx.serialization</em>, а в класс<em>DateTimePeriod</em>встроена нормализация: это поможет избежать неточностей в значениях компонентов.</p>
19 <p><em>Kotlinx-datetime</em>теперь поддерживает<em>kotlinx.serialization</em>, а в класс<em>DateTimePeriod</em>встроена нормализация: это поможет избежать неточностей в значениях компонентов.</p>
20 <p>У Dart, языка для Flutter, созданного компанией Google, тоже вышла новая версия. Что в ней интересного?</p>
20 <p>У Dart, языка для Flutter, созданного компанией Google, тоже вышла новая версия. Что в ней интересного?</p>
21 <ul><li><strong>Алиасы (псевдонимы).</strong>Одна из самых долгожданных возможностей теперь позволяет присваивать псевдонимы не только функциям. Чаще всего алиасы используют, чтобы дать типу новое, более короткое и удобное название или сделать код лаконичнее.</li>
21 <ul><li><strong>Алиасы (псевдонимы).</strong>Одна из самых долгожданных возможностей теперь позволяет присваивать псевдонимы не только функциям. Чаще всего алиасы используют, чтобы дать типу новое, более короткое и удобное название или сделать код лаконичнее.</li>
22 <li><strong>Обновление Dart FFI</strong>, механизма для вызова кода C. Теперь в FFI можно работать с inline-массивами и упакованными (packed) структурами.</li>
22 <li><strong>Обновление Dart FFI</strong>, механизма для вызова кода C. Теперь в FFI можно работать с inline-массивами и упакованными (packed) структурами.</li>
23 <li><strong>Улучшение производительности:</strong>в новой версии можно значительно уменьшить размер метаданных при использовании ключа<em>--split-debug-info</em>.</li>
23 <li><strong>Улучшение производительности:</strong>в новой версии можно значительно уменьшить размер метаданных при использовании ключа<em>--split-debug-info</em>.</li>
24 <li><strong>Обновление null-безопасности</strong> - эта новинка появилась ещё в мартовском релизе и быстро стала популярной. Инструкцию по миграции приложения на null-безопасность можно прочитать на <a>официальном сайте</a>.</li>
24 <li><strong>Обновление null-безопасности</strong> - эта новинка появилась ещё в мартовском релизе и быстро стала популярной. Инструкцию по миграции приложения на null-безопасность можно прочитать на <a>официальном сайте</a>.</li>
25 </ul><p><strong>Где почитать подробнее:</strong>в официальном<a>блоге</a>Dart на Medium.</p>
25 </ul><p><strong>Где почитать подробнее:</strong>в официальном<a>блоге</a>Dart на Medium.</p>
26 <p>Вышло большое обновление языка - Scala 3. Новая версия принесла много изменений; а так как на Scala пишут код и в функциональной, и в ООП-парадигме, одновременно обновились абстракции, система типов и функции, связанные с ООП.</p>
26 <p>Вышло большое обновление языка - Scala 3. Новая версия принесла много изменений; а так как на Scala пишут код и в функциональной, и в ООП-парадигме, одновременно обновились абстракции, система типов и функции, связанные с ООП.</p>
27 <p>В этом обновлении разработчики сосредоточились на небольших изменениях, которые изменят работу с языком к лучшему, и не стали пилить могучие фичи.</p>
27 <p>В этом обновлении разработчики сосредоточились на небольших изменениях, которые изменят работу с языком к лучшему, и не стали пилить могучие фичи.</p>
28 <p>Вот некоторые новинки:</p>
28 <p>Вот некоторые новинки:</p>
29 <ul><li>у клауз (clauses) теперь можно указывать тип;</li>
29 <ul><li>у клауз (clauses) теперь можно указывать тип;</li>
30 <li>скобки стали опциональными, появился новый синтаксис для управляющих конструкций, обновился и синтаксис implicits;</li>
30 <li>скобки стали опциональными, появился новый синтаксис для управляющих конструкций, обновился и синтаксис implicits;</li>
31 <li>теперь перечисления - это новый стандарт для алгебраических типов данных;</li>
31 <li>теперь перечисления - это новый стандарт для алгебраических типов данных;</li>
32 <li>методы расширения встроили в язык;</li>
32 <li>методы расширения встроили в язык;</li>
33 <li>типажи (трейты) стали ближе к классам и получили параметры - а значит, стали гораздо мощнее.</li>
33 <li>типажи (трейты) стали ближе к классам и получили параметры - а значит, стали гораздо мощнее.</li>
34 </ul><p><strong>Где почитать подробнее:</strong>в <a>статье</a>на сайте Scala.</p>
34 </ul><p><strong>Где почитать подробнее:</strong>в <a>статье</a>на сайте Scala.</p>
35 <p>У Rust в мае вышло сразу два обновления и анонс Rust 2021 Edition.</p>
35 <p>У Rust в мае вышло сразу два обновления и анонс Rust 2021 Edition.</p>
36 <p>В <strong>Rust 1.52.0</strong>стабилизировали часть методов и появилась поддержка Clippy: разработчики языка исправили баг, из-за которого Clippy не получалось запустить.</p>
36 <p>В <strong>Rust 1.52.0</strong>стабилизировали часть методов и появилась поддержка Clippy: разработчики языка исправили баг, из-за которого Clippy не получалось запустить.</p>
37 <p>В <strong>Rust 1.52.1</strong>команда фиксила проблемы, возникшие из-за нового метода верификации. Разработчики рекомендуют обновить версию или отключить у себя инкрементальную компиляцию, чтобы не попасть под раздачу.</p>
37 <p>В <strong>Rust 1.52.1</strong>команда фиксила проблемы, возникшие из-за нового метода верификации. Разработчики рекомендуют обновить версию или отключить у себя инкрементальную компиляцию, чтобы не попасть под раздачу.</p>
38 <p><strong>Планы на будущее:</strong>релиз новой версии Rust обещают выкатить 21 октября. В ней расширится стандартная библиотека, итерация массивов станет разрешённым методом: сейчас её можно провести только со ссылкой на исходный массив, но начиная с версии 1.53 можно будет провести итерацию самого массива.</p>
38 <p><strong>Планы на будущее:</strong>релиз новой версии Rust обещают выкатить 21 октября. В ней расширится стандартная библиотека, итерация массивов станет разрешённым методом: сейчас её можно провести только со ссылкой на исходный массив, но начиная с версии 1.53 можно будет провести итерацию самого массива.</p>
39 <p><strong>Где почитать подробнее:</strong>в блоге Rust - обновление<a>1.52.0</a>,<a>1.52.1</a>, планы на версию<a>1.53</a>.</p>
39 <p><strong>Где почитать подробнее:</strong>в блоге Rust - обновление<a>1.52.0</a>,<a>1.52.1</a>, планы на версию<a>1.53</a>.</p>
40 <p>Python 3.10 всё ещё в разработке, но недавно вышла бета-версия Python 3.10.0b2. Всего бета-версий запланировано четыре, и это - уже вторая. Что в ней нового по сравнению с Python 3.9?</p>
40 <p>Python 3.10 всё ещё в разработке, но недавно вышла бета-версия Python 3.10.0b2. Всего бета-версий запланировано четыре, и это - уже вторая. Что в ней нового по сравнению с Python 3.9?</p>
41 <ul><li>В прошлых версиях можно было определить тип вызываемого объекта несколькими способами, но ни один из них не позволял перенести параметры на другой объект. Теперь для этого существуют две новые команды:<em>typing.ParamSpec</em>и <em>typing.Concatenate</em>.</li>
41 <ul><li>В прошлых версиях можно было определить тип вызываемого объекта несколькими способами, но ни один из них не позволял перенести параметры на другой объект. Теперь для этого существуют две новые команды:<em>typing.ParamSpec</em>и <em>typing.Concatenate</em>.</li>
42 <li>Упрощённый синтаксис для Union: теперь можно строить синтаксис по схеме X | Y вместо использования<em>typing.Union</em>.</li>
42 <li>Упрощённый синтаксис для Union: теперь можно строить синтаксис по схеме X | Y вместо использования<em>typing.Union</em>.</li>
43 <li>Для работы потребуется OpenSSL не ниже версии 1.1.</li>
43 <li>Для работы потребуется OpenSSL не ниже версии 1.1.</li>
44 <li>Нумерация строк для отладки станет точнее и надёжнее.</li>
44 <li>Нумерация строк для отладки станет точнее и надёжнее.</li>
45 <li>Появятся алиасы (псевдонимы) для типов.</li>
45 <li>Появятся алиасы (псевдонимы) для типов.</li>
46 </ul><p>Вышла первая бета новой версии Swift - 5.5. С ней приходит и множество изменений. Вот некоторые из них.</p>
46 </ul><p>Вышла первая бета новой версии Swift - 5.5. С ней приходит и множество изменений. Вот некоторые из них.</p>
47 <ul><li>Появятся<strong>асинхронные функции</strong>. Подобно JavaScript и C#, такие функции будут создаваться с помощью команды<em>async</em>и вызываться с помощью<em>await</em>. Это поможет значительно сократить количество кода и сделать его проще и читаемее.</li>
47 <ul><li>Появятся<strong>асинхронные функции</strong>. Подобно JavaScript и C#, такие функции будут создаваться с помощью команды<em>async</em>и вызываться с помощью<em>await</em>. Это поможет значительно сократить количество кода и сделать его проще и читаемее.</li>
48 <li><strong>Свойства только для чтения</strong>теперь будут поддерживать ключевые слова<strong>async</strong>и <strong>throws</strong>.</li>
48 <li><strong>Свойства только для чтения</strong>теперь будут поддерживать ключевые слова<strong>async</strong>и <strong>throws</strong>.</li>
49 <li><strong>Структурированный параллелизм:</strong>появится много новых возможностей для работы с параллельными операциями. Эти возможности в том числе работают с изменениями, связанными с добавлением<em>await</em>.</li>
49 <li><strong>Структурированный параллелизм:</strong>появится много новых возможностей для работы с параллельными операциями. Эти возможности в том числе работают с изменениями, связанными с добавлением<em>await</em>.</li>
50 <li>Добавились<strong>акторы.</strong></li>
50 <li>Добавились<strong>акторы.</strong></li>
51 </ul><p>На примеры использования нововведений можно посмотреть<a>здесь</a>.</p>
51 </ul><p>На примеры использования нововведений можно посмотреть<a>здесь</a>.</p>
52 <p>В апреле прошла онлайн-встреча комитета по стандартизации С++. На ней решалась судьба некоторых недостатков и особенностей языка: что стоит добавить в новый стандарт С++ 23, а что нет.</p>
52 <p>В апреле прошла онлайн-встреча комитета по стандартизации С++. На ней решалась судьба некоторых недостатков и особенностей языка: что стоит добавить в новый стандарт С++ 23, а что нет.</p>
53 <p><strong>Что решили добавить?</strong></p>
53 <p><strong>Что решили добавить?</strong></p>
54 <ul><li><em>Deducing this</em>- механизм для определения качеств функции. Разработчики надеются, что это поможет сократить повторения кода, а программисты смогут работать с рекурсивными лямбдами и функциями значения.</li>
54 <ul><li><em>Deducing this</em>- механизм для определения качеств функции. Разработчики надеются, что это поможет сократить повторения кода, а программисты смогут работать с рекурсивными лямбдами и функциями значения.</li>
55 <li>Ограничение нелитеральных констант в функциях<em>constexpr</em>.</li>
55 <li>Ограничение нелитеральных констант в функциях<em>constexpr</em>.</li>
56 </ul><p><strong>Что решили оставить?</strong></p>
56 </ul><p><strong>Что решили оставить?</strong></p>
57 <ul><li>Ограничения локальных классов: несмотря на снятие некоторых ограничений локальных классов, они всё ещё не могут быть шаблонами или содержать их.</li>
57 <ul><li>Ограничения локальных классов: несмотря на снятие некоторых ограничений локальных классов, они всё ещё не могут быть шаблонами или содержать их.</li>
58 </ul><p><strong>Где почитать подробнее:</strong>в <a>отчёте</a>со встречи.</p>
58 </ul><p><strong>Где почитать подробнее:</strong>в <a>отчёте</a>со встречи.</p>
59 <ul><li>В апреле стандартизация C# перешла в открытый доступ на <a>dotnet/csharpstandard</a>.</li>
59 <ul><li>В апреле стандартизация C# перешла в открытый доступ на <a>dotnet/csharpstandard</a>.</li>
60 <li>Вышла<a>новая версия</a>Erlang.</li>
60 <li>Вышла<a>новая версия</a>Erlang.</li>
61 <li>Команда Clojure выкатила большое<a>обновление</a>библиотеки Pathom: подшаманили систему поиска ошибок в атрибутах, интеграцию распределённых систем Pathom и многое другое. А ещё - команда выложила статью с итогами года: Clojure всё ещё остаётся в первую очередь языком стартапов, а его пользователи особенно ценят функциональный стиль.</li>
61 <li>Команда Clojure выкатила большое<a>обновление</a>библиотеки Pathom: подшаманили систему поиска ошибок в атрибутах, интеграцию распределённых систем Pathom и многое другое. А ещё - команда выложила статью с итогами года: Clojure всё ещё остаётся в первую очередь языком стартапов, а его пользователи особенно ценят функциональный стиль.</li>
62 <li>В Golang теперь доступна<a>бета-версия фаззинга</a>.</li>
62 <li>В Golang теперь доступна<a>бета-версия фаззинга</a>.</li>
63 </ul><a><b>Бесплатный курс по Python ➞</b>Мини-курс для новичков и для опытных кодеров. 4 крутых проекта в портфолио, живое общение со спикером. Кликните и узнайте, чему можно научиться на курсе. Смотреть программу</a>
63 </ul><a><b>Бесплатный курс по Python ➞</b>Мини-курс для новичков и для опытных кодеров. 4 крутых проекта в портфолио, живое общение со спикером. Кликните и узнайте, чему можно научиться на курсе. Смотреть программу</a>