Бытует мнение, что программисты не особо сильны в хозяйстве. Будучи уверенным, что так оно и есть, я решил помочь программистам всего Мира и решил начать делать это с примера кода для приготовления пиццы.

Сразу говорю: это не RC и даже не beta. Это, скорее, похоже на alpha-версию.

Примечание: фото для демонстрации делались с помощью телефона, т.ч. просьба не пинать ногами за качество…

if (!exists($квартира)) terminate(’Иди в пиццерию!’);
if (!exists($квартира.кухня)) terminate(’Гм… мы не дома?’);

$кухня = $квартира.кухня; // чтобы не писать везде $квартира.
if (!exists($кухня.шкаф_с_продуктами))
terminate(’Блин… надо сначала въехать в квартиру!’);

if (!exists($квартира.холодильник))
terminate(’Холодильник не обнаружен. Продолжение невозможно.’);

if (!exists($кухня.плита))
terminate(’Плита не обнаружена. Продолжение невозможно.’);
// здесь можно дописать подпрограмму на использование $микроволновка

if (exists($квартира.холодильник.пиво)) {
$пиво = $квартира.холодильник.get(’пиво’);
if (!$пиво.is_expired()) {
$пиво.drink();
} else {
$квартира.холодильник.put($пиво);
}
}

$покупки = new покупки();
if (!exists($кухня.шкаф_с_продуктами.мука)) покупки.put(’мука’, ‘для пиццы’);
if (!exists($кухня.шкаф_с_продуктами.масло.оливковое))
покупки.put(’масло’, ‘оливковое’);

// bugfix start by 3eka 07.apr.2008 @ 14:56
if (!exists($кухня.шкаф_с_продуктами.E)) покупки.put(’E', ‘автомат’);
// bugfix end by 3eka 07.apr.2008 @ 14:56

if (!exists($кухня.холодильник.помидор)) покупки.put(’помидор’, ‘средний’, 2);
if (!exists($кухня.холодильник.сыр)) покупки.put(’сыр’, ‘твердый’);
if (!exists($кухня.холодильник.ветчина)) покупки.put(’ветчина’);
if (!exists($кухня.холодильник.грибы))

покупки.put(’грибы’, ‘порезанные шампиньоны’);
if (!exists($кухня.холодильник.маслины)) покупки.put(’маслины’);
if (!exists($кухня.холодильник.дрожжи)) покупки.put(’дрожжи’);
if (!exists($кухня.холодильник.томатная_паста))
покупки.put(’томатная_паста OR кетчуп‘);

if (!$покупки.is_empty())) {
// используем библиотеку сторонних разработчиков
// или пишем собственную, если есть время ;)
if (!$покупки.execute()) {
terminate(’Иди в пиццерию!’);
}
}

$стол = exists($кухня.стол) ? $кухня.стол : $кухня.пол; // %-))

// да, я понимаю, что в команде ниже небольшая проблемка…
// но мы допустим, что ничего лишнего в шкафу и в холодильнике нет

$повар.вывалить_продукты($стол, array($покупки.сумка, $кухня.холодильник, $кухня.шкаф_с_продуктами));

$дрожжи = new дрожжи($стол.дрожжи, $кухня.кран.вода.теплая(150, ‘мл’));
$дрожжи.размешать();

$тесто = new тесто(array(
($стол.мука, ‘250′, ‘грамм’), // у меня мука уже была с сахаром и солью
($дрожжи),
($стол.масло.оливковое, ‘1′, ‘столовая_ложка’)
));

$тесто.sleep(30, ‘минут’);
// желательно в теплом месте, чтобы дрожжи начали свою активность и наделали CO2 ;)

// пока $тесто выделяет CO2, мы готовим $плита и остальные ингредиенты

$плита = $кухня.плита;
$плита.select_model(’Gefest’, ‘1457′);
// периодически обновляйте список плит с сайта www.3eka.com ;)
$плита.select_mode(’духовка‘);
$плита.set_temperature(200, ‘celsius’); // по цельсию

$повар.порезать($стол.помидоры, ‘тонкими ломтиками’);
$повар.натереть($стол.сыр, ‘крупная терка’);
// если вдруг !isset($терка), то можно использовать нож и мелко нарезать сыр, как это сделал я ;)

$повар.порезать($стол.ветчина, ‘тонкими небольшими кусочками’);

$повар.открыть($стол.маслины);
// жестокая шутка с поваром - закомментировать эту строку, особенно, учитывая следующую ;D

$повар.порезать($стол.маслины, ‘колечками’);
// здесь странным образом влияет марка авто, на котором ты ездишь

$повар.открыть($стол.грибы);
$повар.обжарить($стол.грибы, ‘на подсолнечном масле’);
// здесь используется подпрограмма работы со сковородкой

$повар.открыть($стол.томатная_паста);

while ($тесто.is_sleeps()) {
// здесь подпрограмма поиска пива в холодильнике
}

$повар.посыпать($стол, $стол.мука);
// счастливым обладателям второго стола придется самом доработать программу

$повар.положить($тесто, $стол);
$повар.месить($тесто);
// месить - в кулинарном смысле этого слова; положи биту на место! ;)
// в противном случае тесто начинает сопротивляться, потом звереет и может дать сдачи!

$повар.раскатать($тесто, ‘до 3-4мм’);
// здесь в $тесто уже не тесто, а, собственно, блин из теста.
// Повар, помни! Раскатанное тесто уже не может дать сдачи ;)

$противень = new противень();
if (!like($тесто.форма, $противень.форма))
$повар.подрезать($тесто, $противень.форма);
$повар.смазать($противень, $стол.масло);
$противень.attach_object($тесто);

$противень.attach_object($стол.томатная_паста);
$противень.attach_object($стол.ветчина);
$противень.attach_object($стол.грибы);
$противень.attach_object($стол.помидоры);
$противень.attach_object($стол.сыр);
$противень.attach_object($стол.маслины);
// здесь еще можно добавить майонезик и специи

// надо убедиться, что
// $плита.духовка.температура != $холодильник.температура ;))

if ($плита.духовка.temperature < 200) {
// здесь подпрограмма вызова службы сервиса для $плита
terminate(’Иди в пиццерию!’);
}

$плита.духовка.attach_object($противень);

// Следующая подпрограмма частенько глючит, из-за чего появляется $гарь, $вонь
// и приходится выполнять действия “выбросить”, “драить” и “проветривать”.
// поэтому авнимательно отнеситесь к следующей подпрограмме.

$повар.контролировать($плита.духовка, ‘20 минут’);

// В результате предыдущей сложной процедуры
// должна произойти магия, которая превратит “тесто” в “пицца”.
// Чтобы увеличить вероятность положительного исхода,
// можно во время выполнения процедуры
// танцевать возле $плита с объектом $бубен

$плита.духовка.detach_object($противень);
$повар.разрезать($противень.пицца, ‘симметрично’);

$повар.установить_громкость(’средний’);
$повар.сказать(’Налетай!!!’);
// вместо последней команды можно использовать несложную,
// но эффективную подпрограмму,
// работающую с объектами $вино, $свеча и $компьютер.видео

P.S.: для упрощения восприятия алгоритма в программе практически отсутствует обработка ошибок; например, таких, как
$квартира.электричество, $повар.кривые_руки, $бабки>0 для процедуры $покупки.execute() и т.п.

P.P.S.: приготовить пиццу меня воодушевил известный IT-гурман и путешественник Андрей.