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