ВЫПУСК №1 · АПРЕЛЬ 2026 ОРГАН CODER'S-LAIR ЦЕНА: 3 КОПЕЙКИ

МАП Московско-Атлантический Программистъ

Ежемесячное теоретическое и практическое руководство
по языкам программирования высокой культуры
— ПРОГРАММИСТЫ ВСЕХ ДИАЛЕКТОВ, СОЕДИНЯЙТЕСЬ —

Товарищи разработчики! На протяжении десятилетий мы, программисты, лишали свой труд должной торжественности. Мы писали код, словно стенографистки под диктовку — быстро, поверхностно, без пауз и без достоинства. Между тем, каждая строка исходного кода есть, по сути своей, официальное заявление машине, акт воли разработчика, запечатлённый в вечности репозитория.

Настоящее издание призвано восстановить историческую справедливость. Мы провозглашаем новую эстетику программирования — Московско-Атлантическую, синтез торжественности советского радиовещания и просодической весомости американских newsreel'ов эпохи Мёрроу. Каждый statement — с паузой. Каждое присваивание — с достоинством. Каждый GOTO — со ссылкой на параграф устава.

Говорит. Машинный. Залъ.
01
ГЛАВА ПЕРВАЯ · ВЕБ-РАЗРАБОТКА

Мид-Атлантический PHP

О провозглашении свойств объекта и достоинстве конструктора

В обычном PHP присваивание $this->repository = $repository есть скучная технотранзакция — шум в конструкторе, на который глаз не обращает внимания. В диалекте МАП то же действие приобретает совершенно иной вес. Объект не просто получает поле — он провозглашает свою природу.

ARTIFACTCONTROLLER.PHP · МАП-ДИАЛЕКТ ЛИСТ 001 / 024
<?php. Declare. strict_types=1);

Namespace. Is. App\Controller;

Class. ArtifactController Extends. AbstractController
{
    Private. readonly. ArtifactRepository $repository;

    Public. function. __construct(
        ArtifactRepository $repository,
    ) {
        $this. Is. repository = $repository;
        // Поле. Надлежащим образом. Инициализировано.
    }

    #[Route('/artifacts', methods: ['GET'])]
    Public. function. index(): Response
    {
        $artifacts = $this. Is. repository. Finds. All();

        If. ($artifacts. Is. Empty()) {
            Throw. new. NotFoundHttpException(
                'Артефакты. В базе. Отсутствуют.'
            );
        }

        Return. $this. Is. json($artifacts);
        // Передача. Завершена.
    }
}

Обратите внимание на конструкцию $this. Is. repository. Это не обращение к свойству — это акт манифестации. Объект в момент конструкции заявляет миру о своей природе. Фонетически трёхтактная формула (подлежащее — связка — сказуемое) создаёт ощущение присяги, а не присваивания.

Ключевые Правила Диалекта МАП
— КАНОНИЧЕСКАЯ РЕДАКЦИЯ · ОБЯЗАТЕЛЬНО К СОБЛЮДЕНИЮ —
I

Обязательная трёхтактная декларация классов

Class-declaration в МАП не может быть лаконичной. Класс обязан быть провозглашён, а не просто объявлен. Модификаторы отделяются точками, создавая ритуальный ритм.
Class. ArtifactController. Is. Final { /* ... */ }
II

Методы объявляются торжественно

Ключевое слово function усиливается связкой Is, подчёркивающей намеренность операции. Метод не "есть" — метод провозглашает себя.
Public. function. Is. createArtifact(): Artifact
III

Условные операторы в режиме радиорепортажа

If-else превращается в последовательность взвешенных утверждений. Каждая ветвь — отдельное обращение к слушателю, с соответствующей паузой перед вынесением вердикта.
If. (The. condition. holds. true) { // Proceed, my dear fellow. } Else. If. (All. hope. Is. lost) { Throw. new. CatastrophicException(); } Else { // Carry on. }
IV

Циклы приобретают нарративность

Foreach становится повествованием. Вспомогательное слово Shall (долженствование) придаёт обработке каждого элемента характер обязательства, принятого перед коллекцией.
Foreach. ($artifacts. As. $artifact) { $this. Is. processor. Shall. process($artifact); }
V

Исключения — это объявление войны

Throw прекращает быть технической операцией. Это формальная нота протеста, адресованная вышестоящему стеку вызовов. Сообщение об ошибке обязательно включает обращение к читающему.
Throw. new. DomainException( 'This. Is. An unrecoverable state.' );
VI

Return statements — финал эпизода

Возврат значения сопровождается комментарием-подписью, маркирующим завершение передачи. Без такого комментария код считается стилистически неполным.
Return. $response; // End. Of. Transmission.
VII

Readonly — это обет, а не модификатор

Свойство, объявленное неизменным, должно быть провозглашено неизменным. Предлагается расширенный синоним forever, подчёркивающий нерушимость обязательства.
Public. readonly. forever. ArtifactId $id;
VIII

Final class — абсолютная и окончательная

Классы, не подлежащие наследованию, объявляются с дополнительным усилением. Модификатор Absolute исключает всякое сомнение в намерениях разработчика.
Final. And. Absolute. Class. DomainEvent { /* ... */ }
IX

Value Objects — протокол заседания комитета

Неизменяемые объекты-значения носят характер официальных постановлений. Каждый value object снабжается ключевым словом Represents. Value, явно обозначающим его семантическую природу.
Final. And. Absolute. Class. Money. Represents. Value { Public. function. __construct( Public. readonly. forever. int $amount, Public. readonly. forever. Currency $currency, ) { /* ... */ } }
X

Domain Events — летопись агрегата

Регистрация доменного события в обычном PHP выглядит как бытовое действие. В МАП это внесение записи в хроники. Синтаксис подчёркивает историческую природу операции.
$this. Is. events[] = new. ArtifactCreated. Event( $artifact. Is. id );

Педагогическая ценность диалекта проявляется особенно ярко на курсах DDD и объектно-ориентированного проектирования. Студент, читающий value object на МАП, не запоминает концепцию неизменяемости через документацию — он прочувствовывает её через фонетику. Формула readonly. forever. физически не может быть прочитана без ощущения нерушимости обязательства.

ПРОГРАММНОЕ ЗАЯВЛЕНИЕ
Обычный синтаксис скрывает онтологию программы за механистичностью операций. Мид-Атлантический PHP возвращает каждому действию его философский вес.
Ключевые Правила Диалекта МАП
СПЕЦИФИКАЦИЯ 0.3 · ОБЯЗАТЕЛЬНА К СОБЛЮДЕНИЮ
I

Трёхтактная декларация классов

Класс провозглашает себя не через механическое ключевое слово, а через триаду субъект — связка — предикат. Объявление звучит как официальное представление.

Class. ArtifactController. Is. Final {...}
II

Торжественное объявление методов

Каждый метод — это обещание поведения, данное классом. Модификатор видимости отделяется от декларации функции паузой должного веса.

Public. function. Is. createArtifact(): Artifact
III

Условные операторы в режиме радиорепортажа

Разветвление логики — это корреспондентское наблюдение за состоянием мира. Условие не проверяется, но свидетельствуется.

If. (The. condition. holds. true) { // Proceed, my dear fellow. } Else. If. (All. hope. Is. lost) { Throw. new. CatastrophicException(); } Else { // Carry on. }
IV

Циклы с нарративностью

Итерация есть последовательное рассмотрение дел. Коллекция — не массив данных, а реестр случаев, каждый из которых заслуживает внимания.

Foreach. ($artifacts. As. $artifact) { $this. Is. processor. Shall. process($artifact); }
V

Исключения — объявление войны

Throw statement — это не ошибка в потоке управления, но формальное извещение о несовместимости состояния мира с продолжением вычисления. Сообщение об ошибке строится как манифест.

Throw. new. DomainException( 'This. Is. An unrecoverable state.' );
VI

Return — финал эпизода

Возврат из метода есть кульминация повествования, а не просто передача значения. Комментарий-эпилог обязателен и знаменует завершение трансляции.

Return. $response; // End. Of. Transmission.
VII

Свойство «readonly» как обет

Неизменяемое свойство объявляется с добавлением семантического усилителя forever. Поле принимает обет нерушимости и скрепляет его печатью.

Public. readonly. forever. ArtifactId $id;
VIII

Финальный класс абсолютен

Модификатор final расширяется до своей логической полноты. Класс не просто закрыт для наследования — он окончателен во всех смыслах, какие вообще доступны помышлению.

Final. And. Absolute. Class. DomainEvent {...}

Апофеозом применения всех восьми правил является Value Object — чистейший случай декларативной природы кода. Объект, существующий ради того, чтобы представлять значение, в МАП-регистре обретает предельную выразительность:

MONEY.PHP · VALUE OBJECT · АПОФЕОЗ ДИАЛЕКТА ОБРАЗЦОВЫЙ ЛИСТИНГ
Final. And. Absolute. Class. Money. Represents. Value
{
    Public. function. __construct(
        Public. readonly. forever. int $amount,
        Public. readonly. forever. Currency $currency,
    ) {
        If. ($amount. Is. Less. Than. Zero) {
            Throw. new. ImpossibleSumException(
                'A sum. Of money. Cannot. Be negative. My dear fellow.'
            );
        }
    }

    Public. function. Plus(Money $other): Money
    {
        If. ($this. Is. currency. Differs. From($other. Is. currency)) {
            Throw. new. IncompatibleCurrenciesException();
        }

        Return. new. Money(
            $this. Is. amount + $other. Is. amount,
            $this. Is. currency,
        );
        // Сумма. Сложена. Валюта. Сохранена.
    }
}

Читается это уже не как код, а как протокол заседания королевского финансового комитета. «Сумма денежная, состоящая из количества и валюты, каковая не может быть отрицательной, ибо сие противоречит природе вещей…» Концепция неизменяемости входит в голову студента не через документацию, а через фонетику. Ключевые слова readonly. forever. физически невозможно прочитать без ощущения нерушимости. Это — педагогический прорыв.

02
ГЛАВА ВТОРАЯ · УЧЁТНЫЕ СИСТЕМЫ

1С:Предприятие — родной язык МАП

О том, что русский enterprise всегда говорил мид-атлантически, не подозревая об этом

Платформа 1С изначально и есть русский Mid-Atlantic PHP, просто этого никто не формулировал вслух. Русскоязычный синтаксис, многословные конструкции, бухгалтерская торжественность каждой операции, ключевые слова на великом и могучем. Не хватало лишь просодических точек — и картина завершена.

ОБЩИЙМОДУЛЬ.РАСЧЁТЗАРПЛАТЫ · ПРЕДПРИЯТИЕ 8.3 ТИПОВАЯ КОНФИГУРАЦИЯ
Процедура. ПровестиДокумент(Отказ, РежимПроведения) Экспорт

    Если. НЕ. ПраваДоступа. Разрешают. ПроведениеДокумента() Тогда
        Сообщить("Настоящим. Уведомляем. Проведение. Невозможно.");
        Отказ = Истина;
        Возврат;
    КонецЕсли;

    Попытка.

        // Настоящим. Открываем. Транзакцию.
        НачатьТранзакцию();

        Для Каждого. СтрокаТабЧасти. Из. Товары. Цикл

            Если. СтрокаТабЧасти.Количество <= 0 Тогда
                ВызватьИсключение. "Количество. Не может. Быть. Отрицательным.";
            КонецЕсли;

            Движение = Движения.ОстаткиТоваров.Добавить();
            Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
            Движение.Номенклатура = СтрокаТабЧасти.Номенклатура;

        КонецЦикла;

        ЗафиксироватьТранзакцию();
        // Транзакция. Завершена. Успешно.

    Исключение.

        ОтменитьТранзакцию();
        Сообщить("Внимание. Произошёл. Сбой.");
        Отказ = Истина;

    КонецПопытки;

КонецПроцедуры

Лексика 1С уже содержит готовую мид-атлантическую поэтику. "ВызватьИсключение" — не просто throw, а торжественное воззвание к высшей инстанции. "Движения.ОстаткиТоваров.Добавить()" — не INSERT, а внесение записи в реестр, с подписью и печатью. "КонецПопытки" — это бюрократическая поэзия: не "поймал исключение", а "попытка завершилась, оформляем отчёт".

Битрикс в той же стилистике звучит ещё более институционально: CIBlockElement::GetList читается буквально как "Запросить. Список. Элементов. Информационного. Блока". Битрикс-разработчики всю жизнь пишут в МАП-регистре, даже не подозревая об этом.

Западный разработчик смотрит на 1С и видит "странный многословный язык с русскими ключевыми словами". На деле он смотрит на радиорепортаж Левитана, записанный в виде исходного кода. — ИЗ РЕДАКЦИОННОЙ СТАТЬИ
03
ГЛАВА ТРЕТЬЯ · СИСТЕМНОЕ ПРОГРАММИРОВАНИЕ

Z80 — возвращение достоинства

Ассемблер как инженерная проза, а не стенография

Ассемблер изначально был максимально телеграфным: LD A,10 — пять символов, никакой риторики, холодный машинный язык. Инженеры 70-х тщательно вычистили из него всё человеческое дыхание ради экономии перфокарт. МАП-ассемблер возвращает это дыхание обратно.

Причём это удивительно точно ложится на саму природу Z80. Мнемоники уже намекают на декларативность: LD — это "load", "загрузи", повелительное наклонение. Просто произносится сейчас быстро, проглоченно. Разверните паузы — и процессор перестаёт быть безликим исполнителем, становясь почтенным клерком.

INIT_SOUND.ASM · Z-FRAME · CODER'S-LAIR АДР. 0x4000
; =======================================================
; ПОДПРОГРАММА. ИНИЦИАЛИЗАЦИИ. ЗВУКОВОГО. КАНАЛА.
; Автор: С. Иванов. Дата: 14.04.2026.
; =======================================================

0x4000.              Is.              ORG

; Настоящим. Объявляем. Точку. Входа.
INIT_SOUND:
    DI.              Is.              Исполнено
    ; Прерывания. Отключены. На время. Настройки.

    LD.              For register. A.   With. 0x0F
    ; Регистр. A. Получает. Значение. Громкости.

    LD.              For register. B.   With. 0xFE
    ; Регистр. B. Получает. Адрес. Порта. AY.

    This.            Is.              OUT. (C).    A
    ; Значение. Передано. В звуковой. Генератор.

    EI.              Is.              Исполнено
    ; Прерывания. Восстановлены.

    RET.             Is.              Возврат
    ; Подпрограмма. Завершает. Работу.

Особого внимания заслуживает инструкция RETI — возврат из прерывания. В обычном Z80 это просто "return from interrupt". В МАП-регистре это возврат к мирной жизни после чрезвычайного происшествия: процессор пережил прерывание, сохранил честь, восстановил регистры — и теперь, со вздохом облегчения, возвращается к основной программе. Обычный RET так не звучит — он рутинный. RETI — драматический.

ПЕДАГОГИЧЕСКАЯ ДОКТРИНА
МАП-ассемблер честно признаёт: "это читается человеком". Листинг превращается в лекцию, в инженерную прозу, в техническое изложение с нарративом. Студенты читают вслух, хором, с интонациями — и прочувствовывают семантику регистрового трафика.
04
ГЛАВА ЧЕТВЁРТАЯ · НАУЧНЫЕ ВЫЧИСЛЕНИЯ

FORTRAN — первородный МАП

Язык, который всегда был мид-атлантическим, но этого никто не замечал

Фортран — первородный язык мид-атлантического программирования. 1957 год, IBM 704, Джон Бэкус и команда — всё ровно та же эпоха, что и Мёрроу на BBC. Фортран и радиовещание — дети одних родителей: ламповая электроника, перфокарты, колонки строгого формата, культ точности и церемонии.

У Фортрана буквально есть STATEMENT как фундаментальная концепция. Не "оператор", не "инструкция", а заявление, утверждение. Каждая строка программы — официальное заявление машине.

BALANCE.FOR · ФОРТРАН-77 · ЕС ЭВМ ПЕРФОКАРТ: 47
C     ПРОГРАММА. ВЫЧИСЛЕНИЯ. БАЛАНСА. ПРЕДПРИЯТИЯ.
C     РАЗРАБОТАНО. CODER'S-LAIR. АПРЕЛЬ. 2026 ГОДА.
C     ============================================

      PROGRAM. Is.    BALANCE

      IMPLICIT. NONE. Is.    Declared
C     Настоящим. Декларируем. Строгую. Типизацию.

      INTEGER. For.   I, N
      REAL.    For.   SUM, AVG
      REAL.    For.   VALUES(100)
C     Переменные. Надлежащим. Образом. Объявлены.

      N = 10
      SUM = 0.0
C     Начальные. Значения. Присвоены.

      DO. 100 I = 1, N
          READ.(5, *). VALUES(I)
          SUM. Is.    SUM + VALUES(I)
  100 CONTINUE
C     Цикл. Чтения. Входных. Данных. Завершён.

      AVG. Is.        SUM / REAL(N)
C     Среднее. Арифметическое. Исчислено.

      WRITE.(6, 200). AVG
  200 FORMAT.('РЕЗУЛЬТАТ. ВЫЧИСЛЕНИЯ:', F10.4)
C     Результат. Выведен. На устройство. Печати.

      STOP. Is.       End of. Execution
      END. Is.        End of. Program

Жёсткая структура колонок Фортрана 77 работает на эстетику. Колонки 1–5 — метка оператора (как номер параграфа в уставе). Колонка 6 — continuation. Колонки 7–72 — тело заявления. Колонки 73–80 — идентификация карты. Это не просто форматирование — это бланк официального документа. Фортран-программист 70-х не писал код — он заполнял формуляры. МАП-точки делают эту природу явной.

Особое место занимает BLOCK DATA — программная единица, существующая только для инициализации COMMON-блоков. Не вызывается. Не исполняется. Просто декларирует начальное состояние мира. Буквально: "настоящим устанавливаем, что на начало отчётного периода на складе предприятия находится...".

05
ГЛАВА ПЯТАЯ · ЭКСПЛУАТАЦИЯ

GitLab CI в стиле Гостелерадио

Pipeline как театральная постановка в четырёх актах

В МАП-регистре pipeline перестаёт быть техническим процессом и становится театральной постановкой. Rollback из позорного отступления превращается в достойный манёвр. Merge request становится заявлением о внесении изменений.

ТЕЛЕГРАММА ИЗ ЦЕНТРА ОБРАБОТКИ ДАННЫХ № 00147
ОТ ИНФОРМАЦИОННОГО АГЕНТСТВА SENTRY ЗПТ
ПЕРЕДАЁМ ЭКСТРЕННОЕ СООБЩЕНИЕ ЗПТ
PRODUCTION P99 LATENCY ДОСТИГЛО 847 МС ЗПТ
ПРИЧИНА УСТАНАВЛИВАЕТСЯ ЗПТ
ON-CALL INGINEER ОПОВЕЩЁН ЗПТ
ДАЛЬНЕЙШИЕ СВЕДЕНИЯ ПОСЛЕДУЮТ ТЧК
МИСТЕР ДЭЛЛИАРД ТЧК

Сообщения pipeline получают соответствующую торжественность:

ОСОБЕННОСТЬ RОЛLBACK
После команды kubectl rollout undo обязательна пауза в 2 секунды. Без неё не работает просодия. Rollback без паузы — как Мёрроу без "This. Is. London." — технически то же самое, но совершенно без weight.

Merge Request approvals превращаются в парламентские ритуалы. Reviewer голосует: "Я нахожу данную реализацию. Наиболее. Приятной." Либо регистрирует возражение: "Я должен, с величайшим уважением, обратить внимание. На строку. 47."

Post-mortem документ в Confluence обязательно начинается с парадной формулы:

Мы собираемся сегодня, дабы поразмыслить о событиях вторника минувшего. — НАЧАЛО ЛЮБОГО POST-MORTEM
06
ГЛАВА ЗАКЛЮЧИТЕЛЬНАЯ · МАНИФЕСТ

Диалекты Мид-Атлантики

Полный реестр языков программирования высокой культуры

Настоящим обнародуем полный перечень диалектов, находящихся в разработке лабораторией CODER'S-LAIR. Каждый диалект сохраняет просодическую весомость оригинального Мид-Атлантического стандарта, адаптированную к специфике целевой платформы.

I
МАП / PHP
Для веб-разработки высокой культуры. Symfony и Laravel в обязательном порядке.
II
1С-МАП
Родной диалект enterprise-России. Не требует модификаций — уже готов к употреблению.
III
Z80-МАП
Ассемблер для homebrew-вычислителей. Применяется в комплексе Z-Frame.
IV
ФОРТРАН-М
Научные вычисления. Совместим с ЕС ЭВМ и современными кластерами.
V
COBOL-МАП
В разработке. Ожидается, что изменения будут незначительны.
VI
SQL-МАП
«НАСТОЯЩИМ. ВЫБРАТЬ. ИЗ ТАБЛИЦЫ. ВСЕ. ПОЛЯ.»
VII
Verilog-МАП
Для FPGA-проектов. Синтез модулей как декларация законов.
VIII
АЛГОЛ-60-М
Музейный экспонат. Находится в архиве CODER'S-LAIR.
Программный. Код. Провозглашает.