← На главную

50 лет программистских эпиграмм: 120 фраз о парадоксах кода

14.06.2026 14:56 · hackernews

Вот пересказ сборника «Эпиграммы о программировании» — 120 острых, парадоксальных и мудрых фраз, которые уже полвека гуляют по миру.

Синтаксический сахар вызывает рак точки с запятой. Каждая программа — часть какой-то другой программы и редко в неё вписывается. Симметрия упрощает сложность — ищите её везде. Намного проще написать неправильную программу, чем понять правильную. Язык программирования низкоуровневый, если его программы требуют внимания к несущественному. Лучше иметь 100 функций, работающих с одной структурой данных, чем 10 функций на 10 структур.

Рекурсия — корень вычислений: она меняет описание на время. Всё должно строиться сверху вниз — кроме первого раза. У каждой программы две цели: та, для которой её написали, и та, для которой нет. Если слушатель кивает, когда вы объясняете свою программу, разбудите его. Язык, который не влияет на то, как вы думаете о программировании, не стоит изучения. Оптимизация мешает эволюции. Чтобы понять программу, надо стать одновременно машиной и программой.

Как только вы поняли, как писать программу, заставьте кого-нибудь другого её написать. Измерять прогресс в мире компьютеров почти невозможно: некоторые соборы строили столетие — представляете масштаб программы, которая потребует столько же? Простота не предшествует сложности, а следует за ней. Программистов стоит оценивать не по их логике, а по полноте анализа кейсов. Есть два способа писать программы без ошибок, и работает только третий.

Некоторые языки впитывают перемены, но сопротивляются прогрессу. Отношение программиста к FORTRAN показывает его кругозор. Берегитесь «смоляной ямы Тьюринга» — в ней всё возможно, но ничто интересное не даётся легко. Программист на LISP знает цену всему, но не знает стоимости ничего. Программное обеспечение постоянно в напряжении: будучи абстрактным, оно идеально поддаётся улучшению — но и произвольным изменениям.

Дураки игнорируют сложность. Прагматики страдают от неё. Некоторые уходят от неё. Гении её устраняют. В программировании, как и везде, ошибаться — значит перерождаться. Когда мы пишем программы, которые «учатся», выясняется, что учимся мы, а они — нет.

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

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

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

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

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

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

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

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

Читать оригинал →