Cross-Language

Тестирование в разных языках: пирамида, Testcontainers, property-based

Тестирование в разных языках: пирамида, Testcontainers, property-based

Одна дисциплина — пирамида тестов, дублёры, property-based и реальные зависимости через Testcontainers — в Go, Java и Python на одном домене. Что идиоматично, чем различаются экосистемы и почему на настройках по умолчанию property-тест находит реальный дефект ненадёжно во всех трёх сразу

Тьюринг-полнота и выразительность: чему учит brainfuck

Тьюринг-полнота и выразительность: чему учит brainfuck

Для чистых вычислений brainfuck покрывает тот же класс функций, что и Python, — все вычислимые по Тьюрингу, ни одной меньше. И при этом на нём ничего не пишут. Этот разрыв и есть тема: вычислительная мощность и выразительность — две разные оси, а мы их путаем, потому что обычные языки высоки по обеим. Brainfuck разводит их в чистом виде — и заодно объясняет, почему тьюринг-полнота в конфиге или системе типов чаще беда, чем достоинство

Kafka-клиенты в разных языках: драйверы, родословные, различия

Kafka-клиенты в разных языках: драйверы, родословные, различия

Клиент Kafka делает куда больше, чем «подключиться»: партиционирование, батчинг, сжатие, управление offset, ребаланс, идемпотентность, транзакции — и всё это разные библиотеки реализуют по-разному. Три родословные (референсный JVM-клиент, обёртки над librdkafka на C, чистые реализации протокола), почему у Go сразу несколько драйверов (franz-go/sarama/segmentio/confluent) и чем они отличаются, и что из этого следует для фич, производительности и деплоя. С живыми примерами produce/consume на Java, Go, Rust, Python, C#, C++, Scala

Индексы и языки/ORM: зависимость и особенности

Индексы и языки/ORM: зависимость и особенности

Зависят ли индексы от языка программирования и как ORM влияют на их использование: генерируемые запросы и N+1, неявные приведения типов, prepared statements и план, миграции индексов и как из кода проверить, что индекс реально работает