\/d ГЛАВА тринадцатая. ПРОГРАММИСТЫ ШУТЯТ \/d- Я думаю, очень важно, чтобы в научной работе всегда оставалось место для шутки и развлече- ния. Когда вычислительная техника и програм- мирование только зарождались, в нашей работе было много веселого и забавного. А.Перлис, профессор Йельского университета XIII.1. П р о з а А что касается мистера Френкеля..., то он на- чал страдать от компьютерной болезни - о ней сегодня знает каждый, кто работал с компьюте- рами. Это очень серьезная болезнь,и работать при ней невозможно.Беда с компьютерами состо- ит в том, что вы играете с ними. Они так пре- красны,столько возможностей - если четное чи- сло, вы делаете это, если нечетное, делаете то, и очень скоро на одной-единственной маши- не можно делать все более и более изощренные вещи, если только вы достаточно умны. Р.Фейнман П р о г р а м м и р о в а н и е о ч е р т я г о л о в у (абсолютно серьезный доклад на совершенно серьезную тему) Уважаемые товарищи, с сожалением приходится констатировать,что широкое распространение вычислительной техники и обучение информатике приводит к учащению заболеваний ПОГ. П р о г р а м м и р о в а н и е о ч е р т я г о л о в у (ПОГ) -"дет- ская" болезнь, возникающая в начальный период обучения программированию после того как человек овладевает основами какого-либо языка программиро- вания и составляет первую в своей жизни программу.ПОГ наблюдается у людей различного возраста. Но, к счастью, тяжелая форма болезни - редкость. У большинства начинаю- щих программистов ПОГ протекает почти незаметно,не причиняя никаких стра- даний ни больному, ни окружающим. Интересно, что у женщин обычно наблюдается легкая форма заболевания, причем женщины старше 40 лет - даже имунны (по крайней мере, у них еще не отмечено ни одного случая заболевания). Опасности заболеть ПОГ в тяжелой форме особенно подвержены юноши переходного возраста, а наиболее серьез- ные последствия зафиксированы у пожилых мужчин (как и в случае других дет- ских болезней). Т е ч е н и е болезни ПОГ описывается и измеряется не количеством дней, а числом составленных программ. Инкубационный период- 3-4 программы. Если после создания 10-20 программ симптомы болезни затухают, можно констатиро- вать легкую форму и, что особенно существенно, приобретение устойчивого иммунитета. Если же внешние признаки ПОГ проявляются и после 20 программ, случай - тяжелый. Остановимся подробнее именно на таком случае. С и м п т о м ы. Первый видимый (или вернее слышимый) признак заболева- ния проявляется в том, что больной (или ОГ-программист), находясь в состо- янии либо эйфории, либо депрессии, непрерывно говорит о своей последней программе. Депрессивное состояние наблюдается,когда программа в очередной раз оказывается неверной, хотя больной по меньшей мере дважды в день объ- являет, что неисправна машина. В состоянии эйфории, когда, по мнению ОГ- программиста, текст программы исправлен, больной пытается всем объяснить, в чем же состояла последняя ошибка. Несчастный! Он искренне уверен, что ошибок в программе больше нет! Он еще не понимает,что обречен на бесконеч- ный поиск. При сложившейся картине болезни в процессе сверхоперативной борьбы с ошибками (известным методом проб и ошибок) программа становится непонят- ной даже для автора, а сам ОГ-программист теряет в тяжелых случаях способ- ность логического, а в особо тяжелых - любого мышления. К симптомам ПОГ относится и отсутствие интереса (или потеря его) к ли- тературе по программированию, презрение к системным, структурным,продуман- ным и дисциплинированным методам программирования. Нередки случаи, когда больной "изобретает колесо". Стремление при любой возможности демонстрировать уверенную и умелую ра- боту с машиной,головокружительные трюки (от которых нет никакой практичес- кой пользы), речь, пестрящая жаргонными словами, такими, как "принтить", "листить" и т.п.,- тоже признаки тяжелой болезни. У ОГ-программистов наблюдается покраснение глаз, бледность лица, дрожь в руках и голосе, особенно, когда речь идет об ЭВМ и программировании. В очень тяжелых случаях - разрушение зубов и выпадение волос. Л е ч е н и е. Наука еще не знает вполне эффективных средств борьбы с ПОГ. Можно посоветовать хорошо продуманный начальный курс программирова- ния, а также ... длительное пребывание на свежем воздухе.Полезно время от времени насильно удалять ОГ-программиста от машины. Например, в подходя- щий момент вывернуть электрические пробки. Однако необходимо следить, что- бы при этом не пропало слишком много трудов ОГ-программиста,так как его реакции совершенно непредсказуемы. Способность мыслить изолированного от машины больного восстанавливается довольно быстро.Если перед ним каким-то чудом окажется текст программы, в которой он при помощи машины двое суток отчаянно пытался найти ошибку, то вполне вероятно,что теперь он обнаружит ее в течение 10-15 минут. Благотворно действует на больного знакомство с парой новых языков про- граммирования. Иногда полезно доверить ОГ-программисту большую и сложную задачу. Решая ее, больной скоро поймет, что его знания недостаточны. Это будет способствовать выздоровлению или ... обострению болезни. Люди, страдающие болезнью ПОГ, для общества не опасны. После выздоров- ления они опять становятся его полноценными членами, а из некоторых выхо- дят даже неплохие программисты. П р о ф и л а к т и к а. Предупреждение ПОГ крайне затруднительно,осо- бенно у учителей информатики. Более того, ОГ-программист, занимающий эту должность, заражает обучаемых. Учитель, страдающий ПОГ даже в легкой фор- ме, испытывает непреодолимое отвращение к методике обучения программирова- нию и общепризнанным методам обучения. Обычно он учит отдельным командам и трюкачеству с их помощью, а также знакомит со своим богатым опытом на поприще бессистемного поиска ошибок. Он уверен,что программирование - уче- ние о командах языка программирования (наглядно: лесоводство - учение о большом количестве отдельных деревьев). Распространению ПОГ способствует нехватка учебников и справочников по программированию. До сих пор издательства еще не поняли в полной мере сво- ей ответственности в этом вопросе. В прессе, на радио и по телевидению не- обходимо ограничить количество выступлений, подстрекающих на ПОГ,при этом увеличив число компетентных выступлений квалифицированных специалистов. Большие надежды в профилактике болезни возлагаются на профсоюзные, ком- сомольские и спортивные организации. Несомненно, что при решительной помо- щи общественности тяжелая форма болезни ПОГ будет окончательно предотвра- щена. Не в совокупности ищи единство, но более- в единообразии разделения. Козьма Прутков С п а я н н ы й к о л л е к т и в Микродрама в системной магистрали Перевод с машинного Действующие лица: П.П., Программа Пользователя М., Монитор П., Принтер Т.К., Телеграфный Канал Т., Терминал Б., Буфер (Происходит прерывание от Программы Пользователя.) П.П. Эй, Монитор! М. Что? П.П. Цифру "6" напечатать надо. М. Эй, Принтер! П. Я занят. П.П. Тогда, Монитор, дай еще памяти. М. Нет памяти, пиши на диск. Диск! (Диск поднимает флаг готовности.) Д. Вызывали? М. Записать надо. Д. Есть! Т.К. Монитор! Для Вас получен байт. М. Жди. Диск, записал? Д. Нет свободного места. М. Телеграфный Канал! Давай свой байт. Т.К. Уже пришел следующий, старый я стер. М. Программа, это тебе прислали байт? П.П. Нет. (Монитор засовывает байт в буфер.) М. Терминал! Пользователь что-нибудь нажимал? Т. Нет. М. Программа! Работай дальше. П.П. Не могу, цифру "6" напечатать надо. М. Принтер! П. Я занят! Т.К. Монитор! Для Вас получен байт. М. Давай. Программа, это твой байт? П.П. Нет. М. Буфер! Б. Я переполнен. (Монитор выбрасывает байт.) М. Принтер! П. Свободен. М. Печатай цифру "6". П. Есть. М. Программа, работай дальше. (Программа работает, проходит одна миллисекунда.) П.П. Эй, Монитор! Цифру "7" напечатать надо. Газета "За науку"(МФТИ) 10.10.86 Д и а л о г Мой способ шутить - это говорить правду. На свете нет ничего смешнее. Б.Шоу - Сережа, дорогой, как тебе нравится мое новое платье? Элегантное? "Какой ужас! Элементарную программу не могу составить". - Сергей, ты считаешь, что можно не отвечать мне? Какой ужас! "Считаешь, считаешь - не получается. Что-то в программе". - Я для тебя ноль... "Неужели деление на ноль? Быть не может". - Ты не можешь уделить мне одну минутку. Ты вообще не видишь меня, смотришь как через стекло. "Причем здесь стек..." - Все, моя чаша терпения переполнилась. "На переполнение не похоже". - Я знала, что ошибаюсь, еще когда мы регистрировались. "Ошибка в регистрах!... Конечно, не из того беру". - Ты никогда не понимал меня. Я измучилась. "Все понятно. Эх, если бы иметь машину,умеющую по-настоящему вести диалог с человеком, разве бы я мучился". - Раз ты этого хочешь, я ухожу. Ты не любишь меня. Все. Кончено. - Галинка, милая. Все. Ура! Кончено. Готова программа. Теперь мы заживем. "Не готова я уходить". - Поторопился и ошибся. Еле исправил. "Не стоит торопиться". - Понимаешь, не из того регистра. "И до регистрации он точно такой же был. Не говорит,не говорит,по- том скажет слово, другое... Много ли женщине для счастья надо?" - Сережа, дорогой, как тебе нравится мое новое платье?.. С к а з к а Поиск истины способен изрядно позабавить. В.Говард 1. Хотите ли вы узнать историю трех маленьких шустрых горошин? Если да, перейдите к 4; если нет, перейдите к 2. 2. Может быть, вы предпочитаете историю трех длинных жердей? Если да, перейдите к 16; если нет, перейдите к 3. 3. Может быть, вы предпочитаете историю о трех простых скромных кусти- ках? Если да, перейдите к 17; если нет, перейдите к 21. 4. Жили-были когда-то три маленькие горошины, одетые во все зеленое. Они мирно спали в своем стручке. Личики у них были совсем кругленькие, а маленькие носики тихо и ровно посапывали. Если вы предпочитаете другое описание, перейдите к 9; если вас все устраивает, перейдите к 5. 5. Они не видели снов. Эти маленькие существа вообще никогда не видят снов. Если вы предпочитаете, чтобы они видели сны, перейдите к 6; иначе перейдите к 7. 6. Они видели сны. Эти маленькие существа все время видят сны, и ночи скрывают их чудесные сновидения. Если вы хотите узнать эти сны,перейдите к 11; если вам это безразлично, перейдите к 7. 7. Их маленькие ножки были укутаны в теплые носки, а с рук они никогда не снимали черных шерстяных перчаток.Если вы предпочитаете перчатки друго- го цвета, перейдите к 8; если этот цвет вас удовлетворяет, перейдите к 10. 8. Они никогда не снимали голубых шерстяных перчаток. Если вы предпо- читаете перчатки другого цвета, перейдите к 7;если этот цвет вам подходит, перейдите к 10. 9. Жили-были три маленькие горошины, которые обошли весь свет, бродя по дорогам. К вечеру утомленные и усталые, они очень быстро уснули. Если вы хотите знать, что будет дальше, перейдите к 5, иначе перейдите к 21. 10. Всем трем снился одинаковый сон,они в самом деле нежно любили друг друга; словно отраженные в трех зеркалах, они видели похожие сны. Если вы хотите узнать их сон, перейдите к 11, иначе перейдите к 12. 11. Им снилось, что они уселись ужинать в харчевне и, открыв крышку кастрюли, они увидели, что это был суп из чечевицы. От ужаса они просну- лись. Если вы хотите знать, почему они проснулись в ужасе, поищите в Энци- клопедии слово "чечевица", и не будем об этом больше говорить; если вы считаете бесполезным углублять этот вопрос, перейдите к 12. 12. "Ой-ой-ой!"- вскрикнули они, открыв глаза. "Ой-ой-ой! Что за сон мы увидели". "Это не к добру",-сказала первая горошина. "Да ,-сказала вто- рая,-это так, я боюсь". "Не тревожьтесь ,- сказала третья, которая была самая умная, - надо не нервничать, а разобраться. Я сейчас попробую вам все объяснить".Если вы хотите сразу же узнать толкование этого сна, перей- дите к 15; если, напротив, вы хотите узнать, как на это прореагировали две другие горошины, перейдите к 13. 13. "Не заговаривай нам зубы",-сказала первая. "С каких это пор ты на- училась толковать сны? Да, с каких пор?" - прибавила вторая. Если вы тоже хотите знать, с каких пор, перейдите к 14, иначе перейдите все-таки тоже к 14, иначе вы ничего не узнаете больше. 14. "С каких пор? - вскричала третья,- Разве я знаю? Да,я умею. Сейчас увидите!" Если вы хотите увидеть, перейдите к 15; если нет, то тоже перей- дите к 15, но вы ничего не увидите. 15. "Хорошо, посмотрим!"- сказали сестры. "Мне не нравятся ваши насмеш- ки",- ответила тогда третья горошина,-И вы ничего не узнаете. Кстати,пока мы здесь все довольно живо обсуждаем, не уменьшились ли ваши страхи? Или, может, совсем рассеялись? Тогда стоит ли копаться в глубинах вашего под- сознания мотыльковых? Пойдемте скорее к фонтану, умоемся и порадуемся это- му веселому утру в чистоте и добром здравии!"Сказано-сделано: они вылезли из своего стручка, опустились осторожно на землю и затем быстро и весело добрались до фонтана. Если вы хотите знать, что было у фонтана, перейдите к 16; если вы этого не хотите, перейдите к 21. 16. Три большие длинные жерди смотрели, что они делают. Если три боль- шие жерди вам не нравятся,перейдите к 21;если они вас устраивают, перейди- те к 17. 17. Три простых скромных кустика смотрели, что они делают. Если вам не нравятся три простых скромных кустика, перейдите к 21; если они вам подхо- дят, перейдите к 18. 18. Видя, что они так на них глазеют, три шустрые маленькие горошины смущенно отвернулись. Если вы хотите узнать что они потом сделали,перейди- те к 19; если вы этого не желаете, перейдите к 21. 19. Они быстренько побежали к своему стручку,укрылись в нем и снова за- снули. Если вы хотите знать продолжение, перейдите к 20; если вы этого не желаете, перейдите к 21. 20. А продолжения то и нет, потому что сказка кончилась. 21. И в этом случае сказка тоже кончилась. Р.Кено Т и п ы п р о г р а м м и с т о в Смех - это солнце: оно прогоняет зиму с человеческого лица. В.Гюго Хотя программистов все еще мало,среди них есть уже свои типы. Я попы- тался охарактеризовать самые яркие из них. К л а с с и ф и к а ц и я с точки зрения подхода к работе Программист-"ш т а м п о в щ и к" - добросовестный ремесленник в луч- шем смысле этого слова. Работает, руководствуясь плотницким правилом "Де- сять раз отмерь, один отрежь". Программирование для него - честное ремес- ло. Что ни программа - то те же самые тщательно сработанные двери. Программист-"б о г е м щ и к" - бывает всесторонним художником. Про- граммирование для него - конек и средство выражения. Его программы полны красок и тонов. Что ни программа - то произведение искусства. Что ни про- грамма - то своя "Неоконченная симфония". Программист-"с т р е л о к", иногда называемый "очумелым" - продукт современной цивилизации. К программированию относится как к бою, его ору- жие - терминал. Что ни программа - то игра в тотализатор. Что ни програм- ма - прыжок в воду. К л а с с и ф и к а ц и я с точки зрения профессии Программист-"р у т и н е р" - является результатом обычной профессио- нальной отупелости. Его не радуют плоды его работы, он не переживает каж- дый проход программы через компьютер, знает, что беганием вокруг стола со- бытий не ускорит. Взгляд на новый компьютер обрадует его не более, чем взгляд на новый кухонный гарнитур. Считает, что программировать умеет, и обычно так оно и есть. Программист-"л ю б и т е л ь" - хотя и работает в своей специальности уже лет 20, все еще не забыл тех счастливых минут, когда был сам себе и компилятором, и перфоратором, и оператором в те времена,когда первый в ре- спублике "УРАЛ-1" выдавал свои исторические результаты. В нем еще горит юношеское волнение, когда через машину проходит именно его программа,а за каждый результат он боится, как за собственного ребенка. Часто думает,что программировать не умеет, но на самом деле все обстоит не так плохо. Программист-"д и л е т а н т" - в сущности счастливый человек: все время чем-то восхищен, удивлен. Компьютер работает! Компьютер стоит! Сол- нышко светит! Он постоянно в движении, постоянно в деле. Все в поле его зрения, ничто не ускользнет от его глаз, ничто чуждое ему не чуждо. Он убежден, что умеет программировать, но, как всегда, снова ошибается. К л а с с и ф и к а ц и я с точки зрения характера Программист-"ф л е г м а т и к" считает своим девиз "лучшее - враг хорошего". Он не разволнуется, если за неделю до окончания проекта выяс- нится, что можно было бы начать сначала и это было бы лучше. Знает,что хо- рошо закончить лучше, чем хорошо начать. Программист-"с а н г в и н и к" мечется от здравой неудовлетореннос- ти. Свою жизнь проживает в собственных программах, и пока они несовершен- ны, спокойного сна у него не будет. Отличается кипучей активностью и хро- ническим недосыпанием. Программист-"х о л е р и к" всем не доволен. Одержим стремлением к полному совершенству, прогрессивности и полноте всего, поэтому переделыва- ет уже переделанное и не доделывает недоделанное. Сомнения в его проекте рассматривает как наглость, а в ответ на вопрос, когда будет готов проект, впадает в обморочное состояние. Подсчитаны 27 различных комбинаций типов программистов. Некоторые из них выглядят явно абсурдными. Остановимся хотя бы на трех крайностях: "Ш т а м п о в щ и к"-"р у т и н е р"-"ф л е г м а т и к" - обычно лю- бим своими шефами. Работает добросовестно, надежно, непогрешимо. В слу- чае необходимости может проявить себя и как способный бухгалтер. "Б о г е м щ и к"-"л ю б и т е л ь"-"с а н г в и н и к" - программист, каких поискать. В нем, как говорится,есть "искра божья", около него целый штаб помощников. Если его не свалит инфаркт, всегда готов для направления в психиатрическую лечебницу. "С т р е л о к"-"д и л е т а н т"-"х о л е р и к" - известен в своем кругу под прозвищем "деятельный болван". Совершенно не важно, что он дела- ет в программировании. Он все равно не знает, как это делать. И.Демнер (журнал "Vega a technika mladezi") Ф о р м у л ы а у т о т р е н и н г а д л я п о л ь з о в а т е л е й ЕС-1060 Я совершенно спокоен... Зависание приятно мне... Расслабляются руки... ноги... туловище... Расслабляется голова... Голова совсем расслабла... После зависания это ощущение пройдет... Я зависаю вместе с операционной системой... Зависают мои руки... ноги... туловище... Зависает голова... Голова совсем зависла... После зависания это ощущение пройдет... Зависание приятно мне... Мне нравится работать на ЕС-1060... Частые зависания способствуют регулярным занятиям аутогенной трени- ровкой... Аутогенная тренировка благотворно действует на мою нервную систему... Я совершенно спокоен... Ничто не отвлекает меня... Не отвлекают мысли о работе - ведь я и так на работе... Я нахожусь на работе и погружен в состояние полного покоя... Ощущение зависания постепенно проходит... Все больше нарастает ощущение работы ЭВМ... Словно легкий ветерок в области лба... Это легкий сквознячок из машинного зала... По моему телу пробегает дрожь... Мои пальцы готовы в любую секунду побежать по клавиатуре, чтобы первым ворваться, запустить задачу, захватить ресурсы ЭВМ... Я весь, как сжатая пружина... Внимание... Рестарт!!! И.Сидисидзе Изучая Поваренную книгу, программист может узнать много интересного и полезного. Д.Кнут Н о в о г о д н и й р е ц е п т Приближается Новый год. Как быстро изготовить программный продукт? На- пишите небольшую программу на Фортране, 200-300 перфокарт разбейте на мо- дули, по 50 операторов каждый. Добавьте 2-3 подпрограммы на Ассемблере,от- перфорируйте. После этого все тщательно перемешайте и медленно пропустите через транслятор при температуре машинного зала. Повторите процедуру не- сколько раз,до полного исчезновения ошибок. Обработайте редактором связей и запустите на счет.Получите листинг. Если обнаружится ошибка - отключите диагностику. Продокументируйте. Программный продукт готов к употреблению. У д и в и т е л ь н о е р я д о м! Вот уж и радио изобрели - а счастья все нет... . И. Ильф XWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWRWWWWWWWWWWWWWWWWWWWWWY V Нажимаемые клавиши V Р е з у л ь т а т V TWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWUWWWWWWWWWWWWWWWWWWWWWS V "CTRL"+">"+"?" V print V V "CTRL"+"|"+"M"+"T"+"D" V print V V "CTRL"+";"+"4" V print V V "CTRL"+";"+"5" V auto V V "CTRL"+"F"+"D"+"X"+"B" V auto V V "CTRL"+";"+";" V goto V V "CTRL"+"W"+"O" V goto V V "CTRL"+"|"+"M"+"T"+"D"+"Y" V run"COM:" V V "SHIFT"+"4"+"7"+"8"+"9" V run"COM:" V V "CTRL"+"W"+"["+"S" V save"COM:" V V "SHIFT"+"5"+"7"+"8"+"9" V save"COM:" V V "CTRL"+"W"+"O"+"S" V load"COM:" V V "SHIFT"+"6"+"7"+"8"+"9" V load"COM:" V V "CTRL"+">"+"?"+"BS" V print run V V "CTRL"+"8"+"9"+"=" V "CAPS" V V "CTRL"+";"+"2" V "CAPS" V V "CTRL"+";"+"3" V "РУС" V V "CTRL"+"8"+"9"+"^" V "РУС" V V "CTRL"+";"+"2"+"3" V "CAPS"+"РУС" V V "CTRL"+"8"+"9"+"="+"^" V "CAPS"+"РУС" V V "CTRL"+"BS"+"H"+"^" V "CTRL"+"STOP" V V "SHIFT"+"4"+"9" V "цифры"run"COM:" V V "SHIFT"+"5"+"9" V "цифры"save"COM:" V V "SHIFT"+"6"+"9" V "цифры"load"COM:" V ZWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWQWWWWWWWWWWWWWWWWWWWWW[ Читателю предлагается продолжить данный список на компьютере MSX-1 и составить аналогичный на компьютере MSX-2! Т е о р и я о ш и б о к Ошибки так же неисчерпаемы, как и атом. А к с и о м а . В любой программе есть ошибки. З а к о н п р о п о р ц и о н а л ь н о с т и . Чем больше программа необходима, тем больше в ней ошибок. С л е д с т в и е . Ошибок не содержит лишь совершенно ненужная про- грамма. Ф у н д а м е н т а л ь н ы й з а к о н т е о р и и о ш и б о к. На ошибках учатся. Следствие 1. Программист, написавший программу, становится ученым. Следствие 2. Чем больше программист делает ошибок, тем быстрее он ста- новится ученым. Следствие 3. Крупный ученый-программист никогда не пишет правильной программы. З а м е ч а н и е . На то он и ученый. У к а з а н и е н а ч и н а ю щ е м у п р о г р а м м и с т у. Если вы с первого раза сумели написать программу, в которой транслятор не обна- ружил ни одной ошибки, сообщите об этом системному программисту. Он испра- вит ошибки в трансляторе. З а к о н н а х о д и м о с т и о ш и б о к . Программист может обна- ружить ошибку только в чужой программе. С л е д с т в и е. Ошибке не все равно, кто ее обнаружил. С о в е т н а ч и н а ю щ е м у п р о г р а м м и с т у . Никогда не исравляйте найденные ошибки, ибо это повлечет за собой появление неизвест- ного числа ненайденных. Лучше опишите их в сопроводительной документации как особенность программы. О п р е д е л е н и е . Будем называть я з ы к о м о ш и б о к пра- вила, в обход которым пишутся программы. Я з ы к о ш и б о к Ошибки могут следовать друг за другом. От перестановки двух эквивалентных ошибок результат не меняется (комму- тативность эквивалентных ошибок). Две последовательные ошибки можно объединить в одну более сильную. Одинаковые ошибки необязательно делать каждый раз, достаточно сделать одну, а затем обращаться к ней по мере необходимости из любого места прог- раммы. Ошибки могут образовывать циклы. Наиболее устойчивый из них - бесконеч- ный. Ошибки могут вызывать друг друга и сами себя (рекурсивность ошибок). Ошибки допускают многократное вложение друг в друга. Две одинаковые вложенные ошибки называются ч е т н о й ошибкой и ошибкой не являются. С в о й с т в о ч е т н о с т и о ш и б о к. Если написанная програм- ма сработала правильно, то это значит, что во время ее работы выполнилось четное число ошибок или программист не понял задание. Ф о р м у л и р о в к а в ы ш е п р и в е д е н н о г о с в о й- с т в а, п р е д н а з н а ч е н н а я д л я п о л и т и к о в. Ошибка, повторенная дважды, перестает быть ошибкой. В з а и м о д е й с т в и е о ш и б о к с б а з о в о й о п е р а ц и о н н о й с и с т е м о й Во время исполнения программы ошибки имеют наивысший приоритет. Прер- вать исполнение ошибки может только другая, более активная ошибка. Запросы операционной системы к ошибкам ошибками могут игнорироваться. Запросы ошибок к операционной системе игнорироваться не могут. При работе с файлами ошибки могут пользоваться файловой системой базо- вой ОС и ее ошибками. На ЭВМ с параллельной архитектурой может выполняться несколько ошибок одновременно. С и с т е м н ы е п р о г р а м м ы Системные программы облегчают процесс написания прикладных программ и их ошибок. О п р е д е л е н и е . Т е с т и р о в а н и е - это процесс нахожде- ния ошибок в тесте. Хороший тест должен содержать ошибки, компенсирующие их нехватку в тес- тируемой программе. Языковый редактор, призванный уберечь программиста от синтаксических ошибок, позволяет вносить в программу весьма хитроумные ошибки, которые не удается обнаружить ни транслятором, ни отладчиком. Обычный текстовый редактор таких возможностей не предоставляет. Программа-транслятор, предназначенная для перевода программ с языка вы- сокого уровня на машинный язык, при переводе порождает ошибки. Ошибки, ко- торые содержались в исходном описании, переводятся безошибочно. Заключительный совет тем, кто до него добрался. До начала работы над проектом следует тщательно продумать все необходимые ошибки и связи между ними. Это значительно упростит работу над ошибками в самом проекте. В.Тихонов И з з а п и с н о й к н и ж к и п р о г р а м м и с т а Смешную фразу надо лелеять, холить, ласково поглаживая по подлежащим. И.Ильф и Е.Петров D Прежде чем написать программу - убедись, что существует ЭВМ, способ- ная ее переварить. D Чтобы овладеть искусством программирования, нужно в первую очередь научиться владеть собой. D Научись писать коротко сложные программы, и тогда ты сможешь изред- ка позволять себе писать длинно простые. D Если ты не видишь очевидных ошибок в своей программе, не отчаивайся, - скорее всего, ты близок к тому, чтобы стать настоящим программистом. D Помни, что несколько лишних операторов в программе не принесут тако- го вреда, как отсутствие двух-трех необходимых. D Если, по-твоему, программа составлена правильно, это еще не значит, что с этим согласится машина. D Помни, что употребление в программе бранных слов и выражений не всегда является действенным способом заставить ее работать. D Если программа заработала, не расстраивайся - долго это продолжать- ся не будет. D Занимаясь улучшением работающей программы, помни, что это верный способ сделать ее хуже. D Если машина вышла из строя еще до того, как программа стала выда- вать результаты, - не унывай,- скорее всего, они были бы ошибочными. D Нет ничего более интересного и загадочного, чем с ошибками состав- ленная, но безошибочно работающая программа. D Вкладывая в программу всю свою душу, не забывай, что ее еще будут эксплуатировать. D Если планируешь написать большую, сверхсложную и, самое главное,без- ошибочно работающую программу - подумай сначала о своих близких. D Программа - высокая поэзия, результаты ее работы - грубая проза. D Основной вопрос программирования: что сложнее - программа или напи- савший ее программист? D Каждая программа -отражение достоинств и недостатков ее составителя. D Не разговаривай с друзьями и близкими на алгоритмическом языке - те- бя могут неправильно понять. D Утреннее машинное время возьми себе, дневное раздели с другом, а ве- чернее отдай врагу. D Надпись на дверях машинного зала: "О с т а в ь н а д е ж д у в с я к с ю д а в х о д я щ и й". D Если вы не умеете программировать - не отчаивайтесь, скорее всего, это не самый лучший из ваших недостатков. D ТЗ для программиста:"Пойди туда, не знаю куда,найди то,не знаю что". D Программист не стареет, - устаревают его программы... D Если твои близкие не программируют, стыдись! Ты позоришь звание про- граммиста! D Программисты, как и ЭВМ, бывают 1, 2, 3, 4-го и т.д. поколений ... D Если с твоей программой может свободно работать совершенно посто- ронний человек, то либо ты альтруист, либо тебе есть еще чему поучиться в жизни... D В чем разница между системным программистом и программистом вообще? Первый, как правило, работает на машину, а второй заставляет машину рабо- тать на себя. D С юмором написанная программа зачастую лишь подтверждает отсутствие чувства юмора у заказчика. D Каждая новая программа - это, как правило, хорошо забытая старая. D На каждые тридцать правильных операторов записывай один неправиль- ный - это делает жизнь разнообразнее! D Помни: войти в подпрограмму, как правило, гораздо легче, чем из нее выйти! D Не давайте далеко заплывать плавающей запятой! D Учти: вложенные циклы не должны скрипеть при работе ... Ю. Шихонин D Стоит ли писать программу, если заранее знаешь, с какого оператора она начнется и каким закончится? D Надо ли материально поощрять специалиста,если ему и так дана возмож- ность попрограммировать? Е.Корженевский D Создав систему, посмотри - не операционная ли она! D Категорически запрещается сушить супервизор на интерфейсе! D Помни, что ЭВМ женского рода! Г.Юдин Ум современного молодого человека рано изнашивается усвоением чужих мыслей и теряет способность к самодеятельности и самостоятельности. В.Ключевский П о г о в о р к и 1. Семеро одного дисплея не ждут. 2. Каждому программисту ЭВМ выдает то, чего он заслуживает (из опыта). 3. Что у заказчика на уме, то у программиста на языке. 4. Не спрашивай старого программиста, спрашивай бывалого. 5. Лучше с хорошим программистом метку потерять, чем с плохим найти. 6. Алгоритмический язык до Новосибирска доведет. 7. Хороша веревка длинная, а программа короткая. 8. Алгоритмам учиться - всегда пригодится. 9. Снявши оператор вывода, по ответу не плачут. 10. В чужой ВЦ со своим транслятором не ходят. 11. Массив не припасешь - памяти не будет. 12. Программу циклом не испортишь. 13. Ячейка память бережет. 14. С миру по ячейке - программисту банк данных. 15. Лучше микрокалькулятор в руках, чем персональный компьютер в мечтах. 16. Кто как программирует, тот так и ест. 17. Маленький алгоритм лучше большого безделья. 18. Отольются заказчику слезы программиста. 19. Дурной FORMAT печати покоя не дает. Б. Медведев Ф р а з ы Болеющие душой за дело внедрения в школу компьютеров, скорее выздорав- ливайте: вы очень нужны! Глобальная учебная цель оправдывает убогие программные средства. "Где, укажите, педагогики отцы, которых мы должны принять за образцы?" (почти по Грибоедову) Почему портфель ученика стал тяжелее, если компьютер призван избавить людей от рутинной работы, облегчить школьнику учение? Т. Драгныш XIII.2. П о э з и я ...грянул оглушительный аплодисман. Ф.Достоевский . Бесы 1) Вот БЭСМ, Которой владеет ВЦ. А это ввод, Который умет читать перфорацию, А стало быть, может ввести информацию В БЭСМ, Которой владеет ВЦ. А это колода, Которую ставят на вход того ввода, Который умет читать перфорацию, А стало быть, может ввести информацию В БЭСМ, Которой владеет ВЦ. А вот лаборантка, младая и пышная, Которая карту засунула лишнюю В большую и важную очень колоду, Которую ставят на вход того ввода, Который умет читать перфорацию, А стало быть, может ввести информацию В БЭСМ, Которой владеет ВЦ. А это АВОСТ, К которому путь неизбежен и прост, Когда лаборантка, младая и пышная, Вдруг карту засунет заведомо лишнюю В большую и важную очень колоду, Которую ставят на вход того ввода, Который умет читать перфорацию, А стало быть, может ввести информацию В БЭСМ, Которой владеет ВЦ. И.Липкин 2) Вот зал, в котором работает JEC A вот смешной нецветной телевизор, Который является главным призом В зале, в котором работает JEC. А это парень веселый, пригожий, Который буквально лезет из кожи, Чтобы занять нецветной телевизор, Который является главным призом В зале, в котором работает JEC. А это - серьезная строгая дама, Которая хочет отладить программу, Которая видеть спокойно не может Парня, который лезет из кожи, Чтобы занять нецветной телевизор, Который является главным призом В зале, в котором работает JEC. А это - шеф и начальник программы, Который главнее серьезной дамы, Которая хочет отладить программу, Которая видеть спокойно не может Парня, который лезет из кожи, Чтобы занять нецветной телевизор, Который является главным призом В зале, в котором работает JEC. А вот оператор в голубенькой блузке. Она начинает перезагрузку... После чего не работает JEC. Слова народные П р и м е ч а н и е . JEC - терминальная система коллективного поль- зования на ЕС ЭВМ. XIII.3. С л о в а р и Если Вам непонятно какое-то слово в техническом тексте, не обращайте на него внимания. Текст полностью сохра- няет смысл и без него. А.Блох С л о в а р ь ч а с т о у п о т р е б л я ю щ и х с я т е р м и н о в Программозой - эра появления первых программистов. WWWWWWWWWWWW Программазм - увлечение программированием нового начальника отдела про- WWWWWWWWWWW граммирования. Депрограммизация - никто не программирует,кроме программистов,и все за- WWWWWWWWWWWWWWWW няты делом. Программизация - процесс, обратный депрограммизации. WWWWWWWWWWWWWW Программаж - состояние сотрудников в период программизации. WWWWWWWWWW Программариум - служебное помещение программистов. WWWWWWWWWWWWW Программодром - пространство, выделенное для свободного полета матема- WWWWWWWWWWWWW тической мысли,обычно - место для курения в отделе про- граммирования. Программистика - совокупность доктрин, утверждающих иррациональную ис- WWWWWWWWWWWWWW ключительность программирования вообще и необходимость свободного режима работы программистов в частности. Программурка - кошка, обитающая в программариуме. WWWWWWWWWWWW Программины - ритуал сдачи готовой программы. WWWWWWWWWWW Программулька - доза валерианки или другого напитка,принимаемая на про- WWWWWWWWWWWWW грамминах. Надпрограммье - техническая документация на неработающую программу. WWWWWWWWWWWWW Программотека - коллекция макулатурных изданий, приобретенная за сдан- WWWWWWWWWWWWW ную во Вторсырье программную документацию. Программиня, программисс - незамужняя программистка. WWWWWWWWWWW WWWWWWWWWWW Суперпрограмма - программа, написанная во время варки супа. WWWWWWWWWWWWWW Суперпрограммистка - автор суперпрограммы. WWWWWWWWWWWWWWWWWW Суперпрограммист - человек, который под видом программирования отлыни- WWWWWWWWWWWWWWWW вает от домашних дел. Программыня - жена суперпрограммиста. WWWWWWWWWWW Программушек, программушечка - дети программистов. WWWWWWWWWWWW WWWWWWWWWWWWWW Е щ е о д и н в е с е л ы й с л о в а р и к Главным образом он любил слова, обычно не встречающиеся в словарях. Г.Лихтенберг Приходится констатировать, что наш отечественный словарь информатики и вычислительной техники сильно замусорен словами иностранного происхожде- ния, чисто техническими или узкоцеховыми терминами,а то и просто жаргоном. За примерами далеко ходить не надо: программирование, информатика, ком- пьютер, ассемблер, алгоритм, дамп, опция, интерфейс, драйвер - и так да- лее и тому подобное. Нами разработан оригинальный понятийный аппарат, который нагляден, об- разен и легко доступен для понимания. Предлагаем его Вашему вниманию. Ж е в а л о - устройство ввода перфокарт З а в и с а л о - операционная система З а п о м и н а л о - ОЗУ К а з а л о - дисплей К р у т и л о - з а п о м и н а л о - диск М о р г а л о - курсор Н а ж и м а л о - клавиатура П р о б и в а л о - перфоратор Р и с о в а л о - графопостроитель Р у г а л о - транслятор С ч и т а л о - процессор Х о д и л о - п р и с т а в а л о - пользователь