Эпиграммы о Программировании перевод

Недавно мы с killnicole (вся вычитка и коррекция), nlugovoi, d9k, cleg  и ruguevara (все плюсы — этим товарищам, я всего лишь предложил текст) закончили перевод легендарного, самого цитируемого в программистском сообществе, не устаревающего эссе «Epigrams on Programming». С результатом перевода можно ознакомиться под катом.

Феномены, окружающие компьютеры, разнообразны, и дают удивительно богатую базу метафор об индивидуальных и групповых действиях. С другой стороны, обычный человек предоставляет неиссякаемый источник метафор для тех из нас, кто тесно связан с рассчетами. Такие взаимоотношения между обществом и устройством не новы, но невероятный рост влияния компьютеров (как реальный, так и предполагаемый) предоставляет этой симбиотической зависимости жизнеспособность, как хулиганистая молодежь вырастающая из одежды во время бесконечного созревания.Эти эпиграммы следуют попытке охватить некоторые измерения этого потока воображения, заостряют, фокусируют, очищают, расширяют и проясняют наш взгляд на наиболее примечательное из всех человеческих изобретений — компьютер.
  1. Что для одного константа, для другого — переменная.
  2. Функции откладывают связывание, структуры данных к нему приводят. Мораль: в процессе программирования структурируйте данные попозже.
  3. Синтаксический сахар вызывает рак точек с запятой.
  4. Каждая программа — это часть другой программы, обычно — неподходящая часть.
  5. Если программа манипулирует большими объёмами данных, она делает это малым количеством способов.
  6. Симметрия уменьшает сложность (надпрограммы включают подпрограммы). Ищите её везде.
  7. Проще написать неправильную программу, чем понять правильную.
  8. Язык программирования является низкоуровневым, когда написание программы на нём требует внимания к незначительному.
  9. Лучше 100 функций, оперирующих одной структурой данных, чем 10 функций, оперирующих десятью структурами.
  10. Возьмите следующий совет за привычку как можно скорее: делайте одинаковые процессы одинаково. Аккумулируйте идиомы. Стандартизируйте. Единственное различие (!) между Шекспиром и вами в том, что размер его списка идиом не равнялся размеру его словарного запаса.
  11. Если у вас есть функция, принимающая 10 параметров, — возможно, вы что-то упустили.
  12. Рекурсия есть корень компьютерной науки, поскольку она жертвует описанием ради времени.
  13. Если два человека напишут абсолютно одинаковые программы, после компиляции они таковыми не будут.
  14. В процессе длительной разработки любая программа сначала становится пышной и вычурной, а потом обращается в руины.
  15. Всё должно строиться сверху-вниз, кроме построек «на первое время».
  16. У каждой программы есть (как минимум) два назначения: первое — для чего она пишется и второе — для чего нет.
  17. Если слушатель кивает головой, когда вы ему объясняете свою программу, разбудите его.
  18. Программа без циклов и структурированных переменных не стоит написания.
  19. Язык, который не изменит то, как вы размышляете о программировании, не стоит знания.
  20. Везде, где есть модульность, есть потенциальная возможность неверного понимания: сокрытие информации вызывает необходимость проверять взаимодействие.
  21. Оптимизация затрудняет развитие.
  22. У хорошей системы не может быть слабого скриптового языка.
  23. Чтобы понять программу, вы должны стать одновременно и машиной, и программой.
  24. Возможно, если бы мы писали программы с детства, то взрослыми были бы способны их читать.
  25. Сложную информацию можно представить только в уме. Подобно зрению, движение или течение или изменение взгляда важнее, чем неподвижная картинка, не важно, насколько она красива.
  26. Всегда найдутся вещи, которые бы мы хотели «сказать» в своих программах, но которые на всех известных языках выглядели бы бедно.
  27. Поняв однажды как писать программу, найди другого, чтобы он её написал.
  28. При разработке тяжело найти адекватный отрезок времени для измерения прогресса. Некоторые соборы строились столетиями. Можете ли вы представить себе грандиозность и возможности программы, разработка которой заняла бы столько времени?
  29. Для систем аналогом подтяжки лица будет добавление в управляющий граф ребра, которое создаёт цикл, а не просто дополнительного узла.
  30. В программировании всё, что мы делаем, — это особый случай чего-то более общего, и зачастую мы узнаём это слишком быстро.
  31. Простота не предшествует сложности, а следует за ней.
  32. О программистах стоит судить не по их изобретательности и логике, а по полноте их анализа прецедентов.
  33. Одиннадцатой заповедью было «Вычисляй!» или «Не вычисляй!» — я забыл, что из двух.
  34. Строка — это застывшая структура данных, и везде, где она передаётся, много дупликации процесса. Это превосходное средство для сокрытия информации.
  35. Каждого можно научить ваянию: Микеланджело нужно было бы учить, как этого не делать. Так и с великими программистами.
  36. Использование программы для доказательства проблемы 4 красок не изменит математику, а просто показывает, что теорема, вызов века, вероятно, не важна для математики.
  37. Наиболее важный компьютер — это тот, который безумствует в нашем черепе, и всегда ищет тот удовлетворительный внешний эмулятор. Стандартизация реальных («биологических» — прим переводчиков) компьютеров была бы катастрофой — и поэтому, вероятно, не произойдёт.
  38. Структурное программирование поддерживает закон исключенной путаницы.
  39. О графике: изображение стоит 10К слов — но только тех, которые его описывают. Вряд ли какой-либо набор 10К слов может быть адекватно описан изображениями.
  40. Есть только два способа писать безошибочные программы; из них работает только третий.
  41. Некоторые языки программирования умудряются впитывать изменения, но противостоять прогрессу.
  42. Вы можете измерять перспективность программиста, следя за его отношением к долгоживучести ФОРТРАНА.
  43. В программных системах зачастую именно ранняя пташка и создаёт червяка.
  44. Иногда мне кажется, что единственная универсальная вещь в области компьютеризации — это цикл «получить-выполнить».
  45. Цель компьютеризации — эмуляция наших способностей к синтезу, а не понимание наших способностей к анализу.
  46. Подобно каламбуру, программирование — это игра слов.
  47. Как сказал бы Вилл Роджерс, «Нет такой вещи, как свободная переменная»
  48. Лучшая книга по программированию для неспециалиста — это «Алиса в Стране Чудес»; но только потому, что она вообще самая лучшая книга о чем-либо для неспециалиста.
  49. Отказ от ассемблера был яблоком в нашем Эдемском Саду: языки, которые расточительно используют циклы машинного времени — греховны. ЛИСП-машина теперь позволяет программистам отказаться от лифчиков и фиговых листков.
  50. Когда мы поймём системы, основанные на знаниях, всё будет как и прежде, за исключением того, что теперь наши отпечатки пальцев будут подписаны.
  51. Появление компьютеров в домах не изменит ни то, ни другое, но может возродить бар на углу.
  52. Системы состоят из подсистем, и подсистемы состоят из подсистем, и так далее до бесконечности, и именно поэтому мы всегда начинаем сначала.
  53. Столь многие идеи канули в безвестность с тех пор, как они погрузились в плавание по заливу семантики.
  54. Берегитесь Тьюринговой трясины, где всё возможно, но ничто полезное нельзя сделать легко.
  55. ЛИСП-программист знает значение всего, но не знает стоимости вызова чего-либо.
  56. Программное обеспечение находится под постоянным давлением. Будучи символичным, оно сколь угодно способно к совершенствованию, но так же оно и сколь угодно изменчиво.
  57. Проще подогнать спецификацию под программу, чем наоборот.
  58. Дураки игнорируют сложность. Прагматики страдают от сложности. Кому-то удаётся избежать сложности. Гении от сложности избавляются.
  59. В английском из любого слова можно сделать глагол. Если бы так было и в наших языках программирования.
  60. Дана Скотт — это Церковь Святых Тернистого Пути.
  61. В программировании, как и во всём другом, совершить ошибку значит переродиться.
  62. В вычислительной технике инварианты эфемерны.
  63. Когда мы пишем программы, которые «учатся», оказывается, что учимся мы, а не они.
  64. Часто это значит, что оправдания заканчиваются: цели продвигают технику, а техника выживает, даже если структура целей терпит крах.
  65. Не заблуждайтесь: компьютеры оперируют числами, не символами. Мы можем измерить наше понимание (и контроль) только в той мере, в которой мы можем подсчитать активность.
  66. Сделать что-то изменяемым легко. Фокус в том, чтобы управлять длительностью постоянства.
  67. Подумайте о всей той психической энергии, потраченной на поиски фундаментального различия между «алгоритмом» и «программой».
  68. Если мы верим в структуры данных, мы должны верить и в независимую (следовательно, одновременную) обработку. Для чего же ещё тогда мы собираем объекты в структуры? Почему мы терпимы к языкам, которые дают нам одно без другого?
  69. За период в 5 лет мы получаем один великолепный язык программирования. Вот только мы не можем управлять тем, когда этот пятилетний период начнётся.
  70. Веками индейцы разрабатывали знаковое письмо для общения об интересующих феноменах. Программисты из разных племён (ФОРТРАН, ЛИСП, АЛГОЛ, СНОБОЛ и т.д.) могли бы использовать такой, который не требовал бы от них перевозить настенные доски на своих пони.
  71. Документация — как срочное страхование: она удовлетворяет всех, потому что практически никто из подписавшихся на нее, не зависит от её выгод.
  72. Адекватная самозагрузка содержит противоречие в самом названии.
  73. Градиентом изменения языка управляют не его слабости, а его сильные стороны: увы, язык никогда не сбежит из своего зародышевого мешка.
  74. Возможно ли, что программное обеспечение — это что-то совершенно иное, и оно рано или поздно должно быть отбраковано? Если так, тогда нет никакого смысла видеть в нем что-то большее, чем мыльный пузырь.
  75. Из-за своей живучести область вычислительной техники всегда в безнадёжном поиске новых клише: банальности успокаивают наши нервы.
  76. Именно пользователи должны определять параметры процедур, а не их создатели.
  77. Кибернетический обмен между человеком, компьютером и алгоритмом похож на игру в стулья с музыкой: неистовый поиск баланса всегда с простотой оставляет одного из трёх стоять больным.
  78. Если ваш компьютер говорит по-английски, то, скорее всего, он сделан в Японии.
  79. Года, потраченного на разработку искусственного интеллекта, хватит любому, чтобы поверить в Бога.
  80. Продолжительный контакт с компьютером делает математиков клерками, и наоборот.
  81. В компьютеризации превращение очевидного в полезное — это живое определение слова «расстройство».
  82. Мы на краю: сегодня наша программа доказала следующую после последней теорем Ферма!
  83. Какая разница между машиной Тьюринга и современным компьютером? Такая же, как между восхождением Хиллари на Эверест и размещением отеля «Хилтон» на его вершине.
  84. Девиз исследовательской лаборатории: «Мы работаем сегодня над тем, о чем другие впервые подумают только завтра».
  85. Хоть китайцы должны бы боготворить АПЛ, но деньги они вкладывают в ФОРТРАН.
  86. Мы обманываем сами себя, если думаем, что отношение процедур к данным в активной базе данных может быть сколь угодно малым, и удерживаться малым.
  87. У нас есть мини- и микрокомпьютеры. В какую семантическую нишу попадает пикокомпьютер?
  88. Компьютер невиновен в том, что уравнения Максвелла неадекватны для проектирования электрического двигателя.
  89. Нельзя научиться вычислениям, используя калькулятор, но можно забыть арифметику.
  90. Вычисление сделало дерево цветком.
  91. Компьютер напоминает Лона Чейни — это машина с тысячей лиц.
  92. Компьютер — это предельный источник загрязнения. Его испражнения неотличимы от еды, которую он производит.
  93. Когда кто-то говорит «Мне нужен язык программирования, в котором я просто должен сказать что я хочу чтобы он это сделал», дайте ему чупа-чупс.
  94. Интерфейсы поддерживают порядок, но не ускоряют рост — этим занимаются функции.
  95. Не предлагайте хороших идей, если не хотите за них отвечать.
  96. Компьютеры привносят порядок далеко не настолько, насколько открывают возможности.
  97. Когда профессор настаивает, что компьютерные науки это X, но не Y, посочувствуйте его выпускникам.
  98. В вычислительное технике среднее время до сбоя становится всё короче.
  99. В человеко-машинном симбиозе приспосабливаться должен человек: машины не могут.
  100. У нас никогда не будет нехватки задач для программирования, пока будет существовать хоть одна программа.
  101. Разобраться со сбоем просто: упорно работайте над улучшением. Успех столь же прост: вы решили не ту проблему. Упорно работайте над улучшением.
  102. Нельзя перейти от неформального к формальному формальными средствами.
  103. Чисто прикладные языки плохо приложимы.
  104. Доказательство ценности системы есть её существование.
  105. Вы не можете совладать со сложностью, вы можете только знать о ней.
  106. Трудно извлечь смысл из строк, но это единственное средство общения, на которое мы можем рассчитывать.
  107. Яростные споры продолжаются: PL/I — это двугорбый или одногорбый верблюд?
  108. Когда два программиста встречаются покритиковать свои программы, оба молчат.
  109. Только подумайте! Используя СБИС, мы можем упаковать 100 ЭНИАКов на 1кв.см.
  110. Редактирование — это акт перефразирования.
  111. Почему рухнула Римская Империя? А какая роль латыни в автоматизации офиса?
  112. Компьютерные науки приведены в замешательство компьютером.
  113. Единственная конструктивная теория, соединяющая нейробиологию и психологию, возникнет из изучения программного обеспечения.
  114. В компьютере естественные языки неестественны.
  115. Большинство считает концепцию программирования очевидной, но исполнение невозможным.
  116. Вы предполагаете, что знаете, когда учитесь, уверены в этом — когда пишете, более уверены — когда преподаете, но убеждены в этом на 100%, только когда программируете.
  117. Это противоречит современной системе обучения — учить детей программировать. Разве это весело планировать, быть дисциплинированным при организации мышления, целиком уделять внимание деталям и учиться быть самокритичным?
  118. Если вы можете вообразить общество, в котором компьютерные роботы — единственные рабы, то вы можете вообразить всё что угодно.
  119. Программирование — это противоестественное действие.
  120. Адаптация старых программ к новым машинам обычно значит адаптацию новых машин, чтобы они вели себя как старые.
  121. В поисках недостижимого простота только мешает.

    Если есть эпиграммы, должны быть метаэпиграммы:
  122. Эпиграммы — это своеобразный интерфейс, с помощью которого передается признательность и проницательность.
  123. Эпиграммы параметризируют ауры.
  124. Эпиграммы — это макросы, потому что выполняются во время чтения.
  125. Эпиграммы кристаллизируют несоответствия.
  126. Эпиграммы извлекают глубокий смысл из базы данных, которая состоит только из процедур.
  127. Эпиграммы презирают детали и извлекают суть: они являются великолепной высокоуровневой документацией.
  128. Эпиграммы больше витамины, чем белки.
  129. У эпиграмм крайне низкая энтропия.
  130. Последняя эпиграмма? Не ешьте и не пейте их, вдохните эпиграммы.
Переведено толпой.
_________
Текст подготовлен в ХабраРедакторе
+75
16 сентября 2009, 13:37
113
folone 57,4

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

+2
cheburator #
Похвально!
0
Arekus #
Великолепно!
0
andrew_che #
Супер!
+1
Glow #
Почитал, посмеялся, поблагодарил.
+1
mcrey #
Сделаю себе постер с ними
+2
texus #
Восхитительно!
p.s.: орфография :(
0
folone #
С радостью приму в личные сообщения все замечания. Обещаю исправить.
0
kmike #
написал
0
folone #
Сейчас будем разбираться, спасибо.
0
folone #
кажется, всё поправил.
+1
vasfed #
Отлично :)

А кому-нибудь попадался сборник фольклора вида:
Чтобы программа была легкой и быстрой — переменную клади в регистр!™
?
+1
artyfarty #
Фундаментально так.
+5
killnicole #
Вычитка и коррекция — это громко сказано. Я не переводчик, но поправила пару фраз. Почему бы всем вместе не сделать этот текст более читабельным?
+1
folone #
вот только не надо скромничать.
0
DevArt #
библия программиста прямо :). Спасибо, распечатаю в офисе и положу всем сотрудникам отдела программирования на столы, может быть даже подействует.
+1
Setti #
«16. У каждой программы есть (как минимум) два назначения: первое — для чего она пишется и второе — для чего нет.»

Афоризм у писателей похожий есть: Главное достоинство писателя является знание того, что писать не нужно.
(Флобер)
0
Setti #
«Оптимизация затрудняет развитие»

А вот это аяяй.
+2
folone #
Нездоровая оптимизация и правда затрудняет.
0
Setti #
хорошо понимаю, что хотел сказать автор, но по ассоциативному ряду в голову сразу же забралась ситуация с современными тридэ играми )) ;)
0
Arekus #
правда — затрудняет. еще у Фаулера про это есть. «Сначала результат, потом оптимизация»
+1
XaBoK #
«Эпиграммы больше витамины, чем белки» — без К.О. мне не обойтись…
+4
folone #
Подозреваю, что имеется ввиду, что от таких советов «сильнее» мысли не станут, только «здоровее». «Более грамотным разработчиком они тебя не сделают, но здравому подходу научат». Как-то так.
+1
Arekus #
Эпиграммы — это мотиваторы, а не правила. Идея, а не реализация.
0
folone #
У вас получилось гораздо лучше, чем у меня.
+2
cleg #
translated.by — отличный сервис, потратив около получаса времени, не напрягаясь внес свою лепту в общее дело.
очень рекомендую.
спасибо создателям.
0
Philosoft #
89. Нельзя научиться компьютингу, используя калькулятор, но можно забыть арифметику.

На мой взгляд, здесь лучше заменить слово «компьютинг» на «вычислениям».
0
folone #
Спасибо, поправил.
+1
zlo #
в виду последних тем, 41 мне кажется, очень хорошо описывает Java
0
MaxSergeev #
Английским не владею, но чуть знаю русский.

Могу посоветовать хотя б просто через спелчекер ворда прогнать. Ошибки (описки?) типа «Эпиграмы» он точно найдет.
+3
IgMuSh #
В 9-ой эпиграмме должно быть «чем 10 функций, оперирующиХ».
В 11-ой не хватает запятых после слов «функция» и «возможно».
В 30-ой не хватает запятой после слова «всё».
В 48-ой нужен дефис в слове «чем-либо» и запятая после «потому».
Тьюринга обычно пишут с мягким знаком, а «яму» переводят как «трясина»(Тьюринговская трясина</>) (эпиграмма 54).
В 64-ой не хватает запятой перед «что» и перед «даже».
В 74-ой не хватает ещё одной буквы «м» в слове «програмМное».
В 78-ой «по-английски» пишется через дефис, а «скорее всего» принято выделять запятыми.
В 79-ой не хватает запятых после «интеллекта» и перед «чтобы».
В 81-ой эпиграмме должно быть «В компьЮтеризации».
В 83-ей опять попадается «Тюринг» вместо «Тьюринга».
В 97-ой должно быть «компьЮтерные „и “посочуВствуйте».
В 105-ой эпиграмме должно быть «сложностьЮ».
В 106-ой должно быть две «с» в слове «расСчитывать».
В 109-ой не помешает запятая после слова «СБИС».
В 112-ой опять какой-то непонятный вместо «компьтер» всеми любимого «компьЮтера».
В 113-ой надо бы выделить запятыми «соединяющая нейробиологию и психологию».
В 128-ой потерялась вторая «м» в слове «эпиграмМы».
0
folone #
Парсер — лох :)
Не успел я закончить с одним километровым списком, пришёл ещё один. Спасибо, буду править.
p.s. в следующий раз, будьте добры, в инбокс :)
0
IgMuSh #
Чёрт! Не закрылся тег ссылки. Закройте у кого есть такие права. Или это уже невозможно?
0
folone #
Кажется, всё поправил.
+2
Galayko #
А почему «эпиграммы»? Это афоризмы.
Вики говорит «An Epigram is a brief, clever, and usually memorable statement». В русском это попадает под определение афоризма.
0
folone #
Это к автору. В английском языке слово «aphorism» тоже присутствует. Не знаю, почему он использовал слово «epigram» в названии данного эссе.
0
Galayko #
Я видел. Иногда одинаковые (по звукам) слова имеют смысловые различия.
Но это я так, придираюсь по мелочам.

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