All streams
Search
Write a publication
Pull to refresh
113
0
Марк Шевченко @markshevchenko

программист

Send message

Вычислительные выражения: Реализуем Delay и Run

Level of difficultyHard
Reading time10 min
Views1K

Скотт Влащин продолжает рассказ о вычислительных выражениях в F#. Вычислительные выражения очень похожи на монады из Haskell, но у них есть свои особенности.

Одной из необычных особенностей Haskell являются ленивые (отложенные) вычисления. В F# вычисления энергичные, как и в большинстве других языков, поэтому там нельзя просто так взять и "прервать" вычисление.

Но если очень хочется, то можно. В этой статьей Скотт рассказывает, как сделать ленивые вычислительные выражения в F#.

Читать далее

7. Nix в пилюлях: Работающая деривация

Level of difficultyMedium
Reading time7 min
Views1.2K

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

В очередной — седьмой — пилюле от Люка Бруно создадим деривацию, которая реально собирает и устанавливает программу в хранилище Nix.

Читать далее

Вычислительные выражения: Реализуем Combine

Level of difficultyHard
Reading time11 min
Views1.3K

Вычислительные выражения — поистине неисчерпаемая тема. Мы научились возвращать пустые значения, а теперь нам предстоит разобраться, как возвращать множественные. Скотт Влащин рассказывает, как использовать метод Combine.

Читать далее

6. Nix в пилюлях: Наша первая деривация

Level of difficultyMedium
Reading time9 min
Views1.8K

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

Попробуем создать нашу первую деривацию.

Читать далее

Вычислительные выражения: Реализуем Zero и Yield

Level of difficultyHard
Reading time10 min
Views1.8K

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

Читать далее

5. Nix в пилюлях: Функции и импорт

Level of difficultyMedium
Reading time5 min
Views1.6K

Пятая часть в цикле статей Люка Бруно рассказывает о функциях в языке Nix. Оказывается, у них не бывает имени и только один параметр. Как такое может быть?

Читаем статью, разбираемся. Помимо функций, вы также узнаете, как в Nix устроены модули и их импорт.

Читать далее

Неразрешимые проблемы программирования

Level of difficultyEasy
Reading time8 min
Views14K

Неразрешимые задачи в программировании определены очень строго. Фактически, для каждой такой задачи существует доказательство, что её нельзя решить на машине Тьюринга.

Но это теория. На практике, в нашей жизни есть другие неразрешимые задачи. У таких задач нет формального определения, и очень часто программисты думают, что и проблем то никаких нет. Попробуем разобраться: может быть, действительно, нет?

Читать далее

Вычислительные выражения: Подробнее про типы-обёртки

Level of difficultyHard
Reading time9 min
Views1.3K

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

Глубже погрузимся в исследование типов-обёрток и узнаем, наконец, почему список тоже может быть обёрткой.

Читать далее

Вычислительные выражения: Типы-обёртки

Level of difficultyHard
Reading time8 min
Views1.5K

Четвёртая статья из цикла Вычислительные выражения Скотта Влащина. Скотт рассказывает о типах-обёртках и об их глубокой связи с вычислительными выражениями.

Читать далее

4. Nix в пилюлях: Основы языка

Level of difficultyMedium
Reading time6 min
Views2.4K

Четвёртая часть из цикла статей Люка Бруно, посвящённой пакетному менеджеру и языку программирования Nix.

Здесь мы знакомимся с основами языка.

Читать далее

3. Nix в пилюлях: Погружаемся в среду

Level of difficultyMedium
Reading time6 min
Views3K

Третья статья из цикла Nix в пилюлях. Наконец-то, практика! Разбираемся, что такое окружения и поколения, учимся откатывать изменения, выясняем, как работать с каналами

Читать далее

Вычислительные выражения: Введение в 'Bind'

Level of difficultyHard
Reading time6 min
Views1.6K

Третья статья из цикла про вычислительные выражения в F#. Продолжаем разбираться с функциями-продолжениями и исследуем метод "Bind".

Читать далее

Разрабатываем Nix в России

Reading time4 min
Views3.1K

Спринт — особый формат мероприятий, который разработчики Nix и NixOS придумали, чтобы собираться вместе и вместе работать на проектами.

Что-то вроде хакатона, но без элемента соревновательности. Следующий спринт, если всё получится, пройдёт в Казани в августе. Здесь начало истории...

Читать далее

2. Nix в пилюлях: Установка в вашей системе

Level of difficultyMedium
Reading time5 min
Views3.9K

Вторая статья из цикла Nix в пилюлях. Устанавливаем Nix в нашу систему, разбираемся и профилями и поколениями, и выясняем, что в Nix есть база данных.

Читать далее

Вычислительные выражения: Разбираемся с продолжениями

Level of difficultyHard
Reading time10 min
Views1.5K

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

Читать далее

1. Nix в пилюлях: Почему вам стоит попробовать Nix

Level of difficultyMedium
Reading time7 min
Views13K

Предисловие


В 2014 и 2015 годах Люка Бруно (Luca Bruno aka Lethalman) опубликовал серию постов, описывающих пакетный менеджер Nix, операционную систему NixOS и хранилище Nixpkgs.


Люка назвал свои посты пилюлями (англ. pill — таблетка, пилюля).


Берясь за перевод, я пытался выяснить, нет ли у выражения in pills устойчивого смысла.
Оказалось, что скрытый смысл есть у самого слова Nix.
Это одна из торговых марок перметрина — средства против клещей, которое доступно только в виде мази.
Иными словами, медицинского Никса ни в пилюлях, ни в таблетках не бывает.


С момента публикации, Nix в пилюлях считается классическим введением в Nix. В 2017 году Грэм Кристиансен (Graham Christensen aka grahamc/gchristensen) инициировал работу по переводу серии статей в формат электронной книги.


Актуальную оригинальную версию книги вы найдёте по адресу https://nixos.org/guides/nix-pills/.
Там же доступен вариант в формате EPUB.


В 2024 году Марк Шевченко начал перевод книги на русский язык.
Актуальная версия доступна по адресу https://nix-pills-ru.github.io.


ℹ️ В примерах, команды, которые начинаются с символа "решётка" (#), должны быть запущены с правами пользователя root.

(Адрес статьи на официальном сайте перевода).


Почему вам стоит попробовать Nix


Введение


Добро пожаловать на первую пилюлю из цикла «Nix в пилюлях».
Nix — это чистый функциональный пакетный менеджер и система развёртывания для POSIX-совместимых ОС.

Читать дальше →

Вычислительные выражения: Введение

Level of difficultyHard
Reading time9 min
Views3.1K

Скотт Влащин — безусловный гуру в мире F#, написавший введение в язык, которое рекомендуют новичкам вместо официального руководства.


Группа энтузиастов давно (и с переменным успехом) пытается перевести руководство Скотта на русский.


Я завершаю перевод цикла, посвящённого одной из самых сакральных тем языка — вычислительным выражениям. Это как монады, только в .NET.


Неизвестно, когда нам удастся запустить полноценный русский сайт, поэтому я попросил у ребят разрешения опубликовать цикл на Хабре.
Материал интересный и хочется им поделиться.


Далее передают слово автору. Перед вами — первая статья цикла.




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


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


Введение


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


С одной стороны, их достаточно легко применять. Любой, кто написал достаточно кода на F# наверняка использовал стандартные конструкции, такие как seq{...} или async{...}.


Но как вы можете создать новую похожую конструкцию? Как они работают за кулисами?

Читать дальше →

Нелояльный, немотивированный

Level of difficultyEasy
Reading time8 min
Views13K

Сотрудники должны быть лояльными и мотивированными — об этом знают все. Даже люди, далёкие от кадров, такие, как я. Насколько я слышал, существуют методы расчёта лояльности. Надеюсь, что они работают. По крайней мере должны.

Потому что мой опыт говорит об обратном.

И в этом я не одинок. Хотите пример? Вот отрывок из вакансии, которую мы обсуждали в чате программистов пару дней назад.

Читать далее

Как сделать интересный технический доклад

Reading time16 min
Views6K

Если спросить начинающего докладчика, чего он больше всего боится перед выступлением, он, может быть, назовёт дотошного и даже скандального слушателя, или скажет, что самое страшное — это забыть слова.

Если же спросить слушателя, окажется, что для него самое страшное — это скучный доклад. Начинающий докладчик, беспокоясь за второстепенные вещи, упускает из виду главное — доклад должен быть интересным. Именно об этом надо заботиться в первую очередь.

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

Перестать делать скучные доклады

Как придумать тему технического доклада

Reading time11 min
Views4.5K

Я отвечаю за подготовку и репетицию докладов в Московском клубе программистов. Не всем нашим докладчикам нужна помощь, но если нужна, помогать им буду я. За последние шесть лет мне довелось прослушать несколько десятков докладов. На самом деле я не знаю, сколько их было — никогда не считал — но, возможно, их уже больше ста.

Доклады были разными. Я хотел, чтобы они были захватывающими и полезными, так что мне пришлось разобраться в том, как сделать интересный доклад. Оказалось, что эти знания востребованы и среди программистов — начинающих докладчиков, и среди деврелов. В конце концов я решился написать статью на эту тему.

Материала оказалось много и статьи получилось две. Эта первая — о том, как придумать тему доклада.

Как придумать тему доклада

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Registered
Activity

Specialization

Backend Developer
Lead
From 450,000 ₽
C#
Rust
Algorithms and data structures
Functional programming