<< [хозяин] [библиотека] [оглавление]>>

 

Бобби Грант
Программирование Господне

Глава 2
Маленькая программка - ваш первый шаг

Мы сразу приведём Вам пример работающей программы. Ещё раз запомните - любая программа будет работать. Вы можете использовать любой язык: английский, русский, Pascal, C, Ada, символьный, греческий или любой другой, даже придуманный лично Вами. Можно использовать даже звуки. Действительно, музыкальную религию тоже можно создать, и она будет работать; но насколько эффективно она будет это делать - зависит от композитора. Например, один из авторов (не будем указывать пальцем (прим.Сволоча Ц.Г.)) создал религию пердящих звуков. Сейчас он как раз работает над соответствующей библией.

Ещё заметим, что разные части программы можно писать на совершенно различных языках (multi-language programming). Авторы не являются сторонниками данного стиля программирования, так как часто это создаёт семантически неизотропные миры. Действительно, разные языки обладают различающейся семантикой. Поэтому, например, полнота описания свойств объекта в одном месте программы может обернуться трагической неполнотой удовлетворения желаний (в оригинале- that fucking desires (прим.пер.)) объекта в другом её месте, написаном на другом языке. Единственным оправданием мульти-языковому программированию может служить то, что проблемы типа описанной выше возникают и при моно-языковом программировании - исключительно из-за недочётов программиста.

На этот счёт существует весьма интересная методика, изложенная в книге Блядева У.Г., русского программиста-самоучки, "Обезьяна-Создатель". Суть её в том, что разрабока заведомо ошибочной программы с помощью мульти-языкового программирования (которое тоже ошибочно по природе человеческой) приводит к созданию более благоустроенного мира, чем создание аналогичного мира при моно-языковом программировании. Дело тут в том, считает Блядев (в оригинале- this fucking Blyadev are guess (прим.пер.)), что две совокупности ошибок уменьшают число ошибок в работающей программе. Блядев приводит вероятностные выкладки и доказывает это на примере собственноручно составленных программ. Но авторы не принимают всерьёз ни самого Блядева, ни его теорий. Дело в том, что на последнем семинаре "God Soft Party'99" Блядев перебил Жоппасу П.П. все пальцы на правой руке за то, что Сволочь Ц.Г. обозвал Блядева fuckergrammer'ом.

Приведём Вам наконец этот пример (в оригинале-fucking example (прим.пер.)). Программа нами протестирована и работает именно так, как будет описано ниже при её описании. Не смейтесь, как идиот, здесь абсолютно нет никакой тавтологии. Это очень серьёзная проблема. Зачастую программы бывают написаны на архи-сложных с точки зрения божественной элементарности языках, что сами программисты не могут точно сказать, как всё это будет работать, каков будет тот новый мир (в оригинале- that fucking new world (прим.пер.)). Божественная элементарность языка - это такое его свойство, которое показывает, насколько единичное понятие языка соответствует Абсолютному Божественному Эквиваленту. Чтобы не быть голословным, приведём пример. В английском языке слово kill означает "убить, уничтожить". При ис-
пользовании этого слова для функции уничтожения обьекта используется, допустим, такой синтаксис:

BOOL kill( *subject:TObject); //объявление функции
/* использование функции для убийства конкретного субъекта
326572356-го поколения с индексом 653256553 */
result = kill(man[326572356,653256553]);
if(!result) sendmessage(man[326572356,653256553],"Ты избранник божий");

В этом фрагменте программы рассматривается индивидуальный экземпляр - судя по имени массива (man) - человек. Мы его убиваем функцией kill(), объявленной выше. Если результат убийства - FALSE, то убить его не получилось, следовательно данный субъект бессмертен, о чём мы его и уведомляем (как он, наверное, пересрался!). Но проблема в том, что "ЧТО ЗНАЧИТ "УБИТЬ" В ТОМ МИРЕ?". Значит ли это просто лишить
душу тела и послать её в ад, или полностью отправить субъект в небытиё, или... Дело в том, что в том мире может быть другое устройство, и "убить" там означает не то, что здесь, у нас. Поэтому возникает неопределённость при обработке условий и принятии решений программистом.

Корни проблемы кроются не так глубоко. Наш мир тоже создан другими, и наши языки являются отражением нашего мира. Да, но в то же время наш мир является нам в образах нашего языка. (Если ты большой умник, Жоппас, то так и скажи, а не суй свой абзац в мой текст (прим.Сволоча Ц.Г.)). Чем больше задуманный проектировщиком мир отличается от нашего, тем труднее его реализовать.Чем больше он отличается, тем труднее его вообразить, и ещё труднее конкретизировать и формально описать.
Вы уже давно ждёте пример программы. Сейчас мы Вам его приведём (в оригинале- Here is that fucking example are You waiting for a long time (прим.пер.))

Program WORLD_ONE;
uses my_imagination, your_attention;

const
MAX_AVAIBLE_HUMANS=87943287943287693489;

var
i : integer;
r : integer;

Begin
END_OF_LIGHT:=false;
ClearAllHumans; {всех людей очистить}
{Создание Адама}
human[1]:=default_male;
human[1].name:="Adam";
CreateNext (human[1]);
{Создание Евы}
human[2]:=default_female;
human[2].name:="Eva";
CreateNext (human[2]);

repeat {------------------------------------------------------------------}
Dispatch_Humans; {обработать людей}
r:=random(5443453);
if r=4543 then sendmessage(TO_ALL,human[0],"Бог шлёт вам привет");
if r=4544 then sendmessage (TO_ONE,human[1],"Адам, ты ещё жив?");
if count_of_humans>MAX_AVAIBLE_HUMANS then END_OF_LIGHT:=true;
until END_OF_LIGHT;{------------------------------------------------------}
End_of_light; {вызвать процедуру конца света}
End.

[дальше...]

web (с)2000 Артём Ларин