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

программист

12,4
Rating
109
Subscribers
Habr CareerHabr Career
Send message

Целая прорва связных списков, чтобы выучить Rust

Level of difficultyHard
Reading time2 min
Reach and readers4.8K

Я публиковал перевод Too Many Linked Lists по мере готовности, поэтому каждая отдельная глава представлена отдельной статьёй на Хабре.

Книгу в таком виде читать неудобно, так как приходиться искать статьи в ленте автора. Поэтому я собрал Оглавление в одном месте, а именно здесь. Теперь не заблудитесь!

Читать далее

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

Level of difficultyHard
Reading time10 min
Reach and readers5.2K

Вот мы и добрались до конца. Перед вами последняя, седьмая глава книги Learn Rust With Entirely Too Many Linked Lists.

И немного дурацких списков. Как вам список, размещённый не в куче, а на стеке? Невозможно? Ещё как возможно! Читаем!

Читать далее

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

Level of difficultyHard
Reading time92 min
Reach and readers4.7K

Ладно, забудьте всё, что было раньше. Весь этот детский лепет про ссылки и указатели.

Настало время писать настоящий продуктовый код. Посмотрим, как он выглядит на языке Rust.

В шестой главе реализуем двусвязный дек с помощью сырых указателей.

Читать далее

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

Level of difficultyHard
Reading time59 min
Reach and readers5.1K

Вероятно, самая важная глава в книге про реализацию связных списков на языке Rust. И уж точно самая длинная.

Здесь автор рассказывает про сырые указатели, неопределённое поведение, стековое заимствование, miri и тип Cell/UnsafeCell.

В конце главы — работающая реализация.

Читать далее

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

Level of difficultyHard
Reading time26 min
Reach and readers5.3K

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

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

Читать далее

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

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

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

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

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

Читать далее

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

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

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

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

Читать далее

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

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

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

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

Читать далее

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

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

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

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

Читать далее

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

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

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

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

Читать далее

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

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

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

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

Читать далее

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

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

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

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

Читать далее

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

Level of difficultyMedium
Reading time9 min
Reach and readers6.2K

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

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

Читать далее

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

Level of difficultyMedium
Reading time13 min
Reach and readers7.3K

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

Попробуем?

Читать далее

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

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

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

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

Читать далее

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

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

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

Читать далее

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

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

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

Читать далее

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

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

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

Читать далее

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

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

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

Читать далее

Information

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

Specialization

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