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><p>Новинки для Haskell-разработчиков, гайды по Template Haskell, тестированию и симуляции хеш-таблиц.</p>
4 </ul><p>Новинки для Haskell-разработчиков, гайды по Template Haskell, тестированию и симуляции хеш-таблиц.</p>
5 <p>В бэкграунде - программирование, французский язык, академическое рисование, капоэйра. Сейчас учит финский. Любит путешествия и Балтийское море.</p>
5 <p>В бэкграунде - программирование, французский язык, академическое рисование, капоэйра. Сейчас учит финский. Любит путешествия и Балтийское море.</p>
6 <p>Каждую неделю мы отбираем для вас несколько свежих материалов из англоязычного интернета. В этом выпуске - самое интересное о Haskell.</p>
6 <p>Каждую неделю мы отбираем для вас несколько свежих материалов из англоязычного интернета. В этом выпуске - самое интересное о Haskell.</p>
7 <p><strong>Зачем читать:</strong>узнать о преимуществах языка и сравнить его с Python (ага, он же теперь лидер TIOBE, с чем ещё сравнивать?).</p>
7 <p><strong>Зачем читать:</strong>узнать о преимуществах языка и сравнить его с Python (ага, он же теперь лидер TIOBE, с чем ещё сравнивать?).</p>
8 <p><strong>Где читать:</strong>на <a>Medium</a>.</p>
8 <p><strong>Где читать:</strong>на <a>Medium</a>.</p>
9 <p>Haskell - один из самых известных языков с ярко выраженной функциональной парадигмой программирования.</p>
9 <p>Haskell - один из самых известных языков с ярко выраженной функциональной парадигмой программирования.</p>
10 <p>За что разработчики любят Haskell? Код в нём чистый и понятный, поддерживать и читать его достаточно просто, а писать - эффективно. Звучит слишком хорошо, чтобы быть правдой?</p>
10 <p>За что разработчики любят Haskell? Код в нём чистый и понятный, поддерживать и читать его достаточно просто, а писать - эффективно. Звучит слишком хорошо, чтобы быть правдой?</p>
11 <p>Но у автора статьи есть аргументы:</p>
11 <p>Но у автора статьи есть аргументы:</p>
12 <ul><li><strong>Статическая типизация:</strong>благодаря ей многие баги видны уже в самом начале.</li>
12 <ul><li><strong>Статическая типизация:</strong>благодаря ей многие баги видны уже в самом начале.</li>
13 <li><strong>Разнообразие инструментов:</strong>Haskell поддерживает алгебраические типы данных, классовый полиморфизм и многое другое.</li>
13 <li><strong>Разнообразие инструментов:</strong>Haskell поддерживает алгебраические типы данных, классовый полиморфизм и многое другое.</li>
14 <li><strong>Продвинутая экосистема:</strong>в ней найдётся решение почти для любой проблемы.</li>
14 <li><strong>Продвинутая экосистема:</strong>в ней найдётся решение почти для любой проблемы.</li>
15 <li><strong>Высокая производительность:</strong>программа<strong></strong>компилируется непосредственно в машинный код.</li>
15 <li><strong>Высокая производительность:</strong>программа<strong></strong>компилируется непосредственно в машинный код.</li>
16 <li><strong>Безопасность доступа к памяти:</strong>в Haskell управление памятью автоматическое, что помогает избежать ошибок.</li>
16 <li><strong>Безопасность доступа к памяти:</strong>в Haskell управление памятью автоматическое, что помогает избежать ошибок.</li>
17 <li><strong>Чистые функции и неизменные данные</strong> - основа программирования на Haskell.</li>
17 <li><strong>Чистые функции и неизменные данные</strong> - основа программирования на Haskell.</li>
18 <li><strong>Метапрограммирование:</strong>поддержка абстрактного дерева синтаксиса.</li>
18 <li><strong>Метапрограммирование:</strong>поддержка абстрактного дерева синтаксиса.</li>
19 <li><strong>Удобные библиотеки</strong>для работы со сложными сущностями и явлениями - например, параллелизмом.</li>
19 <li><strong>Удобные библиотеки</strong>для работы со сложными сущностями и явлениями - например, параллелизмом.</li>
20 </ul><p>Подробнее о том, как Haskell смотрится на фоне Python, какие у него преимущества и какие недостатки - в оригинальной статье.</p>
20 </ul><p>Подробнее о том, как Haskell смотрится на фоне Python, какие у него преимущества и какие недостатки - в оригинальной статье.</p>
21 <p><strong>Зачем читать:</strong>узнать о новостях из мира Haskell и понять, чего ждать в скором будущем.</p>
21 <p><strong>Зачем читать:</strong>узнать о новостях из мира Haskell и понять, чего ждать в скором будущем.</p>
22 <p><strong>Где читать:</strong>на <a>Medium</a>.</p>
22 <p><strong>Где читать:</strong>на <a>Medium</a>.</p>
23 <p>Haskell Foundation - некоммерческая организация, которая занимается развитием языка Haskell. Авторы рассказывают, чего комьюнити добилось за последние месяцы, как устроена работа над языком и какими инициативами заняты участники фонда прямо сейчас.</p>
23 <p>Haskell Foundation - некоммерческая организация, которая занимается развитием языка Haskell. Авторы рассказывают, чего комьюнити добилось за последние месяцы, как устроена работа над языком и какими инициативами заняты участники фонда прямо сейчас.</p>
24 <p>Вот парочка новинок:</p>
24 <p>Вот парочка новинок:</p>
25 <ul><li><strong>Документация</strong>языка стала проще, понятнее и полезнее - и продолжает хорошеть. Кроме того, улучшений дождались HaskellWiki, Haddock и <a>HaskellSchool</a>.</li>
25 <ul><li><strong>Документация</strong>языка стала проще, понятнее и полезнее - и продолжает хорошеть. Кроме того, улучшений дождались HaskellWiki, Haddock и <a>HaskellSchool</a>.</li>
26 <li><strong>Поддержка Windows</strong>в Haskell долго оставляла желать лучшего, но её наконец-то исправили!</li>
26 <li><strong>Поддержка Windows</strong>в Haskell долго оставляла желать лучшего, но её наконец-то исправили!</li>
27 <li><strong>Появился Performance book</strong> - новый проект, в котором эксперты и любители Haskell могут обменяться опытом. Создатели надеются, что он поможет разработчикам глубже понять, как устроен и работает язык.</li>
27 <li><strong>Появился Performance book</strong> - новый проект, в котором эксперты и любители Haskell могут обменяться опытом. Создатели надеются, что он поможет разработчикам глубже понять, как устроен и работает язык.</li>
28 <li>И ещё одна инициатива в комьюнити -<a><strong>подкаст</strong></a><strong>про Haskell</strong>. Вышло уже несколько эпизодов.</li>
28 <li>И ещё одна инициатива в комьюнити -<a><strong>подкаст</strong></a><strong>про Haskell</strong>. Вышло уже несколько эпизодов.</li>
29 </ul><p>Template Haskell - это набор функций и инструментов, которые добавляют шаблоны и упрощают работу с кодом. Он пригодится для автоматизации, ускорит написание типового кода и позволит выполнять программу прямо во время компиляции.</p>
29 </ul><p>Template Haskell - это набор функций и инструментов, которые добавляют шаблоны и упрощают работу с кодом. Он пригодится для автоматизации, ускорит написание типового кода и позволит выполнять программу прямо во время компиляции.</p>
30 <p>В гайде можно посмотреть на примеры его использования и понять, как он работает. А ещё там есть пара ссылок на материалы по теме для продвинутых разработчиков.</p>
30 <p>В гайде можно посмотреть на примеры его использования и понять, как он работает. А ещё там есть пара ссылок на материалы по теме для продвинутых разработчиков.</p>
31 <p><strong>Зачем читать:</strong>если вам очень не хватает хеш-таблиц и хочется узнать, как воссоздать их в Haskell.</p>
31 <p><strong>Зачем читать:</strong>если вам очень не хватает хеш-таблиц и хочется узнать, как воссоздать их в Haskell.</p>
32 <p><strong>Где читать:</strong>на <a>Medium</a>.</p>
32 <p><strong>Где читать:</strong>на <a>Medium</a>.</p>
33 <p>В Haskell нет хеш-таблиц и словарей - и многим это кажется непривычным. Особенно тем, кто привык к JavaScript.</p>
33 <p>В Haskell нет хеш-таблиц и словарей - и многим это кажется непривычным. Особенно тем, кто привык к JavaScript.</p>
34 <p>В статье - два примера того, как обойти это ограничение и симулировать подобную структуру в Haskell.</p>
34 <p>В статье - два примера того, как обойти это ограничение и симулировать подобную структуру в Haskell.</p>
35 <p>Первый способ - использовать<strong>списки и кортежи</strong>. Для этого нужно сначала создать пары значений в формате кортежей, а потом сохранить их в один список.</p>
35 <p>Первый способ - использовать<strong>списки и кортежи</strong>. Для этого нужно сначала создать пары значений в формате кортежей, а потом сохранить их в один список.</p>
36 <p>Второй - использовать модуль<strong>Data.Map</strong>. Суть тут примерно та же, только в Data.Map используются бинарные деревья.</p>
36 <p>Второй - использовать модуль<strong>Data.Map</strong>. Суть тут примерно та же, только в Data.Map используются бинарные деревья.</p>
37 <p>Правда, оба варианта не так удобны, как классические хеш-таблицы. В первом случае время выполнения будет линейным, а во втором - логарифмическим, в то время как у хешей оно константное. Но если без хешей вам жизнь не мила - заглядывайте в статью.</p>
37 <p>Правда, оба варианта не так удобны, как классические хеш-таблицы. В первом случае время выполнения будет линейным, а во втором - логарифмическим, в то время как у хешей оно константное. Но если без хешей вам жизнь не мила - заглядывайте в статью.</p>
38 <p><strong>Зачем читать:</strong>разобраться в тестировании на основе свойств.</p>
38 <p><strong>Зачем читать:</strong>разобраться в тестировании на основе свойств.</p>
39 <p><strong>Где читать:</strong>на <a>Medium</a>.</p>
39 <p><strong>Где читать:</strong>на <a>Medium</a>.</p>
40 <p>В юнит-тестах частенько не учтены все значения - а иногда это критично. Здесь на помощь приходит тестирование на основе свойств. Оно хорошо тем, что вводные данные в нём генерируются автоматически. Следовательно, эффективность тестов выше, а у коварных багов меньше шансов остаться незамеченными.</p>
40 <p>В юнит-тестах частенько не учтены все значения - а иногда это критично. Здесь на помощь приходит тестирование на основе свойств. Оно хорошо тем, что вводные данные в нём генерируются автоматически. Следовательно, эффективность тестов выше, а у коварных багов меньше шансов остаться незамеченными.</p>
41 <p>Как раз для такого тестирования существует библиотека<strong>QuickCheck</strong>. А в статье - советы о том, как использовать её возможности на полную катушку. Например, одна из главных задач тестирования на основе свойств - повысить вероятность "неприятного" значения до максимума.</p>
41 <p>Как раз для такого тестирования существует библиотека<strong>QuickCheck</strong>. А в статье - советы о том, как использовать её возможности на полную катушку. Например, одна из главных задач тестирования на основе свойств - повысить вероятность "неприятного" значения до максимума.</p>
42 <p>Если вам не хватило этих материалов про Haskell - вот ещё несколько интересностей на десерт.</p>
42 <p>Если вам не хватило этих материалов про Haskell - вот ещё несколько интересностей на десерт.</p>
43 <ul><li><a>Статья</a>о том, почему Haskell так любят в финтехе.</li>
43 <ul><li><a>Статья</a>о том, почему Haskell так любят в финтехе.</li>
44 <li><a>Статья - введение</a>в синтаксис Haskell для Python-разработчиков.</li>
44 <li><a>Статья - введение</a>в синтаксис Haskell для Python-разработчиков.</li>
45 <li><a>Шпаргалка</a>по модулям и спискам.</li>
45 <li><a>Шпаргалка</a>по модулям и спискам.</li>
46 <li><a>Сравнение</a>выразительности С# и Haskell.</li>
46 <li><a>Сравнение</a>выразительности С# и Haskell.</li>
47 </ul><a><b>Бесплатный курс по Python ➞</b>Мини-курс для новичков и для опытных кодеров. 4 крутых проекта в портфолио, живое общение со спикером. Кликните и узнайте, чему можно научиться на курсе. Смотреть программу</a>
47 </ul><a><b>Бесплатный курс по Python ➞</b>Мини-курс для новичков и для опытных кодеров. 4 крутых проекта в портфолио, живое общение со спикером. Кликните и узнайте, чему можно научиться на курсе. Смотреть программу</a>