Telegram Web
Если вы в 2021 еще пишете на чистом JS, вы явно что-то делаете не так:
Forwarded from AlexTCH
Пишут, что https://people.cs.uchicago.edu/~shanlu/paper/hotos19_azure.pdf
found that 21% of the cloud outages resulted from inconsistent data format assumptions across different software components and versions

Good luck with dynamically typed languages.
(Сам я, конечно, не читал что там пишут 😁)
Forwarded from Lene.spb (Arina Malevskaya)
Жизненно)))
Forwarded from AlexTCH
https://doi.org/10.1017/S0956796821000113
"How to design co-programs" by Jeremy Gibbons

Статья призывает расширить подход How to Design Programs (aka HtDP, серия курсов, обучающих студентов программированию с нуля, плюс два издания одноимённой книги: https://htdp.org/ если кто не знает) за счёт введения понятия ко-рекурсивных функций и соответствующих паттернов для их построения.

Говоря по-простому, ко-рекурсивные функции — это такие, которые строят свой результат "по кусочкам", используя конструкторы соответствующего (алгебраического) типа данных, вместо того (или вместе с тем) чтобы разбирать входные данные "на кусочки" при помощи сопоставления с образцом (aka [datatype] pattern matching).

Я безусловно согласен с Гиббонсом в том, что ко-рекурсивные функции — очень полезный инструмент в арсенале разработчика, особенно, начинающего. Тем не менее, на мой взгляд, эта тема требует намного более тщательной методической проработки чтобы органично встроиться в общую канву HtDP.

Более того, самая интересная часть этой статьи — ещё одна статья, которая не была написана, к сожалению. 😊 В середине повествования Гиббонс обсуждает "генеративную рекурсию" (generative recursion, термин из HtDP), и показывает как функции (изначально) в форме общей генеративной рекурсии могут быть представлены в виде композиции структурно-рекурсивной и ко-рекурсивной функции (так же известной как "иломорфизм" или "хиломорфизм" — hylomorphism). К сожалению, за кадром остаются самые важные и интересные вопросы: как понять, что данную конкретную функцию можно представить в виде такой композиции, или придётся использовать генеративную рекурсию общего вида? как выбрать подходящую промежуточную структуру для рекурсии и ко-рекурсии? Возможно, эти вопросы удастся прояснить тем, кто интегрирует тему ко-рекурсивных функций в свои учебные программы. 😊
Я сдул пыль со своего блога, немного его причесал и выложил туда все публичные статьи, которые писал про функциональное программирование, в том числе переведенные на английский статьи из цикла «Введение в fp-ts» с Хабра.
Встречайте: https://ybogomolov.me 🤘🏻

Серия "Intro to fp-ts":
https://ybogomolov.me/01-higher-kinded-types
https://ybogomolov.me/02-type-classes
https://ybogomolov.me/03-nullables-exceptions
https://ybogomolov.me/04-tasks

Серия #MonadicMondays:
https://ybogomolov.me/monadic-monday-compilation-april
https://ybogomolov.me/monadic-monday-compilation-may
https://ybogomolov.me/monadic-monday-compilation-june
https://ybogomolov.me/monadic-monday-compilation-july

Прочее:
Статья про типобезопасный фронт: https://ybogomolov.me/typesafe-typescript
Статья про пакет circuit-breaker-monad: https://ybogomolov.me/circuit-breaker-in-functional-world
Недавняя заметка про комментарии к функциям как образовательный ресурс: https://ybogomolov.me/comments-as-education

В дальнейшем все материалы, которые я буду создавать, будут в первую очередь публиковаться именно в блоге.
https://github.com/earldouglas/linear-scala — линейные типы в скале, проверка которых осуществляется с помощью ScalaFix.
на что только не идут люди, чтобы не пользоваться Z3
Свежая статья — о кодировке данных высших родов (higher-kinded data, HKD) на TypeScript:
https://ybogomolov.me/higher-kinded-data
Новое видео на канале: «Making Illegal States Unrepresentable in TypeScript»!

В этом докладе я рассматриваю очень полезную тему из domain-driven design — как сделать некорректные состояния непредставимыми. Затрагиваются темы opaque-типов и смарт конструкторов, программирования на уровне типов, Tagless Final и индексированных монад.
В продолжение недавней драмы, о которой хорошо написали в канале Lil Functor:
Джон Де Гоуз написал статью о том, что ZIO organisation ставит перед собой две важные цели: pro-community и pro-professionalism. Это означает, что все проекты, находящиеся в организации ZIO, будут хостить у себя интеграцию с другими экосистемами, и поддерживать запросы конечных пользователей вне зависимости от того, кто кому в песочнице по голове совочком дал каких мировоззрений или политической ориентации придерживается человек.
Мне близка эта позиция — ставить инженерные практики выше политики/гендеров/мировоззрений/etc. Да, всегда можно сказать, что Джон снова использует ситуацию для агрессивного маркетинга ZIO, но в конечном итоге, мне кажется, такое позиционирование экосистемы выигрышно для конечных пользователей.
Новая статья — о простом тайп-левел представлении UUID:
https://ybogomolov.me/type-level-uuid
Заметка об использовании ScalaJS для написания кода под AWS-ный V8 напомнила о проекте, который позволяет нативно запускать хаскельный код в AWS:
https://theam.github.io/aws-lambda-haskell-runtime
Forwarded from Lil Functor
Вот и пригодилась компиляция Scala → JavaScript. Только не для фронтенда.

Daniel Spiewak в концепте serverless-фреймворка предлагает компилировать код на Scala в JS, чтобы запускать его на движке V8. Таким образом получится избежать проблемы холодного старта JVM для короткоживущих функций. V8 не надо прогревать, а код для него можно писать всё на той же Scala. Не зря ведь scala.js делали и библиотеки под него кроссбилдили!

Понятно, что scala-native слишком далека от готовности к проду, но интересно, почему решили не использовать Native Image в GraalVM. Решение с js в любом случае оригинальное и может быть из него что-то вырастет.

Сам концепт: https://gist.github.com/djspiewak/37a4ea0d7a5237144ec8b56a76ed080d
Прототип библиотеки: https://github.com/typelevel/feral
dd if=/dev/stuff of=/dev/tg
Заметка об использовании ScalaJS для написания кода под AWS-ный V8 напомнила о проекте, который позволяет нативно запускать хаскельный код в AWS: https://theam.github.io/aws-lambda-haskell-runtime
Самое любопытное здесь — табличка с бенчмарками относительно JVM и ноды. Вопросы, конечно остаются — скажем, на код остальных примеров хотелось бы тоже взглянуть, — но значения времени холодного старта и потребления памяти вызывают заинтересованность, как минимум.
Карл фон Госсеринг потратил 76 лет на написание трактата о часах. Об одник конкретных часах — часах-фонаре Николаса Валлина. В ходе написания этот трактата он предвосхитил специальную теорию относительности, поднял вопрос о проблеме останова, и даже построил исчисление для моделирования часовых механизмов.

Насладиться прекрасным тредом:
https://threadreaderapp.com/thread/1467417990744649728.html
2025/06/27 18:57:18
Back to Top
HTML Embed Code: