Как пишут программы и почему это похоже на политику

Как и в любой школе в конце 90-х, пришлось мне немного изучать языки программирования. Остановились мы на Turbo Pascal 7.0, помню как сейчас. Писали всякую фигню, вроде определения дня недели по дате, обработки строк и рисования звездочек.

Самого интересного не давали и поэтому учителя не были готовы к тому, что кто-то на всю перемену запустит звуковую волну на писиспикере от 20000 до 500 Гц. и обратно. Отключенный ctrl+break вообще поставил их в ступор =)

В конце школы давали нам такой предмет как экология. Смертная тоска вынуждала бездельничать, но учитель пообещал в конце года поставить положительную оценку только тем, кто примет активное участие в социологическом опросе — будет приставать на проспекте к прохожим с тупой анкетой. Для 22 девчонок класса побегать по городу с анкетами не составляло труда, но это не наш путь. И когда было собрано более семисот и осталось менее двухсот анкет я понял что это мой шанс избежать опалы и примазаться к анкетированию.

С моим товарищем Ильей мы предложили за две недели написать программу, автоматизирующую обработку анкет. Как это часто бывает, срок истек неожиданно, а к проекту мы еще и не приступали.

За четыре часа на хорошо знакомом Турбо Паскале была написана программа с довольно удобным интерфейсом ввода данных и красивым выводом, а вот на код обработки времени не хватало. Тогда на выручку пришла смекалка и с помощью замечательной функции random продукт был дописан.

На следующий день весь класс с упорством обезьян вбивал в компьютеры данные тысячи анкет, а программа исправно считала и выдавала вполне правдоподобный результат. Итоги анкетирования напечатали в нескольких газетах, особо отметив, что применялась написанная учениками Лицея Гуманитарных Наук программа. Заслуженные пятерки в итоге мы получили, но ни с чем не сравнится полученный опыт. С тех пор я и не верю в соцопросы и выборы =)

Все-таки была одна программа, за которую я горд до сих пор. В 2001—2003 г.г. я поднял и долго поддерживал самый крупный русский сервер — эмулятор Battle.net для свежевышедшего WarCraft 3 с момента первых бета-версий. Он хранил сведения об играх в базе MySQL и я написал единственную на тот момент веб-статистику, часть кода которой позже легла в основу jfro PvPGN Stats, используемой и сейчас.

Вспомнилось все это, когда наткнулся в ЖЖ на этот пост, рассказывающий о курьезах при разработке русской игры «Блицкриг 2».

Избранное оттуда:

Ну, сделали и мы в Блицкриге эту самую ракету (ФАУ-2). Как и немцы, сделали ее уже ближе к концу проекта и соорудили на базе объекта «самолет». Но программисты несколько схалтурили и не пооткручивали у бывшего самолета подозрительную для баллистической ракеты функциональность. Оказалость, что если во время полета к цели начинал идти дождь или снег, то во-первых ракета говорила человеческим голосом «Fliege zuruck» (нем. лечу назад), а во-вторых разворачивалась и летела обратно на базу.

А еще был у нас замечательный юнит — отряд спецназовцев. Войска у нас могут получать в ходе миссии опыт, а за опыт дают всякие интересные способности. Так вот, донельзя прокачанные спецназовцы получали возможность маскироваться под вражескую пехоту. Достаточно было просто кликнуть в отряд неприятельских солдатиков, и наши бойцы переодевались в их форму. Можно было безнаказанно разгуливать по вражеской базе. Ну, до первого выстрела, конечно.

Но, беда в том, что в Блицкриге кроме собственно пехоты еще были всякие антуражные юниты, типа коров, свиней и собак. Выяснилось, что спецназ вовсе не чурается переодевания в бобиков и хавроний. Если учесть, что механизм этого самого переодевания несколько глючил и часть отряда можно было нарядить в одну форму, часть в другую, то можно было создавать совершенно безумные подразделения. Например, отряд из собак, свиней и панцергренадеров. Учитывая, что отряду можно отдавать всякие приказы типа «маршировать», «ползти» и т.д. , то игроку предоставлялась уникальная возможность полюбоваться марширующими свиньями. Получалось это у них, впрочем, паршиво, потому что скелет свиньи не соответствует скелету пехотинца и выглядит это как отряд ездящих не попе хрюшек. А еще этот цирк-шапито можо было запихать в окоп. Сидят, значит, свиньи с собаками в окопе и периодически из него выглядывают.

Со свиньями был связан, кстати, еще один баг, из-за которого игра падала. В какой-то момент программисты что-то такое там подкрутили и свиньи перестали быть нейтральными, а обрели возможность принадлежать какому-то игроку. Управлять ими было нельзя, но формально они могли быть «наши» или «ненаши». Так вот свиньи роняли игру. Потому что видя неприятеля, патриотичная хавронья хотела дать врагу отпор и лезла за оружием, которого у нее естественно не было. Если мне не изменяет память, программисты исправили баг, просто выдав свинье пистолет Люгер без патронов. Визуально это никак не видно, но формально, теперь, видя врага, она лезет за оружием, видит что патронов нет и на этом успокаивается.

Кстати, собака, в отличие от свиньи, может кусаться. И число укусов у нее ограничено, кабы не соврать, десятью тысячами. Потом у барбоса кончаются «патроны», и он становится безобидным.

Сейчас я понимаю, что программирование чем-то напоминает политику и законотворчество, особенно после того как начал принимать участие в рабочих группах при Саратовской областной Думе. Изнутри все выглядит ужасно и имеет кучу дырок и багов, но для конечных пользователей — граждан страны — смотрится целым, законченным продуктом.