A-tit indd


Байт-код (Bytecode) —  Паттерны программирования игр



Download 3,35 Mb.
Pdf ko'rish
bet151/313
Sana05.06.2022
Hajmi3,35 Mb.
#638392
1   ...   147   148   149   150   151   152   153   154   ...   313
Bog'liq
Nistrem R. Patterni programmirovaniya igr-1

204
Байт-код (Bytecode) — 
Паттерны программирования игр
грамматикой нашего языка. Самый простой — это 
числа:
class NumberExpression : public Expression
{
public:
NumberExpression(double value)
:value_(value)
{}
virtual double evaluate() {return value_;}
private:
double value_;
};
Числовые константы просто равняются своим значе-
ниям. Сложение и умножение немного более сложные, 
так как включают вложенные выражения. Прежде чем 
их вычислить, надо рекурсивно вычислить вложенные 
выражения. Примерно так:
class AdditionExpression : public Expression
{
public:
AdditionExpression(Expression* left,
Expression* right)
:left_(left),
right_(right)
{}
virtual double evaluate()
{
// `
double left = left_->evaluate();
double right = right_->evaluate();
// q
return left + right;
}
private:
Expression* left_;
Expression* right_;
};
Уверен, вы сможете до-
гадаться, как будет выгля-
деть код для умножения.


Паттерны программирования игр
— Паттерны поведения
205
Достаточно изящно, правда? Всего лишь пара про-
стых классов, и вот мы уже можем представлять и вы-
числять невероятно сложные арифметические выраже-
ния. А только и нужно было создать правильные объекты 
и правильно их связать.
Интерпретатор (Interpreter) — прекрасный простой 
паттерн, но и у него есть недостатки. Посмотрите опять 
на иллюстрацию (рис. 11.2). Что вы видите? Множество 
маленьких квадратиков и множество стрелочек между 
ними. Код представлен как развесистое фрактальное де-
рево мелких объектов. И тут прячется несколько непри-
ятных моментов.
• Загрузка кода с диска требует создания экземпляра 
и связывания множества мелких объектов.
• Объекты и указатели между ними используют много 
памяти. На 32-битной машине это маленькое ариф-
метическое выражение займет минимум 68 байт, 
не считая холостое заполнение битов.
• Перемещение указателей во вложенные выраже-
ния — просто убийство для кэша данных. И в то же 
время все виртуальные методы уничтожают кэш 
инструкций.
Сложите все, и что будет? Будет МЕДЛЕННО. Именно 
по этой причине получившие распространение языки 
программирования не строятся на паттерне Интерпре-
татор (Interpreter). Он слишком медленный и использу-
ет слишком много памяти.

Download 3,35 Mb.

Do'stlaringiz bilan baham:
1   ...   147   148   149   150   151   152   153   154   ...   313




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©hozir.org 2024
ma'muriyatiga murojaat qiling

kiriting | ro'yxatdan o'tish
    Bosh sahifa
юртда тантана
Боғда битган
Бугун юртда
Эшитганлар жилманглар
Эшитмадим деманглар
битган бодомлар
Yangiariq tumani
qitish marakazi
Raqamli texnologiyalar
ilishida muhokamadan
tasdiqqa tavsiya
tavsiya etilgan
iqtisodiyot kafedrasi
steiermarkischen landesregierung
asarlaringizni yuboring
o'zingizning asarlaringizni
Iltimos faqat
faqat o'zingizning
steierm rkischen
landesregierung fachabteilung
rkischen landesregierung
hamshira loyihasi
loyihasi mavsum
faolyatining oqibatlari
asosiy adabiyotlar
fakulteti ahborot
ahborot havfsizligi
havfsizligi kafedrasi
fanidan bo’yicha
fakulteti iqtisodiyot
boshqaruv fakulteti
chiqarishda boshqaruv
ishlab chiqarishda
iqtisodiyot fakultet
multiservis tarmoqlari
fanidan asosiy
Uzbek fanidan
mavzulari potok
asosidagi multiservis
'aliyyil a'ziym
billahil 'aliyyil
illaa billahil
quvvata illaa
falah' deganida
Kompyuter savodxonligi
bo’yicha mustaqil
'alal falah'
Hayya 'alal
'alas soloh
Hayya 'alas
mavsum boyicha


yuklab olish