Английская версия этой статьи ранее была опубликована мной в LinkedIn. Для Habr я подготовил адаптированную версию, добавил исторический контекст и подробнее раскрыл главный тезис.

Краткое содержание

  • Каждая крупная революция в программировании повышала уровень, на котором человек описывает машине свои намерения.

  • Джон Бэкус и команда FORTRAN перенесли работу программиста от машинных инструкций к формулам, циклам и условиям.

  • Генеративный ИИ сделал программный код дешёвым и практически мгновенным.

  • Главным дефицитом становится точное и целостное описание продукта: его целей, процессов, интерфейсов, данных, ограничений и поведения при сбоях.

  • Следующая среда разработки будет работать с моделью цифровой системы, из которой код, тесты, инфраструктура и документация смогут создаваться автоматически.


Есть фотография из ранней истории вычислительной техники, к которой я мысленно возвращаюсь снова и снова.

Человек стоит рядом с компьютером размером с комнату. Машина выглядит величественно: шкафы, панели, лампы, провода, пульты. Она стоит огромных денег и способна выполнять вычисления с недоступной человеку скоростью.

Однако перед началом работы человек должен подробно описать каждую операцию на языке внутреннего устройства этой машины.

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

Компьютер уже был мощным, а язык общения с ним оставался примитивным.

Вся история программирования выросла из этого противоречия. Машины становились быстрее, дешевле и доступнее. Люди снова и снова искали более удобную высоту, с которой можно ими управлять.

Настоящий скачок происходил в тот момент, когда менялся сам язык разговора.

«Рукопашный бой с машиной»

В начале 1950-х программирование научных расчётов требовало почти механического перевода математической задачи в длинную цепочку машинных операций.

Джон Бэкус называл эту работу «рукопашным боем с машиной».

Фраза хорошо передаёт физическое ощущение от раннего программирования. Учёный думает формулами, зависимостями и моделями. Процессор требует адреса памяти, переходы и последовательности элементарных команд.

Между замыслом и исполнением лежала огромная территория ручного перевода.

В 1953 году Бэкус собрал в IBM небольшую команду. Перед ней стояла идея, которая сегодня кажется почти очевидной: человек должен писать программу в форме, близкой к математической записи, а специальная система должна переводить её в машинные команды.

В те годы такое предложение звучало крайне смело.

Многие программисты сомневались, что автоматически созданный машинный код сможет работать с эффективностью кода, написанного опытным специалистом вручную. Производительность компьютеров была слишком дорогой, чтобы относиться к этому вопросу легкомысленно.

Команда Бэкуса потратила около трёх лет на разработку языка и оптимизирующего компилятора. В 1957 году пользователи IBM 704 получили первую рабочую версию FORTRAN.

Компилятор пришлось доказывать делом. Он создавал код, скорость которого приближалась к результатам ручной работы опытных программистов.

IBM приводит показательный пример: задача, требовавшая до тысячи машинных инструкций, могла быть описана 47 инструкциями на FORTRAN.

Человек получил возможность работать с формулами, циклами и условиями. Тысячи низкоуровневых решений переходили к компилятору.

Именно здесь произошло главное.

Бэкус изменил единицу человеческой работы

FORTRAN часто описывают как один из первых широко используемых языков высокого уровня. Такое определение верно, хотя оно слабо передаёт масштаб события.

Главным изобретением стала новая единица работы программиста.

Раньше программист управлял отдельными операциями машины. Теперь он мог описать вычислительную идею.

Раньше ценность специалиста во многом определялась способностью мыслить внутренними командами компьютера. Теперь ценность перемещалась в область математической модели, алгоритма и предметной задачи.

Повысилась производительность труда. Расширился круг людей, способных создавать программы. Снизилась стоимость разработки. Учёные и инженеры получили возможность выражать свои задачи напрямую.

У этой революции была важная экономическая причина.

Стоимость программирования начинала ограничивать полезность самих компьютеров. Более мощное оборудование создавало спрос на всё большее количество программ, а каждую программу должны были вручную собирать редкие специалисты.

Компиляция изменила это уравнение.

Человеческое внимание стало концентрироваться на научных, инженерных и деловых задачах. Повторяющийся перевод взяло на себя программное средство.

Так выглядит революция абстракции: внутренняя технология усложняется, а рабочая поверхность для человека становится выразительнее и понятнее.

Сложность сохраняется. Она получает новую организацию, автоматизацию и систему контроля.

Эта оговорка особенно важна сегодня.

Код перестаёт быть дефицитом

После FORTRAN тот же исторический рисунок повторялся много раз.

Структурное программирование помогло упорядочить управление программой. Объектно-ориентированный подход связал состояние и поведение с сущностями предметной области. Функциональное программирование выдвинуло на первый план композицию и преобразование данных. Системы управления базами данных отделили информационные модели от механики хранения. Облачные платформы скрыли значительную часть физической инфраструктуры.

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

При этом центр современной разработки по-прежнему находится в текстовых файлах.

Среды разработки умеют дописывать код, проводить рефакторинг, запускать тесты, собирать приложения, разворачивать инфраструктуру и показывать состояние работающей системы.

Центр притяжения всё равно остаётся прежним: исходный код.

Замысел продукта обычно живёт в других местах:

  • в протоколах встреч;

  • в макетах интерфейсов;

  • в схемах;

  • в задачах трекера;

  • в таблицах;

  • в переписке;

  • в документах;

  • в памяти отдельных сотрудников;

  • в устных договорённостях, которые участники проекта поняли по-разному.

Инженеры собирают эти фрагменты и переводят их в исполняемую форму.

Затем продукт меняется. Документы, макеты, задачи и реализация начинают расходиться. Через несколько месяцев никто уже до конца не понимает, какая часть первоначального замысла сохранилась, какая устарела и почему конкретное решение вообще появилось в системе.

Генеративный ИИ сделал эту слабость особенно заметной.

Модель способна написать сотни строк за несколько секунд. Она создаёт функции, компоненты, запросы к базе данных, тесты и конфигурационные файлы.

Синтаксис, который десятилетиями находился в центре производства программного обеспечения, становится изобильным ресурсом.

Узкое место перемещается.

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

Что именно должна делать система, при каких условиях, для каких людей, с какими данными, в каких границах и какими доказательствами правильности?

ИИ способен быстро написать реализацию.

Качество результата напрямую зависит от качества ответа на этот вопрос.

Разве промпт уже не стал новым языком программирования?

Это естественное возражение.

Мы уже можем описать задачу обычными словами, получить код, запустить его и продолжить работу через диалог. Возможно, следующая абстракция уже появилась, и называется она промптингом?

Промпт действительно повышает уровень взаимодействия с машиной. Он прекрасно подходит для исследования вариантов, генерации черновиков и локальных преобразований.

Проблема возникает при попытке построить долговечную систему.

Диалог постепенно теряет структуру. Важные решения прячутся среди сотен сообщений. Зависимости остаются неявными. Одна и та же инструкция в разных запусках может привести к разным реализациям. Связь между требованием, интерфейсом, данными, тестом и работающим сервисом быстро разрушается.

У организации появляется код. Целостная модель продукта при этом отсутствует.

Скорость растёт быстрее понимания.

Поэтому одного скрытия синтаксиса недостаточно. Надёжная платформа должна управлять архитектурой, проверкой, ответственностью, историей решений и памятью проекта.

Компилятор Бэкуса переводил формулы в машинные инструкции.

Следующей системе предстоит переводить модель цифрового продукта в код, тесты, инфраструктуру, документацию и конфигурацию работающей среды.

Следующий момент Бэкуса

Мне кажется, мы приближаемся к ещё одному изменению уровня абстракции.

Рабочей единицей станет цифровая система как целое.

Человек будет описывать:

  • цели;

  • участников;

  • состояния;

  • решения;

  • бизнес-правила;

  • процессы;

  • интерфейсы;

  • сущности данных;

  • ограничения;

  • права доступа;

  • внешние механизмы;

  • сценарии ошибок;

  • критерии правильности.

ИИ-агенты и компиляторы смогут превращать эту семантическую модель в исполняемую реализацию.

Изменится и профессиональный центр тяжести.

Будущий специалист вполне может глубоко понимать код. Архитектор здания понимает свойства материалов, работу конструкций и инженерные ограничения. При этом его ежедневная работа сосредоточена на устройстве целого.

В разработке возникнет похожая роль.

Такой специалист будет соединять продуктовое мышление, архитектуру, знание процессов, логику, этику, работу с данными и способность точно выражать намерения.

Я использую для этой роли название Code Designer — дизайнер кода или дизайнер цифровых систем.

Его основной материал — структура работающего продукта.

Какой должна быть новая среда

Чат подходит для разговора, однако длинный разговор быстро теряет форму.

Диаграмма хорошо показывает связи, однако обычно останавливается перед исполнением.

Редактор кода начинает работу после принятия множества важнейших продуктовых решений.

Новой среде придётся объединить эти разорванные части.

Она должна:

  • сохранять исходное намерение;

  • показывать связи и зависимости;

  • позволять исследовать систему на разных уровнях;

  • поддерживать симуляцию сценариев;

  • генерировать реализацию;

  • проверять результат;

  • хранить историю решений;

  • связывать каждый видимый элемент с кодом и работающим сервисом;

  • обновлять всю модель при изменении её части.

В такой среде интерфейс, логика и данные перестанут существовать как три отдельных мира.

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

Изменение одного элемента сразу покажет последствия для остальных.

Сложность никуда не исчезнет

Здесь легко попасть в ловушку красивой футуристической картинки.

Можно представить, что будущая платформа позволит собирать любые продукты простым перемещением блоков, а все трудные инженерные задачи растворятся внутри ИИ.

История абстракций говорит о другом.

Компиляторы не уничтожили сложность процессоров. Объектно-ориентированные языки не уничтожили сложность архитектуры. Облачные платформы не уничтожили сложность инфраструктуры.

Каждый новый уровень переносил часть сложности в платформу и создавал новые способы её контролировать.

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

Цена ошибки тоже возрастёт. Человек сможет создавать более крупные системы, а ошибочная модель будет масштабироваться вместе с возможностями генерации.

Поэтому новый уровень абстракции обязан одновременно давать свободу и сохранять инженерную дисциплину.

Язык для проектирования работающих систем

Подобные переходы почти всегда выглядят сомнительно в самом начале.

Языки высокого уровня считали слишком медленными. Графические интерфейсы воспринимали как декоративную надстройку. Облачные вычисления казались добровольной потерей контроля.

Каждая из этих технологий стала массовой после того, как перенесла сложную возможность на более человеческий уровень.

ИИ уже умеет писать код.

Теперь решающим становится другой вопрос:

Сможем ли мы создать язык проектирования продукта, который будет достаточно понятен человеку, достаточно точен для машины и достаточно устойчив для организаций, годами отвечающих за результат?

Бэкус дал программистам дистанцию от процессора.

Следующее поколение инструментов даст дизайнерам цифровых систем дистанцию от синтаксиса, сохранив контроль над работающей реальностью.

Именно этот сдвиг уровня абстракции сейчас ждёт своего часа.


Источники и материалы для дальнейшего чтения

  1. IBM — история FORTRAN

  2. IBM — Джон Бэкус

  3. John Backus — The History of FORTRAN I, II, and III

  4. John Backus — Can Programming Be Liberated from the von Neumann Style?

  5. ACM — John Backus, Turing Award

Комментарии (36)


  1. Dhwtj
    20.07.2026 10:58

    Разве промпт/спеки уже не стали новым языком программирования?

    Нет, не стали.

    Потому что никто не знает что это такое. И результат недерминируем как бросок кубика или поворот гача машины.

    Чем более ответственная программа тем это несоответствие критичней.

    Вы сможете ответить что должно быть в спецификации чтобы гарантированно корректно закрыть бизнес задачу и ничего не сломать? Критерий его полноты и качества.


    1. koreychenko
      20.07.2026 10:58

      Тут не каждый даже скажет что должно быть в бизнес задаче, чтобы её закрыть. :-)

      А по факту, если в проекте при изменении или дополнении кода можно поломать не связанный код, то у меня для вас плохие новости. При нормальной организации проекта современные модели прекрасно разбираются где границы, за которые не надо выходить.


      1. Dhwtj
        20.07.2026 10:58

        Где же ты видел нормально организованный проект


        1. koreychenko
          20.07.2026 10:58

          Я не только видел, я даже немножко делал :-)
          В случае если в проекте есть нормальный AGENTS.md с описанием структуры и проект хоть немного следует разделению кода по доменным областям, то обычно агенты нормально понимают где что.


      1. for7raid
        20.07.2026 10:58

        А модель способна создать такой проект? Ведь существующие проекты с хорошей структурой, если они вообще есть, когда-то, да закончатся.


    1. pilot114
      20.07.2026 10:58

      Речь же не про замену "код => ИИ", а про ""ручное программирование => автоматизированное программирование". Результат будет детерменированным ровно в той же степени, что и результат работы программиста


      1. k4ir05
        20.07.2026 10:58

        У вас в слове программирование куча ошибок. Правильно - кодирование.

        Результат будет детерменированным ровно в той же степени, что и результат работы программиста

        А в чём тогда польза?


        1. pilot114
          20.07.2026 10:58

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

          А в чём тогда польза?

          В экономии времени, или улучшении качества, смотря как подходить к процессу разработки. Программист в любом случае пишет код итерациями, с ИИ итерации быстрее, оставшееся время можно тратить на повышение метрик качества, или траву курить трогать, кому что ближе


    1. pureooplover
      20.07.2026 10:58

      И да, тем более - кто знает, точно ли код который нагаллюциногенил ИИ работает? Автор пишет что "ИИ уже умеет писать код", но он видимо путает (или забыл) "писать" с "написал и заработало как должно быть"


      1. Dhwtj
        20.07.2026 10:58

        Да. Доказательство корректности решения вообще отдельная сложная тема


  1. netricks
    20.07.2026 10:58

    Спеки именно как заменитель исходного кода не особенно то работают. Дьявол кроется в деталях, которые спеки не покрывают. Ну, или мы пока не знаем, как эти спеки правильно писать


    1. Dhwtj
      20.07.2026 10:58

      мы пока не знаем, как эти спеки правильно писать

      Мы уже десятки лет этого не знаем. Даже тяжёлые спецификации SRS на основе стандарта ISO/IEC/IEEE 29148:2011 не полны.

      Но раньше гэп между спецификациями и кодом закрывал компетентный программист. А сейчас - никто.


      1. netricks
        20.07.2026 10:58

        Этот никто довольно умён, чтобы закрывать разрыв, но архитектурное видение у него пока хромает.

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


        1. onyxmaster
          20.07.2026 10:58

          Программист, а особенно хорошая команда программистов, имеет нормальную память. У агентов с памятью, как ни обрабатывай и ни дистиллируй логи сессий, пока весьма дерьмовенько. Даже прекрасный Fable 5 забывает прямо на ходу прямые инструкции из скилла, загруженного меньше минуты назад, в почти пустом контексте. Потом при анализе пишет:
          the skill’s own gotcha text was independently re-verified empirically by the main agent (function f { return , @(1,2) } test), then still tripped it up once in its own placement-recheck script (see 1C) — the lesson was known but not internalized until it broke.

          Not, б, internalized.


        1. Dhwtj
          20.07.2026 10:58

          Этот никто довольно умён, чтобы закрывать разрыв

          Закрывать разрыв не обоснованно, не учитывая ограничений и приоритетов корректного проекта, а по шаблону.

          Это фигня


      1. Aleus1249355
        20.07.2026 10:58

        Как раз сейчас заметил, что если в мобильной версии хабра начать пересылать ссылку, но не скопировать её, а отменить действие, то вылезет ошибка. С номером 20 и описанием "share cancelled".

        Как по мне, неплохой пример для гэпа. Не знаю, хотел ли какой-то менеджер знать, как часто люди отменяют действие, но вряд ли было прописано "покажи ошибку пользователю". А ведь человек сидел, размышлял, добавлял custom exception. Наверняка на слишком глобальном catch попался.


        1. withkittens
          20.07.2026 10:58

          Убирайте подобные картинки на три экрана под спойлер, пожалуйста.


      1. Kerman
        20.07.2026 10:58

        Даже тяжёлые спецификации SRS на основе стандарта ISO/IEC/IEEE 29148:2011 не полны.

        Ну так можно же полную спецификацию написать


  1. gybson_63
    20.07.2026 10:58

    Я выскажу неочевидную аналогию. Чем более развито и образовано общество, тем сложнее и больше бюрократия. Не происходит упрощения управления/создания. Раньше вы просто собирали налоги, теперь вам надо построить на них ядерную бомбу. Легче и проще никогда не становится. И людей всегда надо все больше и больше. Все очень сильно усложнится.

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


    1. Void-Cowboy
      20.07.2026 10:58

      пф, фантасты все уже придумали! просто приводим общество к высокотехнологичному дикарству и все

      реальные ресурсы у кого надо, продукты пилятся узкими фрагментами что бы один идейный не мог нарушить работу всей системы,чем выше к "знаниям" тем выше тоталитаризм и конктроль

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


  1. AzIdeaL
    20.07.2026 10:58

    Следующий момент Бэкуса...

    ...

    Человек будет описывать:

    • цели

    • ...

    • критерии правильности

    Подтверждаю -- описывается.

    ЗЫ: спецификация зачотная


  1. Dan8601
    20.07.2026 10:58

    Ору. Сидят ребята и верят, что программирование перейдет на новый уровень в ближайшем будущем... Нет, не перейдет!!! Если программа не запускается на железе, которое доступно большинству, это априори бесполезная программа, так как в любой момент жизни краник могут перекрыть. Любая революция в программировании как в науке о формальных языках сопровождалась соответствующей технологической революцией, до которой нам с LLM ещё как до Луны, если считать по массовости


    1. exec77 Автор
      20.07.2026 10:58

      Начнём с измеримого? Что у вас значит «ближайшее будущее»: 1, 5 или 10 лет? Без срока тезис «не перейдёт» нельзя проверить. И чем меряем массовость: домашним железом у большинства или промышленной доступностью среды разработки через облако/локальные станции?