Наткнулся на очень хорошую обзорную статью Rust vs. Haskell, благодаря которой поближе познакомился с Haskell. В целом мое первое впечатление от Rust как высокопроизводительном варианте функциональном языке ака Haskell оказался правдивым. Но Rust за свою эффективность заплатил отказом от части фич ML семейства:
Partial field accessors
Благодаря этой возможности в Haskell в конструктор типа-суммы можно передавать аргументы одного из типов, например:
Runtime and concurrency
Rust пошел по пути stackless корутин со всеми любимыми async/await, что нельзя сказать про Haskell с более приятным синтаксисом:
Generators
В Rust толком нет ленивых вычислений, которые могут быть очень полезны для оптимизации памяти. Haskell напротив всегда лениво вычисляется.
Higher-order programming
В Haskell все построено на высоко-уровненных абстракциях как монады, функторы и т.д., которые делают язык более выразительным. Но с другой стороны, это все не бесплатно, а Rust предоставляют достаточную выразительность также
Partial field accessors
Благодаря этой возможности в Haskell в конструктор типа-суммы можно передавать аргументы одного из типов, например:
data Croissant = Plain {price :: Double}
| WithFilling {filling :: String, price :: Double}
let plain = Plain 1.75
-- This is ok and works as expected:
print $ price plain
-- Prints: 1.75
Runtime and concurrency
Rust пошел по пути stackless корутин со всеми любимыми async/await, что нельзя сказать про Haskell с более приятным синтаксисом:
concurrentProgram :: Work -> IO Result
concurrentProgram work = do
results <-
timeout twoSeconds $
mapConcurrently (doWork work) [ServiceA, ServiceB, ServiceC]
pure $ case results of
Just success -> Success success
Nothing -> Timeout
where
twoSeconds = 1000 * 1000
-- Run the program
concurrentProgram someWork
Generators
В Rust толком нет ленивых вычислений, которые могут быть очень полезны для оптимизации памяти. Haskell напротив всегда лениво вычисляется.
Higher-order programming
В Haskell все построено на высоко-уровненных абстракциях как монады, функторы и т.д., которые делают язык более выразительным. Но с другой стороны, это все не бесплатно, а Rust предоставляют достаточную выразительность также
Rust vs. Haskell
Even though Rust and Haskell are quite different languages, they are also surprisingly alike. If you know Rust, you have a head start with Haskell, and vice versa.
✍1🔥1
#balancing_coupling
Дедушки вспоминают пришествие микросервсивов:
Дедушки вспоминают пришествие микросервсивов:
Around 2014, yet another “decoupling salvation” came around — microservices. I even remember a slide saying “microservices is the architecture for decoupling” at some conference
👍1
Глубинный котер
Structured_Design_Edward_Yourdon_Larry_Constantine.pdf
В последнее время очень часто встречаю ссылки на эту книгу от Кент Бека до Влада Хононова. Однозначно в список на чтение
Yourdon and Cosntantine 1975😁2
#balancing_coupling
Coupling suggests a relationship between connected entities. If they are coupled, in some way, they can affect each other. That said, as there are different systems to build and different ways to design them, there are different ways to connect components.
👍2
#balancing_coupling
There are different types of knowledge that can be shared across the boundaries of coupled components. The more knowledge is shared, the higher the dependency between the components; thus, the more often the components will have to change together. Even if components are not sharing knowledge, they can be coupled through shared lifecycles.
👍2🥴1
#balancing_coupling
Позитивный настрой в книге по архитектуре программ
Позитивный настрой в книге по архитектуре программ
Charles Perrow conducts a detailed analysis of the causes for catastrophic accidents in complex systems, such as nuclear power plants, air traffic, and others. He concludes that, sooner or later, all complex systems are doomed to fail.
🤓2👍1
#balancing_coupling
Всем любителям оверинженерии и хайповых примочек посвящается
Всем любителям оверинженерии и хайповых примочек посвящается
A system is plagued with accidental complexity: the team introduces tools and techniques because they are trendy, and not because they are really needed.
👍2
#balancing_coupling
Modular design aims to address a wider range of goals than a non-modular system can. It expands the system’s goal to accommodate requirements that are currently unknown, but may be needed in the future.
👍1
🤔3
#balancing_coupling
An effective abstraction removes all extraneous information, retaining only what is absolutely necessary for effective communication
👍2
Один из лучших докладов по форме подачи и содержанию
https://youtu.be/wi6h9ox1wwM?si=uWWSmuuNx-eJ9MvX
https://youtu.be/wi6h9ox1wwM?si=uWWSmuuNx-eJ9MvX
YouTube
Илья Сазонов и Федор Сазонов — Offset и keyset: почём пагинация для продакшена?
Ближайшая конференция — JPoint 2025, 3–4 апреля (Москва + трансляция).
Подробности и билеты: https://jrg.su/T2zfbS
— —
«Пагинация в Spring — полный отстой! Не используйте ее никогда! Она слишком дорого обходится вашей СУБД!»
Наверняка вы слышали подобное…
Подробности и билеты: https://jrg.su/T2zfbS
— —
«Пагинация в Spring — полный отстой! Не используйте ее никогда! Она слишком дорого обходится вашей СУБД!»
Наверняка вы слышали подобное…
❤3👍2
В этом году вышла книга Building Multi-Tenant SaaS Architectures собственно про построение multi-tenant SaaS, как понял, это как раз то, что сейчас в разных командах называют «платформизацией» или «платформой», но явно не является PaaS.
Такая «платформизация» является трендам во многих командах последние годы.
В список на чтение, нужно разбираться с сабжем
Такая «платформизация» является трендам во многих командах последние годы.
В список на чтение, нужно разбираться с сабжем
O’Reilly Online Learning
Building Multi-Tenant SaaS Architectures
Software as a service (SaaS) is on the path to becoming the de facto model for building, delivering, and operating software solutions. Adopting a multi-tenant SaaS model requires... - Selection from Building Multi-Tenant SaaS Architectures [Book]
✍1👍1