TGViewer
Лаборатория Математики и Программирования Сергея Бобровского Лаборатория Математики и Программирования Сергея Бобровского @lambda_brain · 1.41K subscribers
Post #1978 855
Закончил небольшой курс гайд "Функциональное Проектирование": реализуем с нуля проект (игру), который был заданием на третьем курсе ООАП (методика Бертрана Мейера). Я вкратце рассказывал, почему отказался от этого подхода в пользу функционального проектирования.
Теперь делаем в функциональной парадигме, и с акцентом на software design.

Весь исходный код C# приложен.

Цель и там и там одна: сколь бы ни был велик объём проекта (десятки тысяч сущностей -- классов, типов), мы сохраняем сложность его роста линейной, когда добавление новой фичи потребует O(С) (С - константа) усилий, независимо от количества "штук" (классов, функций, файлов) в проекте.

Демонстрирую полный процесс разработки с нуля, комментируя на каждом шаге, какой функциональный или архитектурный паттерн (или антипаттерн) применяю, и почему.

Примерный силлабус:

Базовая онтология
Синглетоны
Элемент на игровой доске
Игровое поле
GameEngine.cs :)
Минимально оживляем проект.
Очевидный(?) момент при функциональной декомпозиции
Чистая игровая логика
Когда функциональный стиль особенно хорош
Логика следует из правильных структур данных
Нашему алгоритму внутренняя семантика данных без разницы
Правильный стиль функционального кодинга
Эталонный пример
Отладка
Конвейер как функция
Стоит ли добавлять новый паттерн (например, Free Monad), или же можно обойтись локальным решением?
Ключевая задача проектирования: какой паттерн выбрать и, главное, как?
Легко и просто используем AI для чистых функций
Переписываем основной алгоритм в конвейерном стиле
Куда более сильная абстракция
Рекурсивный тип: не функциональный хак, а фундаментальный принцип структурного проектирования

+ 8 заданий с разбором.
  • 🔥 49
  • ❤ 11
More from @lambda_brain
  1. Oct 1, 2026Ребята спрашивают, ну ок, моё скромное мнение. у вас где-нибудь можно прочитать ваше мнени…
  2. Sep 30, 2026Ладно, вот вам база, почему так трудно переучиваться с императивного/объектного стиля коди…
  3. Sep 30, 2026Ну, с Днём Рунета! Многие годы Рунет был эталонным примером свободы, а сегодня превратился…
  4. Sep 28, 2026. Облако драгоценностей за неделю. Дипломный проект разросся уже так, что расширил его до…
  5. Sep 27, 2026GELU (Gaussian Error Linear Unit) -- базовая фича архитектуры трансформеров, да и вообще в…
  6. Sep 27, 2026Продолжение сериала "Совершенно не удивлён, и дальше будет только хуже" (с) На этой неделе…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →