-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
3 changed files
with
33 additions
and
1 deletion.
There are no files selected for viewing
2 changes: 1 addition & 1 deletion
2
_posts/mini_posts/2021-01-14-ml-sorting-and-k-order-statistics.md
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 (которая очень сложная и имеет кучу проблем). Тут есть нюанс контекста: он рассуждает в контексте платформенного решения, на основе которого строятся другие, а свое уэб-приложение можно и перезалить. Но еще важный момент — отношение: "раз работает, то все, задача выполнена, да и бизнес давит" — так и рождается техдолг и/или переусложенное решение. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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)). | ||
|