Pull to refresh
32K+
120
Марк Шевченко@markshevchenko

программист

20,9
Rating
102
Subscribers
Habr CareerHabr Career
Send message

4/7. Целая прорва связных списков, чтобы выучить Rust: Плохой, но безопасный двусвязный дек

Level of difficultyHard
Reading time26 min
Reach and readers4.4K

Наконец мы добрались до поистине сложной темы. Если вы думаете, что раньше были сложные, вы глубоко заблуждаетесь!

Двусвязный список на Rust. Это вообще возможно? Ну… да. С некоторыми оговорками. Что за оговорки, узнаем из четвёртой главы.

Читать далее

3/7. Целая прорва связных списков, чтобы выучить Rust: Устойчивый односвязный стек

Level of difficultyHard
Reading time11 min
Reach and readers6.4K

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

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

Можно ли написать на Rust устойчивый список? Думаю, вы уже догадались, что да. А как — узнаете из третьей части перевода Too Many Linked Lists.

Читать далее

2/7. Целая прорва связных списков, чтобы выучить Rust: Хороший односвязный стек

Level of difficultyHard
Reading time24 min
Reach and readers6.1K

Продолжаем знакомство со списками в Rust. Перепишем код, избавившись от типа Link и заменив его на Option. Сделаем наш список обобщённым. И добавим в него несколько полезных методов.

По дороге разберёмся с временем жизни и типажом Copy.

Читать далее

1/7. Целая прорва связных списков, чтобы выучить Rust: Плохой односвязный стек

Level of difficultyHard
Reading time21 min
Reach and readers7.3K

Продолжаем знакомство с ссылочной магией в Rust. Вместе с автором создаём первый работающий список, наступая на все возможные грабли.

В конце взъерошенные, но счастливые наслаждаемся результатом.

Читать далее

Проектирование с помощью типов

Level of difficultyMedium
Reading time1 min
Reach and readers7.2K

Здесь я (переводчик) собрал ссылки на все части цикла, написанного Скоттом Влащиным. И заодно перевёл предисловие, буквально, три абзаца.

Если вы захотите поделиться переводом, сбрасывайте ссылку именно на этот пост, потому что в нём есть все остальные ссылки.

Читать далее

8. Проектирование с помощью типов: Заключение

Level of difficultyMedium
Reading time8 min
Reach and readers7.1K

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

Есть повод для размышлений!

Читать далее

0/7. Целая прорва связных списков, чтобы выучить Rust: Введение

Level of difficultyHard
Reading time8 min
Reach and readers7.1K

Начал перевод, видимо, базового руководства по сложным темам в Rust (не считая Растономикона, который вообще про чёрную магию) — Learning Rust With Entirely Too Many Linked Lists.

Надеюсь закончить всё с течение мая. Сегодня — введение. Первая глава — после выходных.

Читать далее

7. Проектирование с помощью типов: Нестроковые типы

Level of difficultyMedium
Reading time4 min
Reach and readers6.6K

Можно ли использовать размеченные объединения с одним вариантом (SCDU, Single Case Descriminated Unions) не только со строками, но и с другими типами? Можно ли накладывать бизнес-ограничения на такие штука, как количество позиций в заказе или дата рождения?

Скотт Влащин делится секретами разработки бизнес-логики на языке с алгебраическими типами. Подробности внутри.

Читать далее

6. Проектирование с помощью типов: Типизированные строки

Level of difficultyMedium
Reading time9 min
Reach and readers6K

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

Разберёмся, как это выглядит в языках с алгебраическими типами.

Читать далее

5. Проектирование с помощью типов: Делаем состояние явным

Level of difficultyMedium
Reading time13 min
Reach and readers7K

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

Попробуем?

Читать далее

4. Проектирование с помощью типов: Исследуем новые концепции

Level of difficultyMedium
Reading time5 min
Reach and readers6.6K

Четвёртый пост из серии Скотта Влащина посвящена предметной области. Как с помощью типов описывать бизнес-правила? Как типы позволяют углубить понимание предметной области?

Узнаем прямо сейчас.

Читать далее

3. Проектирование с помощью типов: Делаем недопустимые состояния непредставимыми

Level of difficultyMedium
Reading time4 min
Reach and readers6.5K

Новая глава из цикла Скотта Влащина. Обсуждаем, как сделать код надёжным с помощью развитых типов из F#.

Читать далее

2. Проектирование с помощью типов: одновариантные типы-объединения

Level of difficultyMedium
Reading time11 min
Reach and readers6.7K

Продолжаем перевод цикла статей Скотта Влащина, посвящённого проектированию программ в языках с развитой системой типов. В этой главе поговорим о том, как размеченные объединения помогают писать безопасный код.

Читать далее

Где хранить пароли в NixOS?

Level of difficultyMedium
Reading time10 min
Reach and readers7K

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

Читать далее

1. Проектирование с помощью типов: Введение

Level of difficultyMedium
Reading time3 min
Reach and readers5.4K

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

Читать далее

20. Nix в пилюлях: Основные зависимости и хуки

Level of difficultyMedium
Reading time6 min
Reach and readers1.2K

Финальная глава! Люка Бруно рассказывает о секретном оружии Nix — хуках. Их используют, когда больше ничего не помогает, в частности, для кросс-компиляции.

Читать далее

19. Nix в пилюлях: Основы stdenv

Level of difficultyMedium
Reading time5 min
Reach and readers1.1K

Эта глава посвящена деривации stdenv, благодаря которой собирается большинство пакетов из репозитория nixpkgs. Она поддерживает инструментарий GCC, GNU make, autotools и другие распространённые системы сборки.

Читать далее

18. Nix в пилюлях: Пути хранения Nix

Level of difficultyMedium
Reading time5 min
Reach and readers993

Для того, чтобы различать пакеты разных версий, Nix хранит их в каталогах с именами, которые содержат хеш. В главе 18 мы разберёмся, как вычисляется этот хеш для файлов, каталогов и tar-архивов.

Читать далее

17. Nix в пилюлях: Переопределение пакетов nixpkgs

Level of difficultyMedium
Reading time4 min
Reach and readers823

Знакомимся с интересным трюком, который позволяет функциональному языку Nix делать то, то, что в императивных пакетных менеджерах делается с пол-пинка.
У них там, правда, dependency hell, а в Nix всё чинно и благородно.

Читать далее

Information

Rating
375-th
Location
Москва, Москва и Московская обл., Россия
Registered
Activity

Specialization

Бэкенд разработчик
Ведущий
From 550,000 ₽
Golang
Rust
Алгоритмы и структуры данных
Проектирование архитектуры приложений
F#
Функциональное программирование