Танцы с бубном: мифы и реальность
Автор: Владимир Хацкевич В последнее время часто стали появляться вопросы: Как выбрать шаманский бубен программиста? Каким должен быть бубен? Специально для того, чтобы ответить на эти вопросы и развеять ряд накопившихся мифов и заблуждений вокруг данной темы, я пишу эту статью.В разных источниках можно встретить массу рекомендаций. Например, что радиус бубна должен быть равным радиусу кривизны рук программиста [1] или, что бубен должен быть сделан из кожи «девственного юзера» [2] или, что цвет бубна должен совпадать с цветом обоев на компьютере и т.п. Е-р-у-н-д-а! Глупые суеверия и невежество! Неважно какого цвета, размера и из какого материала изготовлен бубен. Важно лишь то какие рунические письмена нанесены на бубен.Какие же руны должны быть на бубне?Ответ прост. Это должны быть фрагменты кода реальных, а главное, работающих программ. Желательно, чтобы фрагменты были взяты из разных программ и написаны на разных языках программирования.На каких же языках должны быть руны на бубне? А это зависит в первую очередь от того на каком языке написана заклинаемая программа. Если Ваша программа написана на C++, то на Вашем бубне обязательно должна быть руна на C++, если программа на Java, то должна быть руна на Java и т.д. Если Ваша программа написана на нескольких языках, то Ваша задача усложняется, т.к. Вам потребуется бубен с рунами каждого из используемых языков. Можно ли использовать несколько бубнов вместо одного? Да, но только если они совместимы между собой [3]. Запомните, что бубен без руны используемого Вами языка программирования для Вас бесполезен. Однажды я встретил бубен с рунами на Коболе и ассемблере IBM 360. Действительно редкая вещь! Но для современного программиста совершенно бесполезная.Выбирая бубен, остерегайтесь подделокСейчас можно встретить множество бубнов с кричащими именами: 20 в одном, 40 в одном и даже 100 языков в одном бубне. Но если внимательно присмотреться к таким 'творениям', то видно, что все фрагменты кода приведенные там есть ничто иное, как программа 'Hello World!', продублированная на разных языках. Такой бубен Вам ничем не поможет. Разве только при создании программы уровня 'Hello World!'.Предположим Вы выбрали бубен и приготовились к танцу. Хорошенько подумайте о том какой именно танец Вы собираетесь воспроизвести. Помните, что не любой танец подойдёт для Вашей программы. Танец изгнания духа Меморилика [4] совершенно бесполезен для программы написанной на Java, точно так же бесполезен танец задабривания виртуальной машины Java для программы на С++ [5].И напоследок я хочу развенчать устоявшийся миф о том, что танцы с бубном способны изгнать баги из программы. Несусветная глупость! Однако очень живучая и кочующая из поколения в поколение. Суть танца с бубном есть обращение к Великому Духу Первопрограммера и его сыну Первопрограмме, а также отречение от Первородного Бага. Правильно исполненный танец с правильным бубном будет услышан Великими Духами и они даруют Вашему детищу своё Благословение и Защиту от багов. Таким образом Вы не избавитесь от багов, но они на время перестанут проявляться. А вот на какое время они перестанут проявляться зависит от мастерства танцора. Я различаю 4 уровня мастерства владения бубном1-й уровеньПрограммист умеет заклинать конкретный экземпляр программы на конкретном компьютере на короткий срок.2-й уровеньПрограммист умеет создавать собственный бубен.3-й уровеньПрограммист умеет заклинать множество экземпляров программы на множестве удалённых компьютеров на длительный срок.4-й уровеньПрограммист умеет обходиться без шаманского бубна.И наконец, мой последний советДопустим Вы купили бубен и совершили удачный танец - программа во время сдачи работала как надо. Не торопитесь почивать на лаврах. Сядьте и попробуйте разобраться, почему Ваш код работал не так как надо [6]. Если же это невозможно, то у Вас есть два варианта: пересмотреть свою жизненную позицию и заняться чем-то другим [7] либо валить нафиг из этой шарашки, в которой создание программного продукта без плясок с бубном невозможно.Искренне Ваш,Гура Кодович БажевПримечания1. Определение радиуса кривизны рук программиста и эмпирическая формула вычисления радиуса хорошо описаны в знаменитой книге Федора Буста «Мифический человеко-бубен». 2. «Девственный юзер» - ныне почти вымерший вид пользователя, не испорченного графическим пользовательским интерфейсом. 3. Совместимость бубнов между собой выходит за рамки данной статьи и будет рассмотрена автором в отдельной статье. 4. Меморилик - злое мифическое существо по мнению дотнетчиков проживающее в каждой программе на C++. ( (с) WolfHound ) 5. Обучиться танцами с бубном Вы можете с помощью моих книг: «50 эффективных танцев c бубном» и «Ещё 35 более эффективных танцев с бубном». 6. А тебя Петя это касается в первую очередь. Ты думаешь я писал эту статью ради твоего развлечения?! Мне уже порядком надоел «The instruction at "0x00405414" referenced memory at...» в твоём модуле. Сейчас после сдачи есть немного спокойного времени. Так вот сядь, разберись и покончи с этой ошибкой раз и навсегда! 7. Нет, Петя, я не шучу.