Softpanorama

May the source be with you, but remember the KISS principle ;-)
Home Switchboard Unix Administration Red Hat TCP/IP Networks Neoliberalism Toxic Managers
(slightly skeptical) Educational society promoting "Back to basics" movement against IT overcomplexity and  bastardization of classic Unix

>

Programmer Poltoraki

Softpanorama 1990, vol 2, No. 3

 Алан. Дж. Перлис

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

от редактора перевода.

Предлагаемый  перевод  -  скорее   подстрочник,   чем   отшлифованное произведение.  В  тех  случаях,  когда  не   удалось   найти   подходящего эквивалента, оставлен английский текст.

* * *

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

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

     1. То, что для одного человека константа, для другого - переменная.

     2. Функции задерживают связь,  структуры  данных  стимулируют  связь. Мораль:   Структурируйте   данные   как   можно   позднее    в    процессе программирования.

     3. Синтаксический сахар вызывает рак точек с запятой.

     4.  Каждая  программа  является  частью  другой  программы  и   редко соответствует ей.

     5. Если программа манипулирует большим количеством данных, она делает это лишь несколькими способами.

     6. Симметрия  представляет  собой  концепцию,  сокращающую  сложность (сопрограммы содержат подпрограммы); ищите ее повсюду.

     7. Проще написать неправильную программу, чем понять правильную.

     8. Язык программирования имеет  низкий  уровень,  если  в  программах приходится уделять внимание несущественному.

     9. Лучше, чтобы в 100 функциях использовалась одна структура  данных, чем в 10 функциях - 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. Использование программы  для  доказательства  теоремы  о  четырех красках не изменит математики. Оно просто  покажет,  что  задача,  которая оставалась нерешенной в течении столетия, возможно, не так  уж  важна  для математики.

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

     38. Структурированное программирование потверждает закон исключенного третьего.

     39. Реальная графика: Для описания картинки необходимо 10к  слов.  Но едва ли можно описать какое-либо множество из 10к слов с помощью картинок.

     40. Программы без ошибок можно написать двумя способами, но  работает - третий.

     41.  Некоторые  языки  программирования   допускают   изменения,   но сопротивляются прогрессу.

     42. Перспективность программиста можно оценить, узнав  его  мнение  о жизнеспособности фортрана.

     43. В программных системах зачастую  "кто  рано  встает,  того  удача ждет".

     44.   Иногда   мне   кажется,   что   единственным   универсумом    в программировании является цикл.

     45. Цель Fетсн-ехесUте  вычислений  -  эмуляция  наших  синтетических способностей, а не понимание аналитических.

     46. Как и каламбур, программирование - это игра слов

     47. Как сказал бы уилл  роджерс:  "В  природе  нет  такой  вещи,  как свободная переменная".

     48. Для дилетанта лучшим пособием по программированию служит "алиса в стране чудес" - только потому, что для него это лучшее пособие  по  любому предмету.

     49. Отказ от языка ассемблера  был  яблоком  раздора  в  наших  садах эдема: Языки, использование которых приводит к растранжированию  машинного времени,  греховны.  Лиспмашина  сегодня  позволяет  своим   программистам отказаться от фигового листка.

     50. Когда мы поймем машинные системы баз знаний,  все  будет,  как  и прежде, с той лишь разницей, что кончики пальцев будут обожжены.

     51. Появление эвм в домах  не  изменит  ни  один  из  них,  но  может возродить салуны.

     52. Системы состоят из подсистем, подсистемы - из подподсистем и  так до бесконечности - именно поэтому мы проектируем снизу вверх.

     53. Так  много  хороших  идей  исчезает  бесследно,  попав  в  пучину семантики.

     54. Остерегайтесь  бочки  меда  с  ложкой  дегтя  тьюринга,  где  все возможно, но все интересное слишком сложно.

     55. Лисп-программисту известна ценность  всего,  но  неизвестна  цена чего бы то ни было.

     56.  Софтвер  находится  в  постоянном   напряжении.   Поскольку   он символичен,  его  можно  постоянно  совершенствовать,  но  и   произвольно изменять.

     57. Легче изменить спецификацию, чтобы она соответствовала программе, но не наоборот.

     58. Глупцы игнорируют  сложность.  Прагматики  терпят  ее.  Некоторые могут избегать ее. Гении ее устраняют.

     59. В английском языке любое слово может быть глаголом.  Разве  могло бы такое быть в языках программирования?

     60. DаNа Sсотт IS тне снURсн оF LаттIсе-WаY SаINтS.

     61. В программировании, как и везде,  ошибаться  -  значит  рождаться заново.

     62. В программировании инварианты эфемерны.

     63. Когда мы пишем программы, которые "обучают", мы - обучаем, а  они - нет.

     64. Часто средства оправдывают цели: Цели порождают  метод,  а  метод выживает, даже когда разрушаются структуры, бывшие ранее целью.

     65. Не путайте: Машины обрабатывают числа, а не символы. Мы  измеряем свое понимание (и контроль) степенью арифметизации деятельности.

     66. Легко сделать что-то переменным. Хитрость в том,  чтобы  измерять продолжительность постоянства.

     67. Подумайте, сколько психических сил потрачено на поиски  коренного различия между "алгоритмом" и "программой".

     68.  Если  мы  верим  в  структуры  данных,  мы  должны  верить  и  в независимую (и потому одновременную)  обработку.  Зачем  же  еще  собирать элементы в структуру? Почему мы терпим языки, которые дают нам одно, но не дают другое?

     69. Через пять лет  у  нас  будет  один  суперязык  программирования, только мы не можем установить начало этого пятилетнего периода.      70. Веками индейцы создавали язык знаков, чтобы сообщить  друг  другу самое интересное. Программисты из разных племен (фортрана, лиспа,  алгола,

снобола и т.Д.) Могли бы воспользоваться таким языком, который  понятен  и без классной доски.

     71. Документация подобна  страхованию  на  неопределенный  срок:  Она удовлетворяет всех, поскольку почти  никто  из  подписавшихся  на  нее  не зависит от ее преимуществ.

     72. Адекватная самораскрутка - явное противоречие.

     73. Не слабости,  а  достоинтсва  языка  определяют  направления  его изменений. Увы, язык никогда не сможет избавиться от своего эмбрионального мешка.

     74. Возможно ли, что программное обеспечение  не  похоже  ни  на  что другое; что оно создано для того, чтобы от него  отказались  со  временем; что все дело в том, чтобы оно всегда оставалось для нас мыльным пузырем?

     75. Благодаря своей жизненности  программирование  всегда  испытывает отчаянную потребность в новых штампах: Банальность успокаивает нервы.

     76. Не создатели, а пользователи должны параметризовать процедуры.

     77. Кибернетический  обмен  между  человеком,  машиной  и  алгоритмом подобен игре в "музыкальные стулья":  Неистовый  поиск  равновесия  всегда оставляет одного из трех неловко стоять.

     78. Если ваша машина говорит по-английски, ее,  вероятно,  сделали  в японии.

     79. Года  работы  над  искусственным  интеллектом  достаточно,  чтобы заставить поверить в бога.

     80.  Продолжительный  контакт  с  машиной  превращает  математиков  в клерков, и наоборот.

     81. В программировании превращение очевидного в полезное - это точное определение слова "разочарование".

     82. Мы вот-вот  сможем  сказать:  "Сегодня  наша  программа  доказала теорему ферма".

     83. Какая разница между машиной тьюринга и современной эвм? Такая же, как между восхождением хиллари на эверест и открытием  отеля  "хилтон"  на его вершине.

     84. Девиз исследовательской лаборатории: "О том, над чем мы  работаем сегодня, другие подумают только завтра".

     85. Хотя китайцы должны были бы обожать арL, они вкладывают деньги  в фортран.

     86. Мы обманываем себя, думая, что  отношение  процедур  к  данным  в активной системе базы данных можно  сделать  произвольно  малым  или  даже сохранить малым.

     87. У нас есть мини- и микро-эвм. В какую семантическую  нишу  попала бы пико-эвм?

     88. Машина не виновата в том, что уравнения максвелла не подходят для проектирования электромотора.

     89. Нельзя научиться программированию с помощью ручного калькулятора, но можно забыть арифметику.

     90. Программирование заставило дерево зацвести.

     91. Эвм напоминает лона чени[#] - это машина с тысячью лиц.  [#]  лон чени написал детектив "человек с тысячью лиц".

     92. Эвм - это загрязнитель в  его  чистейшем  проявлении:  Ее  отходы неотличимы от пищи, которую она производит.

     93. Когда кто-то говорит: "Мне нужен язык программирования, в котором достаточно только сказать, что мне нужно сделать", - дайте ему леденец.

     94. Интерфейсы сохраняют порядок вещей, но не ускоряют рост - функции же ускоряют.

     95. Не имейте хороших идей, если не хотите отвечать за них.

     96.  Машины  скорее  обнаруживают  наличие  беспорядка,  чем  наводят порядок.

     97. Если преподаватель настаивает на том, что вычислительная наука  - это х, а не Y, посочувствуйте его ученикам.

     98.  В  программировании  средняя  наработка   на   отказ   постоянно уменьшается.

     99.  В  симбиозе  человек-машина  приспосабливаться  должен  человек; машины этого не могут.

     100. Никогда не кончатся об'екты программирования,  пока  у  нас  под рукой есть хотя бы одна программа.

     101.  Обработать  ошибку  легко:  Постарайтесь  исправить  программу. Удачный запуск тоже легко обработать: Вы решили не ту задачу. Постарайтесь исправить и эту ошибку.

     102.  Нельзя  перейти  от  неформального  к  формальному  с   помощью формальных средств.

     103. Чисто прикладные языки плохо применимы. (Игра слов аррLIсатIVе и аррLIсавLе).

     104. Доказательство ценности системы - в ее существовании.

     105. Нельзя передать сложность, а только знание о ней.

     106. Трудно выделить смысл из строк,  но  это  единственная  "монета" связи, на которую мы можем рассчитывать.

     107. Споры бушуют  вокруг  того,  что  такое  PL/1  -  двугорбый  или одногорбый верблюд.

     108. Всякий раз, когда два программиста встречаются для  критического анализа своих программ, они оба молчат.

     109. Подумать только! С помощью  сверхбольших  интегральных  схем  мы можем упаковать 100 "эниаков" в 1 кв.См.

     110. Редактирование - это выражение того же, но другими словами.

     111. Почему распалась римская империя?  Как  по-латыни  автоматизация конторских работ?

     112. Эвм приводит в замешательство вычислительную науку.

     113. Единственная конструктивная  теория,  связывающая  неврологию  и психологию, возникает из исследований софтвера.

     114. Для машин естественные языки не естественны.

     115. Большинство людей находят концепцию программирования  очевидной, но само программирование невозможным.

     116. Когда изучаешь какой-либо  вопрос,  считаешь,  что  знаешь  его; когда  можешь  писать  о  нем,  становишься  уверенней  в  своих  знаниях; уверенность возрастает, когда можешь научить этому кого-нибудь другого;  и совершенно уверен, когда начинаешь программировать.

     117. Обучение детей программированию противоречит современной  теории обучения. Разве  интересно  составлять  планы,  овладевать  дисциплиной  в организациии  мышления,  уделять   внимание   деталям   и   учиться   быть самокритичным?

     118. Если вы можете представить  себе  общество,  где  лакеями  будут роботы, вы можете представить все, что угодно.

     119. Программирование - это неестественный процесс.

     120. Адаптировать старые программы к новым  машинам  обычно  означает заставить новые машины работать по-старому.

     121. Простота только мешает  поиску  недостижимого.  Если  существуют афоризмы, должны быть и метаафоризмы.

     122. Афоризмы -  это  интерфейсы,  по  которым  передается  оценка  и понимание.

     123. Афоризмы параметризуют нимбы святости.

     124. Афоризмы - это макросы, поскольку они выполняются в ходе чтения.

     125. Афоризмы кристаллизуют несоответствия.

     126. Афоризмы возвращают  глубокое  семантической  значение  из  базы данных, которая представляет собой процедуру.

     127.  Афоризмы  пропускют  подробности  и   выделяют   главное:   Это превосходная документация высокого уровня.

     128. Афоризмы скорее подобны витаминам, чем белку.

     129. У афоризмов черезвычайно низкая энтропия.

     130. Последний афоризм? Афоризмы нельзя ни есть, ни пить -  их  нужно вдыхать.



Etc

Society

Groupthink : Two Party System as Polyarchy : Corruption of Regulators : Bureaucracies : Understanding Micromanagers and Control Freaks : Toxic Managers :   Harvard Mafia : Diplomatic Communication : Surviving a Bad Performance Review : Insufficient Retirement Funds as Immanent Problem of Neoliberal Regime : PseudoScience : Who Rules America : Neoliberalism  : The Iron Law of Oligarchy : Libertarian Philosophy

Quotes

War and Peace : Skeptical Finance : John Kenneth Galbraith :Talleyrand : Oscar Wilde : Otto Von Bismarck : Keynes : George Carlin : Skeptics : Propaganda  : SE quotes : Language Design and Programming Quotes : Random IT-related quotesSomerset Maugham : Marcus Aurelius : Kurt Vonnegut : Eric Hoffer : Winston Churchill : Napoleon Bonaparte : Ambrose BierceBernard Shaw : Mark Twain Quotes

Bulletin:

Vol 25, No.12 (December, 2013) Rational Fools vs. Efficient Crooks The efficient markets hypothesis : Political Skeptic Bulletin, 2013 : Unemployment Bulletin, 2010 :  Vol 23, No.10 (October, 2011) An observation about corporate security departments : Slightly Skeptical Euromaydan Chronicles, June 2014 : Greenspan legacy bulletin, 2008 : Vol 25, No.10 (October, 2013) Cryptolocker Trojan (Win32/Crilock.A) : Vol 25, No.08 (August, 2013) Cloud providers as intelligence collection hubs : Financial Humor Bulletin, 2010 : Inequality Bulletin, 2009 : Financial Humor Bulletin, 2008 : Copyleft Problems Bulletin, 2004 : Financial Humor Bulletin, 2011 : Energy Bulletin, 2010 : Malware Protection Bulletin, 2010 : Vol 26, No.1 (January, 2013) Object-Oriented Cult : Political Skeptic Bulletin, 2011 : Vol 23, No.11 (November, 2011) Softpanorama classification of sysadmin horror stories : Vol 25, No.05 (May, 2013) Corporate bullshit as a communication method  : Vol 25, No.06 (June, 2013) A Note on the Relationship of Brooks Law and Conway Law

History:

Fifty glorious years (1950-2000): the triumph of the US computer engineering : Donald Knuth : TAoCP and its Influence of Computer Science : Richard Stallman : Linus Torvalds  : Larry Wall  : John K. Ousterhout : CTSS : Multix OS Unix History : Unix shell history : VI editor : History of pipes concept : Solaris : MS DOSProgramming Languages History : PL/1 : Simula 67 : C : History of GCC developmentScripting Languages : Perl history   : OS History : Mail : DNS : SSH : CPU Instruction Sets : SPARC systems 1987-2006 : Norton Commander : Norton Utilities : Norton Ghost : Frontpage history : Malware Defense History : GNU Screen : OSS early history

Classic books:

The Peter Principle : Parkinson Law : 1984 : The Mythical Man-MonthHow to Solve It by George Polya : The Art of Computer Programming : The Elements of Programming Style : The Unix Hater’s Handbook : The Jargon file : The True Believer : Programming Pearls : The Good Soldier Svejk : The Power Elite

Most popular humor pages:

Manifest of the Softpanorama IT Slacker Society : Ten Commandments of the IT Slackers Society : Computer Humor Collection : BSD Logo Story : The Cuckoo's Egg : IT Slang : C++ Humor : ARE YOU A BBS ADDICT? : The Perl Purity Test : Object oriented programmers of all nations : Financial Humor : Financial Humor Bulletin, 2008 : Financial Humor Bulletin, 2010 : The Most Comprehensive Collection of Editor-related Humor : Programming Language Humor : Goldman Sachs related humor : Greenspan humor : C Humor : Scripting Humor : Real Programmers Humor : Web Humor : GPL-related Humor : OFM Humor : Politically Incorrect Humor : IDS Humor : "Linux Sucks" Humor : Russian Musical Humor : Best Russian Programmer Humor : Microsoft plans to buy Catholic Church : Richard Stallman Related Humor : Admin Humor : Perl-related Humor : Linus Torvalds Related humor : PseudoScience Related Humor : Networking Humor : Shell Humor : Financial Humor Bulletin, 2011 : Financial Humor Bulletin, 2012 : Financial Humor Bulletin, 2013 : Java Humor : Software Engineering Humor : Sun Solaris Related Humor : Education Humor : IBM Humor : Assembler-related Humor : VIM Humor : Computer Viruses Humor : Bright tomorrow is rescheduled to a day after tomorrow : Classic Computer Humor

The Last but not Least Technology is dominated by two types of people: those who understand what they do not manage and those who manage what they do not understand ~Archibald Putt. Ph.D


Copyright © 1996-2021 by Softpanorama Society. www.softpanorama.org was initially created as a service to the (now defunct) UN Sustainable Development Networking Programme (SDNP) without any remuneration. This document is an industrial compilation designed and created exclusively for educational use and is distributed under the Softpanorama Content License. Original materials copyright belong to respective owners. Quotes are made for educational purposes only in compliance with the fair use doctrine.

FAIR USE NOTICE This site contains copyrighted material the use of which has not always been specifically authorized by the copyright owner. We are making such material available to advance understanding of computer science, IT technology, economic, scientific, and social issues. We believe this constitutes a 'fair use' of any such copyrighted material as provided by section 107 of the US Copyright Law according to which such material can be distributed without profit exclusively for research and educational purposes.

This is a Spartan WHYFF (We Help You For Free) site written by people for whom English is not a native language. Grammar and spelling errors should be expected. The site contain some broken links as it develops like a living tree...

You can use PayPal to to buy a cup of coffee for authors of this site

Disclaimer:

The statements, views and opinions presented on this web page are those of the author (or referenced source) and are not endorsed by, nor do they necessarily reflect, the opinions of the Softpanorama society. We do not warrant the correctness of the information provided or its fitness for any purpose. The site uses AdSense so you need to be aware of Google privacy policy. You you do not want to be tracked by Google please disable Javascript for this site. This site is perfectly usable without Javascript.

Last modified: March 12, 2019