Skip to content

Commit

Permalink
weekly update
Browse files Browse the repository at this point in the history
  • Loading branch information
ov7a committed Dec 6, 2024
1 parent e032939 commit dc42f07
Show file tree
Hide file tree
Showing 3 changed files with 33 additions and 1 deletion.
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
---
layout: post
title: Недавние открытия из мира сортировок
tags: [algorithms, sorting, ai]
tags: [algorithms, ai]
---
Перед новым годом наткнулся на две интересные статьи про алгоритмы.

Expand Down
18 changes: 18 additions & 0 deletions _posts/mini_posts/2024-12-03-complexity.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
---
layout: post
title: Пик сложности
tags: [bestpractices, архитектура, api, мысли]
tg_id: 574
---
Давным-давно, когда я глотал фантастические книжки стопками, в одной из них была такая идея об уровнях развития цивилизации:
1. Простые технологии/механизмы для решения простых задач (палка стукать).
2. Сложные технологии/механизмы для решения сложных задач (двигатель внутреннего сгорания, атомная станция).
3. Простые технологии/механизмы для решения сложных задач (это у более развитых цивилизаций, чем наша).

Было это в контексте того, что кто-то посмотрел на двигатель высокотехнологичного транспорта, а там внутри все просто и понятно, и элементарно починить.

Увы, я уже совсем не помню никаких метаданных о книге, и ни поиск, ни чатгпт [не помогли](/2024/04/23/dead-search.html) (если вы вдруг знаете, откуда это — напишите, пожалуйста). Но сама идея намертво застряла и я ее постоянно кому-то рассказываю, потому что она очень хорошо подходит для разработки.

Похожие идеи про простоту всплывают повсеместно, взять хотя бы тот же [KISS](https://ru.wikipedia.org/wiki/KISS_(%D0%BF%D1%80%D0%B8%D0%BD%D1%86%D0%B8%D0%BF)) и его вариации). Но конкретно в этой интерпретации важен аспект эволюции и сравнения, как может быть по-другому. Увы, встречаются кодовые базы, когда используется 4 вариант, дополняющий остальные три: сложные технологии/механизмы для решения простых задач. Я не помню точно, но вряд ли фантаст мог помыслить об [энтерпрайзном fizzbuzz](https://github.com/EnterpriseQualityCoding/FizzBuzzEnterpriseEdition), а я с таким работаю.

В тему эволюции подходов к решению задач есть [неплохой доклад](https://www.youtube.com/watch?v=Yiye8lqh0Ig) от архитекторов языка Java, основная идея которого заключается в том, что когда вы наконец рассмотрели задачу со всех сторон и учли все нюансы, надо потратить еще время, чтобы упростить решение. Автор предостерегает от того, чтобы развертывать первое решение, приводя в пример сериализацию в Java (которая очень сложная и имеет кучу проблем). Тут есть нюанс контекста: он рассуждает в контексте платформенного решения, на основе которого строятся другие, а свое уэб-приложение можно и перезалить. Но еще важный момент — отношение: "раз работает, то все, задача выполнена, да и бизнес давит" — так и рождается техдолг и/или переусложенное решение.
14 changes: 14 additions & 0 deletions _posts/mini_posts/2024-12-05-roc-tag-unions.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
---
layout: post
title: Работа с ошибками в Roc
tags: [фп]
tg_id: 575
---
Очередной [доклад](https://youtu.be/7SidSvJcPd0) про работу с эффектами (на самом деле с обработкой ошибок). Не могу сказать что он супер или что в нем какая-то невероятно новая идея, но тут хорошо поставлена и разжевана проблема: почему напряжно обрабатывать ошибки разных видов.

Сама идея тегов, которые отслеживает и обрабатывает компилятор, занятная, но не думаю что она выстрелит. В скале более общий и фундаментальный поход, я рассказывал об этом [ранее](/2023/11/09/scala-effects-future.html). Да и итоговое решение не сильно семантически отличается от первоначального подхода на Rust.

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

Впрочем, автор и сам признает некоторые недостатки и часть идей на момент доклада не была реализована. Однако, если ни с одной идеей не знакомы, доклад довольно простой и доступный, и его можно посмотреть. Видос от создателя Roc и соавтора Elm, и прошлое автора чувствуется — торчат уши языков из этого семейства и сопутствующих [идей](/2022/03/07/profunctor-rating-elm.html#section-4). Но он неплохой докладчик — у меня в бложеке нашлась еще пара ссылок на его видео ([1](/2021/11/25/roc-quicksort.html), [2](/2020/04/27/fp-acceptance.html)).

0 comments on commit dc42f07

Please sign in to comment.