Обновить
8K+
124
Марк Шевченко@markshevchenko

программист

14,1
Рейтинг
107
Подписчики
Хабр КарьераХабр Карьера
Отправить сообщение

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

Уровень сложностиСложный
Время на прочтение2 мин
Охват и читатели4.3K

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

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

Читать далее

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

Уровень сложностиСложный
Время на прочтение10 мин
Охват и читатели4.9K

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

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

Читать далее

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

Уровень сложностиСложный
Время на прочтение92 мин
Охват и читатели4.4K

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

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

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

Читать далее

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

Уровень сложностиСложный
Время на прочтение59 мин
Охват и читатели4.9K

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

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

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

Читать далее

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

Уровень сложностиСложный
Время на прочтение26 мин
Охват и читатели5.2K

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

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

Читать далее

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

Уровень сложностиСложный
Время на прочтение11 мин
Охват и читатели6.9K

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

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

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

Читать далее

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

Уровень сложностиСложный
Время на прочтение24 мин
Охват и читатели6.4K

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

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

Читать далее

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

Уровень сложностиСложный
Время на прочтение21 мин
Охват и читатели7.6K

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

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

Читать далее

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

Уровень сложностиСредний
Время на прочтение1 мин
Охват и читатели7.8K

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

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

Читать далее

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

Уровень сложностиСредний
Время на прочтение8 мин
Охват и читатели7.5K

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

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

Читать далее

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

Уровень сложностиСложный
Время на прочтение8 мин
Охват и читатели7.3K

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

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

Читать далее

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

Уровень сложностиСредний
Время на прочтение4 мин
Охват и читатели6.8K

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

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

Читать далее

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

Уровень сложностиСредний
Время на прочтение9 мин
Охват и читатели6.2K

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

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

Читать далее

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

Уровень сложностиСредний
Время на прочтение13 мин
Охват и читатели7.2K

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

Попробуем?

Читать далее

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

Уровень сложностиСредний
Время на прочтение5 мин
Охват и читатели6.7K

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

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

Читать далее

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

Уровень сложностиСредний
Время на прочтение4 мин
Охват и читатели6.6K

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

Читать далее

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

Уровень сложностиСредний
Время на прочтение11 мин
Охват и читатели6.8K

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

Читать далее

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

Уровень сложностиСредний
Время на прочтение10 мин
Охват и читатели7.1K

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

Читать далее

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

Уровень сложностиСредний
Время на прочтение3 мин
Охват и читатели5.4K

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

Читать далее

Nix в пилюлях

Время на прочтение1 мин
Охват и читатели3.4K

Завершён перевод книги Люка Бруно «Nix в пилюлях».
Для удобства читателей, собрал ссылки на все двадцать глав в одной публикации — здесь.

Читать далее

Информация

В рейтинге
596-й
Откуда
Москва, Москва и Московская обл., Россия
Зарегистрирован
Активность

Специализация

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