Программирование как построение теории
- title
- Программирование как построение теории
- type
- concept
- summary
- Тезис Наура 1985 года: главный продукт программирования - общая ментальная модель команды, а код и тесты лишь артефакты этой теории
- tags
- software-engineering, philosophy
- created
- 2026-05-10
- updated
- 2026-07-29
- lang
- ru
- translation_of
- programming-as-theory-building
- source_updated
- 2026-07-29
- translated
- 2026-09-01
- translator
- lllm/antigravity/gemini-3.7-flash-medium
В эссе 1985 года Петер Наур утверждает, что программирование - это построение теории, а не производство текста. Под "теорией" понимается общая ментальная модель программы, которой владеет команда: что программа делает, чего не делает, почему было принято каждое проектное решение, как программа соотносится с окружающим миром и какие расширения для неё естественны, а какие нет.
Сильная формулировка этого тезиса состоит в том, что теорию невозможно полностью зафиксировать на бумаге. Документация, код и тесты - это лишь проекции теории, а не сама теория. Новый инженер, читая всё это изолированно, не может восстановить исходную теорию: он способен лишь построить новую, которая будет в тонкостях отличаться. Именно поэтому сопровождающие давно заброшенной кодовой базы вносят изменения, которые сами по себе выглядят разумно, но авторам оригинала кажутся чужеродными - они просто опираются на другую теорию.
С помощью этого Наур объясняет несколько закономерностей:
- Почему оценки сроков ненадёжны: оценивать - значит проецировать работу на теорию, которой у вас ещё нет
- Почему "переписывание с нуля" обычно заканчивается плохо: вы заново строите теорию, а не просто переписываете код
- Почему парное программирование и code review работают: они передают теорию, а не просто код
- Почему программа "умирает", когда команда уходит: теория уходит вместе с людьми, а то, что остаётся, непригодно для жизни
Связи, которые подхватили в дискуссиях об LLM в 2026 году:
- no-silver-bullet-llms (Bennett): существенная сложность кроется в теории; LLM работают с артефактом
- mean-free-path-language: как далеко можно зайти, прежде чем ментальная модель и программа разойдутся - мера того, насколько хорошо язык сохраняет теорию
- clean-code-coding-agents: структура кода важнее при работе с агентами, потому что контекстное окно агента не может вместить теорию команды
- building-syntaqlite-ai: дисциплинированный рабочий процесс с ИИ, который сработал после провала vibe coding, был как раз тем, где человек продолжал удерживать теорию
- we-are-not-special: собеседники Уэйна из смежных инженерных областей размывают границу между проектированием и строительством со стороны традиционной инженерии: разработчик чипов называет проектированием весь пайплайн, инженеры-механики описывают "подгонку" конструкции под несовершенства её воплощения - в итоге переосмысление Наура оказывается ответом на вопрос "является ли код проектом?", а не просто одной из сторон спора
Эссе Наура небольшое (~25 страниц) и свободно распространяется в формате PDF; изначально оно было опубликовано в журнале Microprocessing and Microprogramming vol. 15.
Обсуждается в подкасте Computer Science Off Course (сезон 1, эпизод 1, Felienne Hermans и Hanna Schraffenberger, 2026), где построение теории трактуется как способность объяснять и защищать решение, а также переносится на практику работы с LLM и учебную программу по CS - см. computer-science-off-course-theory-building.
- Computer Science Off Course — Peter Naur: Programming as Theory Building
- I'm Going Back to Coding by Hand (Ask HN)
- Cognitive Debt
- AI-Written Code Is Still Your Code
- pair-programming
- Porto SAP
- You Should Read "Programming as Theory Building"
- AI Didn't Make Programming Easier. It Just Made It Differently Difficult
- Recall-to-judgment shift
- We Are Not Special