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