Введение в архитектуру ПО. Часть 2: Три парадигмы и сила ограничений

В данной статье вы узнаете о том, из чего складывается архитектура на уровне самого кода и почему разговор о ней начинается задолго до диаграмм и схем. Мы разберём три парадигмы программирования - структурную, объектно-ориентированную и функциональную - и главный парадокс, объединяющий их: каждая не расширяет возможности разработчика, а сознательно их ограничивает. Отдельно и подробно рассмотрена первая из них: как было доказано, что неограниченные переходы в коде вредят его структуре, почему исчезновение оператора безусловного перехода из современных языков вовсе не означает, что проблема решена, и в каких формах она продолжает существовать в сегодняшнем коде. Вы также поймёте, почему разработка программного обеспечения ближе к науке, чем к математике, что на самом деле доказывают тесты, и почему сложность написания теста - это диагноз архитектуре, а не тестам.

Spring event bus. Гарантия выполнения метода после коммита транзакции.

Сегодня коротко поговорим про Spring Event Bus и разберем одну задачку. Недавно столкнулся с ситуацией - есть некий общий функционал, который вызывается из совершенно разных роутов. Сами роуты обернуты в транзакцию.

Этичный вайбкодинг: Как создавать AI-решения ответственно

Вайбкодинг (vibe coding) — это подход, при котором разработчик не пишет код построчно, а задаёт ИИ направление и общие параметры задачи на естественном языке, а модель генерирует решение . Это творческий, быстрый и демократичный способ создания ПО, где программист становится «дирижёром» .

ChatGPT, Claude и Gemini в 2026 году: сравнение ИИ-помощников для разработчиков

В этой статье вы узнаете, чем ChatGPT, Claude и Gemini принципиально отличаются друг от друга при работе с кодом. Мы разберём сильные и слабые стороны каждой модели и сравним их по ключевым техническим параметрам. И что самое важное - вы получите не готовый ответ на вопрос «какой инструмент лучше», а понимание того, в каких сценариях разработки уместнее использовать ту или иную модель.

Java и деньги

Главная проблема работа с деньгами в программировании заключается в том, что привычные нам десятичные дроби компьютер хранит в двоичной системе. Из-за этого 0.1 + 0.2 в double превращается в 0.30000000000000004.

Gstack: Как Гэрри Тан превращает вайб-кодинг в рабочий процесс

Вайб-кодинг подкупает лёгкостью: описываешь словами, что нужно, и через минуту на экране рабочий прототип. Никаких тикетов, ревью и совещаний, поток идей сразу в код. Но у потока есть ограничений. Пока проект маленький, всё живёт; как только он вырастает, агент уверенно выдаёт код, который выглядит правильным, но таким не является, архитектура плывёт, баги всплывают в проде.

Промпт-инжиниринг для дизайна и кода: Как разговаривать с AI, чтобы он делал работу, а не мусор

Вы когда-нибудь просили нейросеть нарисовать «современный интерфейс для интернет-магазина» и получали нечто, напоминающее сайт 2010 года с кислотными цветами и непонятными кнопками? Или просили сгенерировать компонент на React, а AI выдавал код, который невозможно поддерживать, полный устаревших практик и багов? Это не «глупая нейросеть».

Циклическое кодирование времени для прикладных задач

Сегодня мы поговорим о простом, но действенном математическом способе преобразования данных о времени из линейного промежутка в окружность, имитирующую циферблат часов. Необходимость таких трансформаций появляется в тех случаях, когда алгоритму машинного обучения или разрабатываемому нами сервису важно понимать, что время в сутках идет по кругу и что разница в отметках (например, времени входа) 23:59 и 00:01 незначительная.

Git: как перенести проект на новый сервер без старой истории

При смене хостинга, передаче проекта заказчику или выходе в open source часто возникает необходимость перенести код в новый репозиторий. В этой статье мы рассмотрим, как сделать это чисто: обнулить историю коммитов и перенести на новый сервер только актуальное состояние проекта. Мы не будем использовать сторонние утилиты или сложные скрипты - задача элегантно решается стандартными средствами Git.

Strapi в эпоху AI-coding: почему dev-first CMS выигрывает

Традиционный CMS умирает медленно, но неотвратимо. WordPress вместе со своей монолитной архитектурой, которая одновременно хранит контент, рендерит HTML и управляет темами, становится всё менее привлекательным выбором для команд, которые думают о scale и гетерогенных клиентах — web, mobile, IoT, голосовые интерфейсы. Headless CMS решает эту проблему разрывом слоёв: бэкенд управляет контентом и отдаёт его через API, а фронтенд полностью свободен в выборе стека.

Именованное деструктурирование в Kotlin

Доброго дня! Сегодня поговорим об одной из экспериментальных фич Kotlin, а именно о деструктурировании. Проблема Деструктурирование в Kotlin - удобная вещь. Всё работает через сгенерированные методы componentN(), и синтаксис получается приятным: data class User(val name: String, val age: Int) val user = User("Max", 23) val (name, age) = user println("$name is $age years old") Но за этим удобством скрывается ловушка.

Микроанимация в интерфейсах: Как сделать цифровой продукт живым, понятным и комфортным

Представьте, что вы нажимаете на кнопку в приложении, и... ничего не происходит. Тишина. Кнопка даже не меняет цвет. Возникло ли ощущение, что вы сделали что-то не так? Или что приложение «зависло»? А теперь вспомните, как приятно, когда кнопка слегка «вдавливается» под пальцем, когда переключатель плавно скользит из положения «выкл» в «вкл», когда сердечко лайка пульсирует после нажатия.

Gitlab CI: запуск пайплайна при обновлении upstream-репозитория

Сегодня в этой небольшой заметке мы покажем пример файла .gitlab-ci.yml, который описывает пайплайн, осуществляющий какие-либо действия с нашим репозиторием в момент, когда в другом проекте выходит новая версия.

Эволюция инженера: как перейти в AI Engineering, не бросая всё, что вы умеете

В данной статье вы познакомитесь с основами AI Engineering и узнаете, с чего начать переход в эту область, если у вас уже есть опыт в классической разработке. Разберём базовые концепции — токены, эмбеддинги, температуру — и покажем, как они соотносятся с привычными инженерными понятиями. На простых примерах рассмотрим типизацию вывода языковых моделей, принципы работы агентов, паттерн RAG и основы управления состоянием. Главная идея: накопленные знания в области бэкенда, проектирования систем и паттернов проектирования не теряют своей ценности — они становятся фундаментом для работы с AI-инструментами. Статья не претендует на исчерпывающее руководство, но даёт отправную точку для тех, кто хочет сделать первые шаги в AI Engineering, опираясь на то, что уже умеет.

UX-тексты для новичков: Как писать интерфейсы, которые говорят на языке пользователя

Представьте: вы открываете приложение, чтобы удалить давно надоевшую подписку. Вы находите нужную кнопку... а на ней написано: «Деактивировать рекуррентный платёжный мандат». Что вы сделаете? Скорее всего, закроете приложение и подумаете: «Я слишком стар для этого».

Неоднозначные отношения Kotlin с Hibernate

Kotlin позиционируется как язык, который призван сделать жизнь Java разработчика счастливее. Код становится лаконичнее, Null-safety спасает от NPE, а стандартная библиотека - удовольствие. Но когда мы подключаем к этому котлу JPA-провайдер (например Hibernate), начинаются интересные сюрпризы.

Немного о porcelain и plumbing командах, а также о типах объектов в git

В данной статье рассмотрим специфику использования porcelain и plumbing команд в git, обратим внимание на их достоинства и недостатки, разберемся в типах объектов git и отметим несколько полезных малоизвестных команд

Astro.js: современный фреймворк для контент-ориентированных сайтов

Astro — это фреймворк для сайтов и веб-приложений, который по умолчанию рендерит большую часть страницы в статический HTML на сервере, а JavaScript подключает только там, где он действительно нужен. Такой подход называется islands architecture: основная часть страницы остается «легкой», а интерактивность добавляется небольшими изолированными фрагментами.

Введение в архитектуру ПО. Часть 1: Истинная ценность структуры и цена спешки

В данной статье вы узнаете о том, что такое архитектура программного обеспечения и зачем она нужна на практике. Мы разберём, почему качество структуры системы напрямую влияет на скорость и стоимость разработки, к каким последствиям приводит пренебрежение архитектурой ради быстрого запуска продукта, и чем грозит накопленный технический долг. Вы также познакомитесь с двумя ключевыми ценностями любого программного продукта — поведением и структурой — и поймёте, почему гибкость системы в долгосрочной перспективе важнее идеального функционала в моменте. Отдельное внимание уделено тому, как разработчику выстраивать аргументированный диалог с руководством и обосновывать важность архитектурных решений на языке бизнеса.
RSS (Opens New Window)(Opens New Window)
thumbnail Romo Fedoroff
Posts: 59
Date: 9/2/26
thumbnail Maxim Kalabukhov
Posts: 7
Date: 8/7/26
thumbnail Никита Рогаленко
Posts: 27
Date: 8/4/26
thumbnail Vadim Mikhu
Posts: 7
Date: 7/9/26
thumbnail Andrei Maksimov
Posts: 20
Date: 3/30/26
thumbnail Polina Napolskaya
Posts: 4
Date: 3/4/26
thumbnail Александра Пирс
Posts: 31
Date: 10/7/25
thumbnail Dmitry Afanasiev
Posts: 64
Date: 8/7/25
thumbnail Тимофей Перцев
Posts: 37
Date: 7/29/25
thumbnail Arseny Antonovich Konovalov
Posts: 1
Date: 6/25/25
thumbnail Daria Zuban
Posts: 12
Date: 3/7/25
thumbnail Marina Pashnina
Posts: 35
Date: 3/3/25
thumbnail Алексей Егошин
Posts: 17
Date: 1/13/25
thumbnail Дмитрий Сазонов
Posts: 61
Date: 12/6/24
thumbnail Nikolay Emchenko
Posts: 19
Date: 11/27/24
thumbnail Jonathan F. Keker
Posts: 6
Date: 11/7/24
thumbnail Andrey Karabanov
Posts: 2
Date: 10/31/24
thumbnail Evgenij Tsopa
Posts: 52
Date: 10/2/24
thumbnail Dmitry Sheshukov
Posts: 17
Date: 9/26/24
thumbnail Sviatoslav Osipov
Posts: 4
Date: 8/4/24
thumbnail Danil Khanalainen
Posts: 3
Date: 5/8/24
thumbnail Alexey Weiss
Posts: 17
Date: 5/7/24
thumbnail Денис Серянкин
Posts: 2
Date: 12/18/23
thumbnail Anna Ershova
Posts: 2
Date: 10/30/23
thumbnail Erik Karapetyan
Posts: 12
Date: 9/9/23
thumbnail Pavel Danilov
Posts: 12
Date: 9/9/23
thumbnail Maxim Zhukov
Posts: 152
Date: 6/20/23
thumbnail Vladislav Sivirin
Posts: 1
Date: 5/22/23
thumbnail Vadim Kholoshnia
Posts: 1
Date: 4/17/23
thumbnail И Горь
Posts: 27
Date: 2/20/23
thumbnail Dmitry Komarov
Posts: 2
Date: 6/2/22
thumbnail Semyon Gruzdev
Posts: 1
Date: 11/17/21
thumbnail Victor Scherbakov
Posts: 3
Date: 9/3/21
thumbnail Ivan Kayukov
Posts: 10
Date: 8/17/21
thumbnail Alexander Zhermal
Posts: 8
Date: 4/16/21
thumbnail Alexander Yarkeev
Posts: 42
Date: 12/23/20
thumbnail Alexey Pismak
Posts: 2
Date: 12/9/20
thumbnail Александр Исаев
Posts: 5
Date: 9/15/20
thumbnail Александр Пашнин
Posts: 25
Date: 9/10/20
thumbnail Danil Sinitskiy
Posts: 3
Date: 9/2/20
thumbnail Valeriy Urrievich Kireev
Posts: 26
Date: 1/15/20
thumbnail Vladimir Nikolaev
Posts: 14
Date: 12/30/19
thumbnail Ivan Uskov
Posts: 23
Date: 12/16/19
thumbnail Андрей Дьяков
Posts: 25
Date: 6/27/19
thumbnail Sergey Zhmylove
Posts: 45
Date: 3/14/18
thumbnail Lev Koznov
Posts: 18
Date: 7/14/17
thumbnail DEADBEEF
Posts: 1
Date: 1/16/17
thumbnail Никита Патрахин
Posts: 2
Date: 8/15/16
thumbnail Vladimir Berlev
Posts: 3
Date: 11/26/15
thumbnail Sergey Klyaus
Posts: 58
Date: 6/21/15
thumbnail Pakhom Golynga
Posts: 20
Date: 3/3/14
thumbnail Vladislav Sovinskiy
Posts: 11
Date: 1/10/14
thumbnail Konstantin Borzov
Posts: 7
Date: 6/20/13
thumbnail Anthony Dmitriev
Posts: 4
Date: 2/19/13
thumbnail Nicolay Smirnov
Posts: 6
Date: 5/2/12
thumbnail Alexander Deiter
Posts: 16
Date: 9/8/11
thumbnail Serge Klimenkov
Posts: 8
Date: 7/26/11
thumbnail Roman Ambrosenko
Posts: 3
Date: 1/18/11
thumbnail Sergey Shilin
Posts: 9
Date: 11/5/10
thumbnail Ruslan F. Isbarov
Posts: 1
Date: 3/31/10