Программистов во всем мире считают разновидностью ПСИХОВ, причем не таких уж безобидных. В обществе во всю гуляют ужасные рассказы о вирусах и их безумных авторах, готовых ради ложно понятого самоутверждения ставить под угрозу работу целых отраслей промышленности. Если забыть о вирусах, то больше о программистих ничего не известно. Многолетние наблюдения за ними показывают, что в основном они безобидные и приветливые люди, увлеченные своей работой. Иногда их трудно понять. Для облегчения вашего общения с близким, знакомым или подчиненным программистом предлагаем вашему вниманию "Бусидо программиста...", т.е. список моральных и жизненных правил, которым вольно или невольно следует любой программист. Бусидо носит приблизительный характер, и, строго говоря, необязательно к исполнению. Это "рекомендованное чтение", обобщение результатов наблюдений, делать которые вообще никто не просил. После "Бусидо" приводятся комментарии, объясняющие используемые термины, жаргонные словечки и философские концепции. БУСИДО ПРОГРАММИСТА НА IBM, PC, XT, AT, PS/2 и т.д. В СССР 1. Программист должен иметь толстую задницу, пустую голову и коротко остриженные ногти на правой руке. 2. Программист должен стремиться к отладке. Если ситуация имеет два выхода, один из которых - завершить работу над программой, а другой отлаживвать дальше, то программист должен выбирать второй путь. 3. Дата завершения программы невычислима и не постижима. Для спокойствия души программист должен вообще забыть о том, что он когда- нибудь кончит писать эту программу. 4. Программист программирует процесс собственного программирования. 5. Если в вашей программе есть байт, который вам не нравится, перепишите ее всю. 6. Хороша та программа, которая продается. Программа не считается законченной, пока клиент не расплатился. 7. На вопрос: "Можете ли вы написать данную программу?" настоящий программист отвечает одним из двух способов:"Могу" или "Могу, но не знаю как". 8. Нет игр, кроме ТЕТРИСа, да и тот нудянка страшная. 9. Настоящий программист пользуется стандартными средствами. Почти все программы уже давно написаны. 10. Обязательные действия настоящего программиста: распечатывать дампы, читать документацию, дышать, есть и спать. Высший приоритет у сна. 11. Информация аддитивна. 12. Настоящий программист должен иметь четко сформулированное представление о месте программирования в жизни. Например: - Любое неотложное дело можно отложить на любое неопределенное время. Нельзя откладывать только излишества и развлечения. - Работа должна напоминать досуг. - От работы кони дохнут. - Лучше ничего не делать, чем делать ничего. и т.д. 13. Зарезервировано для дальнейшего развития. КОММЕНТАРИИ Почему в СССР? Как сказал поэт: "Я люблю эту грешную землю Потому что другой не видал" Что такое "Бусидо"? Буквально в переводе с японского - "путь воина", т.е. сборник моральных установок японского самурая, концептуально более широкий, чем японский военный устав. Следование принципам "бусидо" обязательно и приоритетно для самурая и необязательно для просто вооруженного японца. Имеют хождение другие бусидо вроде знаменитого эссе "Настоящий программист программирует только на фортране". Вопрос о совместимости всех "бусидо" не обсуждается, т.к. сознательно не исследовался автором. 1. Использована знаменитая трехшаговая схема Ф.Э. Джержинского. Так же как и в оригинальном высказывании, все рекомендации носят чисто иносказательный характер. Более полно этот принцип звучит так: "Программист должен уметь сидеть за дисплеем по 24 часа в сутки (или по 25/23 - в день осенне-весеннего перевода часов); должен уметь не думать ни о чем, кроме программы, и при игре в ТЕТРИС не задевать ногтем за клавишу ESCAPE (на старой клавиатуре с 84 клавишами)". Наиболее сушественен второй принцип, в своем развитии простирающийся до системы йогов и буддийской техники психорегуляции. См. также комментарий к принципу 3. 2. "Самурай должен стремиться к смерти. Если есть два пути и один из них ведет к смерти, то самурай должен вступить на путь, ведущий к смерти." Программист работает над программой, пока его начальник не вырвет ее из рук программиста насильно и не объявит официально об окончании работы над программой. (Здесь имеются в виду, конечно, большие программы, а не маленькие. Любопытно исследовать вопрос о том, как с ростом сложности программы она скачкообразно переходит из разряда маленьких программ в разряд больших, или нескончаемых; и далее, по мере дальнейшего усложнения, перескакивает в разряд програмных проектов с непредсказуемам состоянием завершенности. См. также книгу Ф.Брукса "Мифический человеко-месяц". 3. Коррелирует с второй частью принципа первого. Ни мысли об окончании работ, ни мысли о деньгах или престиже не должны занимать голову программиста даже в режиме Terminate but Stay Resident (Окончиться, но не освобождать память). Память программиста во время работы над программой должна быть полностью отдана программе. Опыт показывает, что любые посторонние мысли в конечном счете только мешают. Что делать, если посторонние мысли все-таки лезут? Или заниматься аутотренингом; или найти работу поинтереснее; или найти, как обойти данное неинтересное место в программе или сделать его интересным; или ничего не делать с сознанием того, что работаешь медленнее и хуже, чем мог бы; или устоить перерыв. 4. В древности считалось, что программирование начинается с рисования блок-схем. Опыт показывает, что начинать программирование нужно задолго до и кончать значительно позже этапа собственно работы с текстом программы. Этот принцип работы глубок. Что вы, собственно, хотите сказать своей программой? Хватит ли у вас сил, средств и ресурсов? Не написана ли она уже давно другим? Нужна ли она будет кому-нибудь после того, как она примет товарный вид? Сможет ли этот кто-нибудь ее купить, при условии, что вы произвели ее для продажи? И, опять же, если вы преполагаете продавать свою программу, как и за сколько вы будете ее продавать?... Все эти и множество других вопросов могут влиять на текст вашей программы. 5. К этому надо стремиться. В этом состоит подлинное исскуство. 6. Каждый программист или имеет свое мнение о хорошей программе, или когда-нибудь слышал чье-то. Пишущие на Паскале стараются не применять оператор GOTO и рассуждают об абзацных отступах. Пишущие на СИ стараются размещать не более одной процедуры на экране. Пишущие на языке ассемблера изощряются не только в операторах, но и в комментариях. И т.д. Все это существенно, если вы пишете программу не на продажу. В этом случае вы просто пишете программу. Следовать принципу "программирования программирования" не обязательно. Другое дело - программировать товарный программный продукт. Текст товарной программы может быть красивым, но время обычно против красоты. Покупатель руководствуется совсем другими критериями, чем красота исходника. С другой стороны, красиво написанная программа более удобна с точки зрения отладки, содержит меньше логическких ошибок и обычно работает более надежно. Единственный выход - сразу писать красиво. 7. Только так. Если вы еще не понимаете, почему недопустимы другие ответы, все равно отвечайте одним из двух предложенных способов не задумываясь. 8. Игры, антивирусы, NORTON COMMANDER и прочие резиденты, драйверы ALFA и BETA должны быть удалены из памяти, а то и вообще с винчестера. Это - детские болезни. Что касается игры ТЕТРИС, то это самая лучшая компьютерная игра, но все равно нудная. 9. Этот принцип можно назвать глубочайшим. О, сколь многие потратили месяцы и годы на написание программ, которые уже давно написаны. Одно по-настоящему внимательное прочтение руководства по MS-DOS избавит вас от многих и многих разочарований и неприятных открытий. 10. Можно быть программистом и не писать программы. Нельзя долго оставаться программистом, не читая документацию. Распечатка дампов необязательна ровно настолько, насколько не обязательно открывать капот собственной автомашины (просмотр дампов на экране - полумера). Невозможно программировать не выспавшись. Если вы не программист, но начальник программистов и заставляете их приходить на работу к определенному сроку, то вы теряете программистов и приобретаете набивальщиков невразумительных текстов. 11. Это один из постулатов теории информации. Настоящий программист умеет использовать в своей работе всю информацию, которая имеется в его распоряжении на данный момент по данному вопросу. Любую книгу программист читает в том числе и как документацию и из любого печатного издания извлекает сведения по программированию. 12. Комментарий к принципу 10 может показаться мрачноватым, но, к счастью, действия, описанные в нем, только необходимы, но не достаточны. Программист не живет, чтобы работать, и не работает, чтобы жить. Все недоразумения возникают из незнания того, что рабочим инструментом программиста являются, помимо головы, его душа и эстетическое чувство. 13. Чисто стилевой элемент. Иллюстрирует тот факт, что грош цена системе, не имеющей возможности для развития.