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>%>%</strong>можно использовать более удобный<strong>|></strong>. Это позволит сократить количество кода и облегчить отладку, однако стоит помнить, что это не полная замена: в некоторых ситуациях всё же понадобится оператор<em>%>%</em>.</p>
9
<p>В мае вышла новая версия R - 4.1.0, сразу с несколькими интересными изменениями. Например, синтаксис анонимных функций стал проще, а в базовом синтаксисе появился новый оператор. Теперь вместо оператора<strong>%>%</strong>можно использовать более удобный<strong>|></strong>. Это позволит сократить количество кода и облегчить отладку, однако стоит помнить, что это не полная замена: в некоторых ситуациях всё же понадобится оператор<em>%>%</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>