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

Связанные с программированием разнообразные феномены являютсяудивительно богатой питательной средой для создания метафор индивидуальнойи групповой деятельности, и наоборот, созданные человеческим гениемтворения служат неисчерапемым источником метафор для тех, кто работает вобласти вычислительной техники. Такая взаимосвязь общества ивычислительных машин не нова, а невероятный рост влияния эвм (прямого икосвенного) придает жизненность этому симбиозу, подобно вырастающему изсвоей одежды долговязому подростку. Приведенные ниже афоризмы предстваляют собой попытку выделитьосновные направления этого роста, который заостряет, сосредотачивает,уточняет, расширяет и затуманивает наше представление о самом удивительном

из всех созданных человеком творений - об эвм.


  • То, что для одного человека константа, для другого - переменная.
  • Функции задерживают связь, структуры данных стимулируют связь.
  • Мораль: Структурируйте данные как можно позднее в процессе программирования.
  • Синтаксический сахар вызывает рак точек с запятой.
  • Каждая программа является частью другой программы и редко соответствует ей.
  • Если программа манипулирует большим количеством данных, она делает это лишь несколькими способами.
  • Симметрия представляет собой концепцию, сокращающую сложность (сопрограммы содержат подпрограммы); ищите ее повсюду.
  • Проще написать неправильную программу, чем понять правильную.
  • Язык программирования имеет низкий уровень, если в программах приходится уделять внимание несущественному.
  • Лучше, чтобы в 100 функциях использовалась одна структура данных, чем в 10 функциях - 10 структур.
  • Как можно раньше вступайте на проторенную стезю: Не изменяйте своим привычкам. Накапливайте идиомы. Стандартизируйте. Единственная разница (!) Между шекспиром и вами состоит не в обЪеме словаря, а в количестве идиом.
  • Если в вашей процедуре 10 параметров, вероятно, какой-нибудь пропущен.
  • Рекурсия - основа программирования, поскольку она сокращает время написания программы.
  • Если двое пишут в точности одну и ту же программу, нужно преобразовать каждую в микрокод, и тогда они, конечно, не будут одинаковыми.
  • В конечном счете каждая программа устаревает, как и рококо, а потом и вовсе умирает.
  • Все нужно проектировать сверху вниз, за исключением фундамента, с которого нужно начинать.
  • У каждой программы (по крайней мере) два назначения: Что она должна делать и чего не должна.
  • Если при объяснении вашей программы слушатель начинает кивать головой, его пора будить.
  • Не стоит писать программу без цикла и структурированной переменной.
  • Не стоит изучать язык, который не меняет вашего представления о программировании.
  • Там, где есть модульность, возможно непонимание: Сокрытие информации предполагает необходимость проверки связи.
  • Оптимизация препятствует эволюции.
  • В хорошей системе не может быть слабого языка команд.
  • Чтобы понять программу, необходимо отождествить себя и с машиной, и с программой.
  • Если бы мы писали программы с детства, то с годами, возможно, научились бы их читать.
  • Мысленно человек может только воспроизвести сложную информацию.
  • Движение, или течение, или изменение перспективы важнее, чем статическое изображение, каким бы красивым оно не было.
  • Мы всегда хотим сказать в своих программах что-то такое, что на всех известных языках можно сказать только плохо.
  • Как только вы поняли, как писать программу, заставьте сделать это кого-нибудь другого.
  • В программировании трудно найти правильную единицу времени для измерения прогресса. Некоторые соборы строились веками. Можно ли вообразить грандиозность и размер программы, на которую затратили столько времени?
  • Для систем аналогом пластической операции является введение в управляющий граф ребра, которое создает цикл, а не просто еще одну вершину.
  • Все, что мы делаем в программировании - это частный случай чего-то более общего, и зачастую мы осознаем это чересчур быстро.
  • Простота не предшествует сложности, а вытекает из нее.
  • Работу программистов следует оценивать не по их изобретательности и логике, а по полноте анализа каждой ситуации.
  • Одиннадцатая заповедь гласит: "Вычисляй" или "не вычисляй" - я уже не помню.
  • Строка - это застывшая структура данных, и повсюду, куда она передается, происходит значительное дублирование процесса. Это идеальное средство для сокрытия информации.
  • Ваять можно научить каждого, но тогда пришлось бы учить микеланджело, как не делать этого. То же самое - с великими программистами.
  • Использование программы для доказательства теоремы о четырех красках не изменит математики. Оно просто покажет, что задача, которая оставалась нерешенной в течении столетия, возможно, не так уж важна для математики.
  • Самая важная машина та, что "бушует" у нас в голове и все время ищет нужный ей внешний эмулятор. Стандартизация существующих машин была бы катастрофой, и потому она, вероятно, не произойдет.
  • Структурированное программирование потверждает закон исключенного третьего.
  • Реальная графика: Для описания картинки необходимо 10к слов. Но едва ли можно описать какое-либо множество из 10к слов с помощью картинок.
  • Программы без ошибок можно написать двумя способами, но работает - третий.
  • Некоторые языки программирования допускают изменения, но сопротивляются прогрессу.
  • Перспективность программиста можно оценить, узнав его мнение о жизнеспособности фортрана.
  • В программных системах зачастую "кто рано встает, того удача ждет".
  • Иногда мне кажется, что единственным универсумом в программировании является цикл.
  • Цель Fетсн-ехесUте вычислений - эмуляция наших синтетических способностей, а не понимание аналитических.
  • Как и каламбур, программирование - это игра слов.
  • Как сказал бы уилл роджерс: "В природе нет такой вещи, как свободная переменная".
  • Для дилетанта лучшим пособием по программированию служит "алиса в стране чудес" - только потому, что для него это лучшее пособие по любому предмету.
  • Отказ от языка ассемблера был яблоком раздора в наших садах эдема: Языки, использование которых приводит к растранжированию машинного времени, греховны. Лиспмашина сегодня позволяет своим программистам отказаться от фигового листка.
  • Когда мы поймем машинные системы баз знаний, все будет, как и прежде, с той лишь разницей, что кончики пальцев будут обожжены.
  • Появление эвм в домах не изменит ни один из них, но может возродить салуны.
  • Системы состоят из подсистем, подсистемы - из подподсистем и так до бесконечности - именно поэтому мы проектируем снизу вверх.
  • Так много хороших идей исчезает бесследно, попав в пучину семантики.
  • Остерегайтесь бочки меда с ложкой дегтя тьюринга, где все возможно, но все интересное слишком сложно.
  • Лисп-программисту известна ценность всего, но неизвестна цена чего бы то ни было.
  • Софтвер находится в постоянном напряжении. Поскольку он символичен, его можно постоянно совершенствовать, но и произвольно изменять.
  • Легче изменить спецификацию, чтобы она соответствовала программе, но не наоборот.
  • Глупцы игнорируют сложность. Прагматики терпят ее. Некоторые моугт избегать ее. Гении ее устраняют.
  • В английском языке любое слово может быть глаголом. Разве могло бы такое быть в языках программирования?
  • DаNа Sсотт IS тне снURсн оF LаттIсе-WаY SаINтS.
  • В программировании, как и везде, ошибаться - значит рождаться заново.
  • В программировании инварианты эфемерны.
  • Когда мы пишем программы, которые "обучают", мы - обучаем, а они - нет.
  • Часто средства оправдывают цели: Цели порождают метод, а метод
  • выживает, даже когда разрушаются структуры, бывшие ранее целью.
  • Не путайте: Машины обрабатывают числа, а не символы. Мы измеряем свое понимание (и контроль) степенью арифметизации деятельности.
  • Легко сделать что-то переменным. Хитрость в том, чтобы измерять продолжительность постоянства.
  • Подумайте, сколько психических сил потрачено на поиски коренного различия между "алгоритмом" и "программой".
  • Если мы верим в структуры данных, мы должны верить и в независимую (и потому одновременную) обработку. Зачем же еще собирать элементы в структуру? Почему мы терпим языки, которые дают нам одно, но не дают другое?
  • Через пять лет у нас будет один суперязык программирования, только мы не можем установить начало этого пятилетнего периода.
  • Веками индейцы создавали язык знаков, чтобы сообщить друг другу самое интересное. Программисты из разных племен (фортрана, лиспа, алгола, снобола и т.Д.) Могли бы воспользоваться таким языком, который понятен и без классной доски.
  • Документация подобна страхованию на неопределенный срок: Она удовлетворяет всех, поскольку почти никто из подписавшихся на нее не зависит от ее преимуществ.
  • Адекватная самораскрутка - явное противоречие.
  • Не слабости, а достоинтсва языка определяют направления его изменений. Увы, язык никогда не сможет избавиться от своего эмбрионального мешка.
  • Возможно ли, что программное обеспечение не похоже ни на что другое; что оно создано для того, чтобы от него отказались со временем; что все дело в том, чтобы оно всегда оставалось для нас мыльным пузырем?
  • Благодаря своей жизненности программирование всегда испытывает отчаянную потребность в новых штампах: Банальность успокаивает нервы.
  • Не создатели, а пользователи должны параметризовать процедуры.
  • Кибернетический обмен между человеком, машиной и алгоритмом подобен игре в "музыкальные стулья": Неистовый поиск равновесия всегдаs оставляет одного из трех неловко стоять.
  • Если ваша машина говорит по-английски, ее, вероятно, сделали в японии.
  • Года работы над искусственным интеллектом достаточно, чтобы заставить поверить в бога.
  • Продолжительный контакт с машиной превращает математиков в клерков, и наоборот.
  • В программировании превращение очевидного в полезное - это точное определение слова "разочарование".
  • Мы вот-вот сможем сказать: "Сегодня наша программа доказала теорему ферма".
  • Какая разница между машиной тьюринга и современной эвм? Такая же, как между восхождением хиллари на эверест и открытием отеля "хилтон" на его вершине.
  • Девиз исследовательской лаборатории: "О том, над чем мы работаем сегодня, другие подумают только завтра".
  • Хотя китайцы должны были бы обожать арL, они вкладывают деньги в фортран.
  • Мы обманываем себя, думая, что отношение процедур к данным в активной системе базы данных можно сделать произвольно малым или даже сохранить малым.
  • У нас есть мини- и микро-эвм. В какую семантическую нишу попала бы пико-эвм?
  • Машина не виновата в том, что уравнения максвелла не подходят для проектирования электромотора.
  • Нельзя научиться программированию с помощью ручного калькулятора, но можно забыть арифметику.
  • Программирование заставило дерево зацвести.
  • Эвм напоминает лона чени[#] - это машина с тысячью лиц. [#] лон чени написал детектив "человек с тысячью лиц".
  • Эвм - это загрязнитель в его чистейшем проявлении: Ее отходы неотличимы от пищи, которую она производит.
  • Когда кто-то говорит: "Мне нужен язык программирования, в котором достаточно только сказать, что мне нужно сделать", - дайте ему леденец.
  • Интерфейсы сохраняют порядок вещей, но не ускоряют рост - функции же ускоряют.
  • Не имейте хороших идей, если не хотите отвечать за них.
  • Машины скорее обнаруживают наличие беспорядка, чем наводят порядок.
  • Если преподаватель настаивает на том, что вычислительная наука - это х, а не Y, посочувствуйте его ученикам.
  • В программировании средняя наработка на отказ постоянно уменьшается.
  • В симбиозе человек-машина приспосабливаться должен человек; машины этого не могут.
  • Никогда не кончатся объекты программирования, пока у нас под рукой есть хотя бы одна программа.
  • Обработать ошибку легко: Постарайтесь исправить программу. Удачный запуск тоже легко обработать: Вы решили не ту задачу. Постарайтесь исправить и эту ошибку.
  • Нельзя перейти от неформального к формальному с помощью формальных средств.
  • Чисто прикладные языки плохо применимы. (Игра слов аррLIсатIVе и аррLIсавLе).
  • Доказательство ценности системы - в ее существовании.
  • Нельзя передать сложность, а только знание о ней.
  • Трудно выделить смысл из строк, но это единственная "монета" связи, на которую мы можем рассчитывать.
  • Споры бушуют вокруг того, что такое рL/1 - двугорбый или одногорбый верблюд.
  • Всякий раз, когда два программиста встречаются для критического анализа своих программ, они оба молчат.
  • Подумать только! С помощью сверхбольших интегральных схем мы можем упаковать 100 "эниаков" в 1 кв.См.
  • Редактирование - это выражение того же, но другими словами.
  • Почему распалась римская империя? Как по-латыни автоматизация конторских работ?
  • Эвм приводит в замешательство вычислительную науку.
  • Единственная конструктивная теория, связывающая неврологию и психологию, возникает из исследований софтвера.
  • Для машин естественные языки не естественны.
  • Большинство людей находят концепцию программирования очевидной, но само программирование невозможным.
  • Когда изучаешь какой-либо вопрос, считаешь, что знаешь его; когда можешь писать о нем, становишься уверенней в своих знаниях; уверенность возрастает, когда можешь научить этому кого-нибудь другого; и совершенно уверен, когда начинаешь программировать.
  • Обучение детей программированию противоречит современной теории обучения. Разве интересно составлять планы, овладевать дисциплиной в организации мышления, уделять внимание деталям и учиться быть самокритичным?
  • Если вы можете представить себе общество, где лакеями будут роботы, вы можете представить все, что угодно.
  • Программирование - это неестественный процесс.
  • Адаптировать старые программы к новым машинам обычно означает заставить новые машины работать по-старому.
  • Простота только мешает поиску недостижимого. Если существуют афоризмы, должны быть и метаафоризмы.
  • Афоризмы - это интерфейсы, по которым передается оценка и понимание.
  • Афоризмы параметризуют нимбы святости.
  • Афоризмы - это макросы, поскольку они выполняются в ходе чтения.
  • Афоризмы кристаллизуют несоответствия.
  • Афоризмы возвращают глубокое семантической значение из базы данных, которая представляет собой процедуру.
  • Афоризмы пропускют подробности и выделяют главное: Это превосходная документация высокого уровня.
  • Афоризмы скорее подобны витаминам, чем белку.
  • У афоризмов черезвычайно низкая энтропия.
  • Последний афоризм? Афоризмы нельзя ни есть, ни пить - их нужно вдыхать.

  • Требовать и эффективности, и гибкости от одной и той же программы - все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. (Фредерик Брукс-мл)
  • Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. (Фредерик Брукс-мл)
  • Выдавать глобальные идеи - это удовольствие; искать сволочные маленькие ошибки - вот настоящая работа. (Фредерик Брукс-мл)
  • Как только проект окончательно принят, он становится устаревшим в смысле своих концепций.
  • Настойчивость руководителя может определить график выполнения задания, но не в состоянии определить срок его действительного завершения. (Фредерик Брукс-мл)
  • Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование. (Фредерик Брукс-мл)
  • Если за две минуты омлет еще не готов, у заказчика два выбора - подождать или съесть его сырым. (Фредерик Брукс-мл)
  • Когда кажется, что все уже работает, все объединено в систему - вам еще осталось работы на четыре месяца. (Чарльз Портман , ICL)
  • Генерация случайных чисел - слишком важный вопрос, чтобы оставлять его на волю случая. (Роберт Ковзю, Окриджская лаборатория.)
  • Я не знаю причины, по которой нам не следует этого делать, но, возможно, позже мы придумаем какую-нибудь. (Марк Дэвисон)
  • Ошибка? Это не ошибка, это системная функция. (Т. Джон Уэнделл)
  • Пользователь не знает, чего он хочет, пока не увидит то, что он получил. (Э. Йодан)
  • На пустом диске можно искать вечно.
  • Если отладка - процесс удаления ошибок, то программирование должно быть процессом их внесения. (Э.Дейкстра)
  • Вы уже дошли до состояния, когда у вас нет времени, чтобы разрешить те проблемы, которые отнимают у вас все время? (Марк Дэвидсон)
  • Компьютеры бесподобны: за несколько минут они могут совершить такую грандиозную ошибку, какую не в состоянии сделать множество людей за многие месяцы. (М. Мичэм)

Теория ошибок

  • Ошибки так же неисчерпаемы, как и атом.
  • Аксиома. В любой программе есть ошибки.
  • Закон пропорциональности. Чем более программа необходима, тем больше в ней ошибок.
  • Следствие. Ошибок не содержит лишь совершенно ненужная программа.
  • Фундаментальный закон теории ошибок. На ошибках учатся.
  • Следствие 1. Программист, написавший программу, становится ученым.
  • Следствие 2. Чем больше программист делает ошибок, тем быстрее он делается ученым.
  • Следствие 3. Крупный ученый-программист никогда не пишет правильные программы.
  • Замечание. На то он и ученый.
  • Указание начинающему программисту. Если вы с первого раза сумели написать программу, в которой транслятор не обнаружил ни одной ошибки, сообщите об этом системному программисту. Он исправит ошибки в трансляторе.
  • Закон необходимости ошибок. Программист может обнаружить ошибку только в чужой программе.
  • Следствие. Ошибке не все равно, кто ее обнаружит.
  • Совет начинающему программисту. Никогда не исправляйте найденные ошибки, ибо это повлечет за собой появление неизвестного числа ненайденных. Лучше опишите их в сопроводительной документации как особенность программы.
  • Определение. Будем называть языком ошибок правила, в обход которых пишутся программы.
  • Язык ошибок. Ошибки могут следовать друг за другом.
  • От перестановки двух эквивалентных ошибок результат не меняется (коммутативность эквивалентных ошибок).
  • Две последовательные ошибки можно объединить в одну, более сильную.
  • Одинаковые ошибки необязательно делать каждый раз, достаточно сделать одну, а затем обращаться к ней по мере необходимости из любого места программы.
  • Ошибки могут образовывать циклы. Наиболее устойчивый из них - бесконечный.
  • Ошибки могут вызывать друг друга и сами себя (рекурсивность ошибок).
  • Ошибки допускают многократное вложение друг в друга. Две одинаковые вложенные ошибки называются четной ошибкой и ошибкой не являются.
  • Свойство четности ошибок. Если написанная программа сработала правильно, то это значит, что во время ее работы выполнилось четное число ошибок или программист не понял задание.
  • Формулировка вышеприведенного свойства, предназначенная для политиков. Ошибка, повторенная дважды, перестает быть ошибкой.
  • Взаимодействие ошибок с базовой операционной системой.
  • Во время исполнения ошибки имеют наивысший приоритет. Прервать исполнение ошибки может только другая, более активная ошибка.
  • Запросы операционной системы к ошибкам ошибками могут игнорироваться.
  • Запросы ошибок к операционной системе игнорироваться не могут.
  • При работе с файлами ошибки могут пользоваться файловой системой базовой ОС и ее ошибками.
  • На ЭВМ с параллельной архитектурой может выполняться несколько ошибок одновременно.
  • Системные программы облегчают процесс написания прикладных программ и их ошибок.
  • Определение. Тестирование - это процесс нахождения ошибок в тесте. Хороший тест должен содержать ошибки, компенсирующие их нехватку в тестируемой программе.
  • Языковый редактор, призванный уберечь программиста от синтаксических ошибок, позволяет вносить в программу весьма хитроумные ошибки, которые не удается обнаружить ни транслятором, ни отладчиком. Обычный текстовый редактор таких возможностей не предоставляет.
  • Программа-транслятор, предназначенная для перевода программ с языка высокого уровня на машинный язык, при переводе порождает ошибки. Ошибки, которые содержались в исходном описании, переводятся безошибочно.
  • Заключительный совет тем, кто до него добрался. До начала работы над проектом следует тщательно продумать все необходимые ошибки и связи между ними. Это значительно упростит работу над ошибками в самом проекте.

  • Пространство - иллюзия, дисковое пространство – тем более.
  • Компьютер - устройство разработанное для ускорения и автоматизации человеческих ошибок.
  • Введите любое 11-значное простое число, чтобы продолжить...
  • Reset - не кнопка, а горькая необходимость.
  • Любая программа, которая успешно прошла тестирование, устарела.
  • Бывало ли, что Вы переставали думать, а затем забывали перезапуститься?
  • Если что-то у Вас получилось кривовато, назовите это бета-версией.
  • “Это не - дефект, это скрытая и редко используемая характеристика”.
  • Природа ненавидит уравнения с дифференциалами второго порядка.
  • Не позволяйте компьютеру догадаться, что вы спешите.
  • Нажмите все клавиши, чтобы продолжить...
  • Нажмите любую клавишу, чтобы продолжить или любую другую, чтобы выйти.
  • “Стать программистом и никогда не увидеть мир”.
  • Независимое программное обеспечение не будет работать с ЛЮБЫМ программным обеспечением.
  • Дефектная программа является абстрактным теоретическим понятием.
  • Дефекты - дети глюков!
  • Слон – это Мышь, сделанная по государственному заказу.
  • 43-й Закон компьютерной обработки: Все что может испортиться, испор….

  • Ничто не работает так, как планировалось запрограммировать.
  • Ничто не программируется так, как должно работать.
  • Хороший программист характеризуется умением доказать почемузадачу невозможно выполнить, когда ему просто лень её выполнять.
  • На решение проблемы уходит в три раза меньше времени, чем на обсуждение всех "за" и "против" её решения.
  • Обещанный срок сдачи - это аккуратно расчитанная дата окончания проекта плюс шесть месяцев.
  • Программисту всегда известна последовательность действий, которыми пользователь может повесить его программу, но он никогда не чинит эту проблему, надеясь на то, что никому никогда не придёт в голову эту последовательность исполнять.
  • Настоящие программисты любят Windows - все ошибки, сделанны по собственной тупости, можно свалить на Microsoft.
  • Следствие - 99% проблем, сваливаемых на Microsoft, является следствием тупости самих программистов.
  • В приступе злости все почему-то молотят по невинному монитору, вместо системного блока.
  • В случае голодовки настоящий программист ещё месяц сможет питаться едой, выковырянной из-под кнопок клавиатуры.
  • Настоящий программист уже как минимум поменял три залитых пивом клавиатуры.
  • Все, кто испытывает проблемы с настройкой кодировки, автоматически считаются неандертальцами.
  • Дилетантские разговоры о компьютерах вызывают резкую тошноту влоть до приступов рвоты. Вопрос о том как поменять "обои" в Windows вызывает желание перерезать горло вопрошающему.
  • У большинства людей, нуждающихся в твоей помощи, причина ошибки в работе программы чисто генетическая.
  • HTML, HTTP, FTP, SMTP, TCP/IP, RTFM и т.д. - это слова, а не аббревиатуры.
  • Словосочетание "мышка-норушка" не несёт никакого смысла.
  • Самые мистические проблемы, широко раздуваемые и афишируемые, в конце концов оказываются твоими глупейшими ошибками.
  • Следствие - если твоя программа выполняет мистические действия, значит, ты сделал что-то невероятно тупое.
  • Самое плохое ощущение для программиста - когда вокруг тебя стоят десять человек и все пытаются найти причину проблемы в твоей программе, а ты уже понял, в чём проблема, но боишься сказать, потому что это что-то вопиюще глупое...
  • Решение всех жизненных проблем находится на интернете. Надо только уметь хорошо искать.
  • Конфликт логических указаний в жизни вызывает фатальную ошибку в работе мозга программиста - возможно повышение температуры и сильное головокружение вплоть до рвоты или потери сознания.
  • Тех, кто презирает программистов, программисты презирают сильнее, чем те, кто презирает программистов, презирают программистов, которые презирают тех, кто их презирает.
  • Если ты понял предыдущее - то ты программист.

  • Если программист признан незаменимым, то лучшее, что можно сделать - избавиться от него как можно скорее. "The Psychology of Computer Programming", Джеральд Вейнберг, (VAN NOSTRAND REINOLD CO., 1971).
  • Eсть... программы, которые следует выбросить еще до использования.
  • Tребовать и эффективности, и гибкости от одной и той же программы - все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух.
  • Eсли программист работает с языком, в котором разрешены только три индекса, то вряд ли мы обнаружим больше трех.
  • Собрать кучку людей для работы над одной проблемой - не значит сделать их коллективом.
  • Конструктор системы страдает от того, что чем лучше его система делает свое дело, тем меньше пользователи знают о ее существовании.
  • ... Каждая программа имеет соответствующий уровень продуманности и запутанности в зависимости от цели, для которой она применяется.
  • Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство.
  • Для локализации ошибки, однако, желателен человек, обладающий упорством тещи и стадными инстинктами крысы.
  • Если плохой работник ненавидит свои инструменты, хороший работник ненавидит плохие инструменты. Результаты труда рабочего в значительной степени определяются его инструментами.
  • Ни один ремесленник, который стремится к вершинам своей профессии, не примет негодных инструментов; и ни один производитель, который ценит качество работы, не будет упрашивать ремесленника принять их.
  • Другой эффект (отсутствия устной формы) - это затруднения, которые мы испытываем, говоря о языке программирования без доски и мела либо карандаша и бумаги. В каждой программистской лаборатории должны быть доска, мел и достаточное количество тряпок.
  • "Программирование" - как и "любовь" - одно слово, за которым скрывается бесконечное множество занятий.
  • Очень важно не прерывать вопросов. Любопытство имеет свое право на существование. (Альберт Эйнштейн)
  • ... В некоторых диалоговых системах ... пользователь может уберечь свою программу от понижения в приоритете, играя с клавишей переключения регистров в то время, пока он размышляет.
  • Специалист - человек, который избегает мелких ошибок, неуклонно двигаясь к глобальному заблуждению.
  • В природе программирования лежит то, что нет соотношения между "размерами" самой ошибки и проблем, которые она влечет.
  • Когда программист испытывает затруднения при поиске ошибки, это значит, что он ищет не там, где следует.
  • Документация - касторовое масло в программировании... Руководители полагают, что это хорошее средство, ибо программисты так ее ненавидят.
  • Мозг человека обычно загружен лишь на 10% своей мощности; остальное резерв для опереционной системы.
  • Мы стоим на пороге новой эры, эры, ставшей возможной благодаря революции, совершенноя вычислительной машиной. Стоя на пороге, мы колеблемся в выборе пути - к золотому веку свободы или к темному веку тирании, причем и тот, и другой век может превзойти все, что когда-либо видел мир. Возможно, никакие отдельные усилия не скажутся на результате, но мы никогда не должны оставлять попыток, ибо иначе результат наверняка окажется тиранией.
  • Проект (OS/360) был закончен с опозданием, система потребовала большего объема памяти, чем планировалось, затраты значительно превысили предварительные оценки, вся система начала работать как следует только после создания нескольких вариантов, последовавших за первым. "Мифический человеко-месяц", Фредерик Брукс-мл.,р.8 (М., "Наука", 1979).
  • Корабль на мели - моряку маяк. (голландская пословица.)
  • Неподатливость проблемы (срыва планов разработки систем) вызывает всеобщее изумление, и разобраться в ее природе непросто. (Брукс)
  • Вычислительная машина обладает притягательной силой биллиарда или музыкального автомата, доведенных до логической завершенности.
  • Программист, как поэт, работает почти исключительно головой.
  • Вы печатаете на клавиатуре заклинание, и вот экран дисплея оживает, показывая объекты, которых не было и могло не быть никогда ... (но) если хоть один символ, один пробел в магической формуле не находится строго на своем месте, волшебство не работает.
  • ... Во всех областях творческой деятельности формальный объем прав никогда не согласуется с ответственностью.
  • Выдавать глобальные идеи - это удовольствие; искать сволочные маленькие ошибки - вот настоящая работа. (Брукс)
  • Как только проект окончательно принят, он становится устаревшим в смысле своих концепций.
  • Хорошая кухня требует времени. Если вы готовы подождать, мы обслужим вас гораздо лучше, и вы получите большее удовольствие. (меню ресторана "Антуан", Новый Орлеан)
  • Все программисты - оптимисты.
  • На этот раз программа обязательно пройдет.
  • Я только что нашел последнюю ошибку.
  • Большой программистский проект ... включет в себя много отдельных задач, каждая из которых может зависеть от окончания другой . Вероятность того, что каждая задача будет идти нормально, становится исчезающе малой.
  • Стоимость проекта действительно зависит от числа людей и числа месяцев, но его успешность - нет. Следовательно, человеко-месяц как единица измерения объема работы является опасным и вводящим в заблуждение мифом.
  • Чтобы выносить ребенка, нужно девять месяцев, независимо от того, сколько женщин будет к этому привлечено.
  • Когда кажется, что все уже работает, все объединено в систему - вам еще осталось работы на четыре месяца. (Чарльз Портман , ICL)
  • Отметим, что настойчивость руководителя может определить график выполнения задания, но не в состоянии определить срок его действительного завершения.
  • ... Если за две минуты он (омлет) еще не готов, у заказчика два выбора - подождать или съесть его сырым .
  • Закон Брукса: если программистский проект не укладывается в сроки, то добавление рабочей силы только задержит его окончание.
  • ... Концептуальное единство является самым важным соображением при проектировании системы.
  • Система программирования предназначена для того, чтобы облегчать пользование вычислительной машиной.
  • Ни функциональность, ни простота сами по себе не гарантируют... высокого качества (проекта).
  • Добавляя малое к малому, получишь большую кучу. (Овидий)
  • Он сядет здесь и будет распоряжаться: сделайте то!, сделайте это! - но абсолютно ничто не сдвинется с места. (Г.Трумэн, "О презедентской власти ")
  • Никогда не выходи в море с двумя хронометрами: бери один или три.
  • Я в этом разбираюсь. Я знаю, что нужно делать - но каждый раз, когда я пытаюсь заняться технической проблемой, какой-нибудь идиот требует, чтобы я принял решение насчет грузовика, или телефонов, или другой такой же чертовщины. (Роберт Хайнлайн, "THE MAN WHO SOLD THE MOON")
  • Проблема - в том, что все, кто здесь работал, и я в том числе, хотели сделать действительно чистую работу, только они не хотели чистой работы, они хотели много - и быстро. (Рик Бэйкер, гример в фильмах: "Кинг-Конг", "Звездные войны" и т.д.)
  • Генерация случайных чисел - слишком важный вопрос, чтобы оставлять его на волю случая. (Роберт Ковзю, Окриджская лаборатория.)
  • Я не знаю причины, по которой нам не следует этого делать, но, возможно, позже мы придумаем какую-нибудь. (Марк Дэвисон)
  • - Ошибка? Это не ошибка, это системная функция. (Т. Джон Уэнделл)
  • Комьютер "делает из всех нас дураков".
  • Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование.
  • У компьютера всегда есть оправдание; у программиста - никогда. (Марк Дэвисон)
  • Пользователь не знает, чего он хочет, пока не увидит то, что он получил. (Э. Йодан)
  • Мы склонны винить физическую среду в большинстве наших затруднений, ибо эта среда не принадлежит нам в той же мере, что идеи, и наша гордость определяет наше суждение.
  • Работа не может быть выполнена должным образом, если нет необходимых инструментов. (PROCEEDINGS OF THE IEEE, 2/78, р.174)
  • Я слышу и забываю.
    Я вижу и запоминаю.
    Я делаю и понимаю.
    (Конфуций)
  • На пустом диске можно искать вечно. (COMPUTERWORLD BUTTON)
  • Я пишу все свои критические программы на ассемблере, а комедийные - на фортране.
  • Бесполезно придумывать защиту от дурака - ведь дураки так гениальны. (Э.Мэрфи, DEC)
  • Интуитивно ясно, что наличие ошибки в программе не скажется на результатах тестирования, если содержащая ошибку программная компонента при тестировании не выполнялась. (Дж.Хуанг, "PROGRAM INSTRUMENTATION SOFTWARE TESTING", COMPUTER, volume 11, number 4)
  • Если отладка - процесс удаления ошибок, то программирование должно быть процессом их внесения. (Э.Дейкстра)
  • Вы уже дошли до состояния, когда у вас нет времени, чтобы разрешить те проблемы, которые отнимают у вас все время??? (Марк Дэвидсон)

Некоторые важные правила для настоящих программистов.
  • Настоящие программисты не пишут спецификаций - пользователи должны считать себя счастливыми, получая любую программу и принимать ее такой, какая она есть.
  • Настоящие программисты не комментируют свои программы. Это затрудняет написание, и это затруднит чтение.
  • Настоящие программисты не пишут прикладные программы, они программируют не ради презренного металла. Прикладное программирование есть кусок хлеба для тех, кто не может заниматься системным программированием.
  • Настоящие программисты не готовят сами. Они питаются в закусочных и забегаловках.
  • Настоящие программисты не пишут на КОБОЛЕ. КОБОЛ - это для простоватых прикладных программистов.
  • Настоящие программисты никогда не сдают свою работу с первого раза. Но если отдать им машину, они могут залатать все прорехи в своей программе за один или несколько 30-часовых отладочных сеанса.
  • Настоящие программисты не пишут на ФОРТРАНЕ. ФОРТРАН - это для расчетов труб под давлением и кристаллографических игрушек.
  • Настоящие программисты никогда не работают с 9 до 5. Если какой-нибудь настоящий программист в девять часов утра на работе, это значит, что он провел на работе всю ночь.
  • Настоящие программисты не пишут на Бэйсике. Обычно программист не пишет на Бэйсике, если он старше 12 лет.
  • Настоящие программисты не пишут на PL/I. PL/I - это для программистов, которые не могут решится писать на КОБОЛЕ или ФОРТРАНЕ.
  • Настоящие программисты не пишут на АПЛ. Любой дурак может быть непонятным, если пишет на АПЛ.
  • Настоящие программисты не играют в теннис или любую другую спортивную игру, поскольку для этого надо сменить одежду. Однако альпинизм вполне подходит, и настоящие программисты могут надеть свои бахилы в случае, если в результате подьема они вдруг окажутся посередине машинного зала.
  • Настоящие программисты не готовят документацию. Документация - это для тех простаков, кто не может читать листинги или объектный код.
  • Настоящие программисты не пишут на Паскале или на АДЕ, или на любом другом изобретенном учеными языке. Строгие правила написания программ - это для людей со слабой памятью.
  • Настоящие программисты знают лучше пользователя, что ему нужно.
  • Настоящие программисты считают структурное программирование частью коммунистического заговора.
  • Настоящие программисты не работают по расписанию. Расписание - это для лизоблюдов. Настоящим программистам нравится держать своих начальников в полной неизвестности.
  • Настоящие программисты думают лучше, когда играют в "Приключения".
  • Настоящие программисты наслаждаются, установив CP/M для работы на машинaх IBM/370 и MVS на Спектруме.
  • Настоящим программистам никогда не досаждают системы безопасности, они сбрасывают биты где нужно и вставляют непонятные сообщения в данные системы безопасности.
  • Настоящие программисты никогда на исправляют исходный код после работы с программой ZAP, кроме всего прочего, завтра может потребоваться исправ ления вносить снова.
  • Настоящие программисты не тестируют программы. Тестирование для людей со слабыми нервами и к тому же не уверенных в себе.
  • Настоящие программисты всегда программируют рекурсивно и запускают программы только в режиме супервизора, иначе программирование нельзя считать настоящим развлечением.
  • Настоящие программисты никогда не занимаются архивированием.

Источники
  • Каталог законов Мерфи.
  • Алан. Дж. Перлис "афоризмы программирования".
  • и многое другое, авторство чего установить не удалось.
Последняя правка: вт, 14/08/2007 - 10:06
Submitted by Victor on

Комментарии

  • Беспорядок растет со временем, потому что мы измеряем время в направлении, в котором растет беспорядок (Стивен Хокинг).
Submitted by Relyer on

GameDev.by