Афоризмы о программировании

Программирование и алгоритмы
  1. То, что для одного человека константа, для другого — переменная.
  2. Рекурсия — основа программирования, поскольку она сокращает время написания программы.
  3. Программы без ошибок можно написать двумя способами, но работает — третий.
  4. Проще написать неправильную программу, чем понять правильную.
  5. В программировании трудно найти правильную единицу времени для измерения прогресса. Некоторые соборы строились веками. Можно ли вообразить грандиозность и размер программы, на которую затратили столько времени?
  6. Легче изменить спецификацию, чтобы она соответствовала программе, но не наоборот.
  7. Подумайте, сколько психических сил потрачено на поиски коренного различия между "алгоритмом" и "программой".
  8. Программирование заставило дерево зацвести.
  9. Не стоит писать программу без цикла и структурированной переменной.
  10. В программировании инварианты эфемерны.
  11. Иногда мне кажется, что единственным универсумом в программировании является цикл.
  12. Оптимизация препятствует эволюции.
Языки программирования
  1. Синтаксический сахар вызывает рак точек с запятой.
  2. Язык программирования имеет низкий уровень, если в программах приходится уделять внимание несущественному.
  3. Не стоит изучать язык, который не меняет вашего представления о программировании.
  4. Некоторые языки программирования допускают изменения, но сопротивляются прогрессу.
  5. В английском языке любое слово может быть глаголом. Разве могло бы такое быть в языках программирования?
  6. Как и каламбур, программирование — это игра слов.
  7. Перспективность программиста можно оценить, узнав его мнение о жизнеспособности Фортрана.
  8. Мы всегда хотим сказать в своих программах что-то такое, что на всех известных языках можно сказать только плохо.
  9. Программисты из разных племен (Фортрана, Лиспа, Алгола, Снобола и т. д.) могли бы воспользоваться таким языком, который понятен и без классной доски.
  10. Лисп-программисту известна ценность всего, но неизвестна цена чего бы то ни было.
Проектирование и архитектура программ
  1. Функции задерживают связь, структуры данных стимулируют связь. Мораль: Структурируйте данные как можно позднее в процессе программирования.
  2. Если программа манипулирует большим количеством данных, она делает это лишь несколькими способами.
  3. Все нужно проектировать сверху вниз, за исключением фундамента, с которого нужно начинать.
  4. Каждый программный объект имеет по крайней мере два назначения: что он должен делать и чего не должен.
  5. Использование программы для доказательства теоремы о четырех красках не изменит математики.
  6. Там, где есть модульность, возможно непонимание: Сокрытие информации предполагает необходимость проверки связи.
  7. В хорошей системе не может быть слабого языка команд.
  8. Системы состоят из подсистем, подсистемы — из подподсистем и так до бесконечности — именно поэтому мы проектируем снизу вверх.
  9. Простота не предшествует сложности, а вытекает из нее.
  10. Оптимизация препятствует эволюции.
  11. Если ваша машина говорит по-английски, ее, вероятно, сделали в Японии.
Программисты и их работа
  1. Как можно раньше вступайте на проторенную стезю: не изменяйте своим привычкам. Накапливайте идиомы. Стандартизируйте. Единственная разница между Шекспиром и вами состоит не в объеме словаря, а в количестве идиом.
  2. Программисты, которые пишут программы с детства, с годами могут научиться их читать.
  3. Простота не предшествует сложности, а вытекает из нее.
  4. Работу программистов следует оценивать не по их изобретательности и логике, а по полноте анализа каждой ситуации.
  5. Мысленно человек может только воспроизвести сложную информацию.
  6. Стандартизация существующих машин была бы катастрофой, и потому она, вероятно, не произойдет.
  7. Программисту нельзя иметь хороших идей, если не хочет отвечать за них.
  8. Ваять можно научить каждого, но тогда пришлось бы учить Микеланджело, как не делать этого. То же самое — с великими программистами.
  9. Не имейте хороших идей, если не хотите отвечать за них.
Эволюция и развитие программного обеспечения
  1. В конечном счете каждая программа устаревает, как и рококо, а потом и вовсе умирает.
  2. Софтвер находится в постоянном напряжении. Поскольку он символичен, его можно постоянно совершенствовать, но и произвольно изменять.
  3. Когда мы поймем машинные системы баз знаний, все будет, как и прежде, с той лишь разницей, что кончики пальцев будут обожжены.
  4. Все, что мы делаем в программировании — это частный случай чего-то более общего, и зачастую мы осознаем это чересчур быстро.
  5. Через пять лет у нас будет один суперязык программирования, только мы не можем установить начало этого пятилетнего периода.
  6. Мы вот-вот сможем сказать: "Сегодня наша программа доказала теорему Ферма".
  7. Легче изменить спецификацию, чтобы она соответствовала программе, но не наоборот.
  8. Структурированное программирование подтверждает закон исключенного третьего.
  9. Простота не предшествует сложности, а вытекает из нее.
Философия программирования
  1. Чтобы понять программу, необходимо отождествить себя и с машиной, и с программой.
  2. Как только вы поняли, как писать программу, заставьте сделать это кого-нибудь другого.
  3. Не путайте: машины обрабатывают числа, а не символы. Мы измеряем свое понимание (и контроль) степенью арифметизации деятельности.
  4. Системы состоят из подсистем, подсистемы — из подподсистем и так до бесконечности — именно поэтому мы проектируем снизу вверх.
  5. В конце концов программа становится настолько большой, что даже её автор не понимает всех деталей.
  6. Программирование — это искусство решения задач посредством схем.
  7. Программирование — это деятельность, связанная с управлением сложностью.
  8. Как и каламбур, программирование — это игра слов.
  9. Самое трудное в программировании — это устранение того, что не нужно.
  10. Программист, который не любит стирать символы, становится заложником своего кода.