Game Programming Patterns / Паттерны программирования в играх: 1.4. Prototype

← →
Английский оригинал Перевод на русский

Сожалеем, но текст оригинала доступен только зарегистрированным пользователям.

Если он имеет их - отлично.

GromHoll 17.06.14 в 12:00

0

Если в нем они есть, то все.

Deo 25.08.14 в 07:41

0

Если нет - мы проверим родителя объекта.

GromHoll 17.06.14 в 12:01

0

Это просто ссылка на другой объект.

GromHoll 17.06.14 в 12:01

0

Когда мы не в состоянии найти свойство в первом объекте, мы попытаемся проверить его родителя, потом его родителе, и так далее.

GromHoll 17.06.14 в 12:03

0

Не находим свойство в первом объекте - повторяем поиск на его родителе, затем на родителе родителя и т.д.

Deo 25.08.14 в 07:42

0

Другими словами, неудачный поиск делегируется родителю объекта.

GromHoll 17.06.14 в 12:04

0

Другими словами, в случае неудачи поиск делегируется родителю.

Deo 25.08.14 в 07:45

0

Я, конечно, упрощаю.

GromHoll 18.06.14 в 17:55

0

Self на самом деле поддерживает множественное наследование.

GromHoll 18.06.14 в 17:55

0

Родители - это просто специально отмеченное поле, а значит, вы можете делать такие вещи, как наследование родителей и их изменение, в реальном времени. Это называется динамическим наследованием.

GromHoll 19.06.14 в 16:46

0

Родительские объекты позволяют нам повторно использовать поведение (и состояние!)

GromHoll 19.06.14 в 16:47

0

в нескольких объектах, так что мы покрываем пользу от классов.

GromHoll 19.06.14 в 16:50

0

Другая ключевая способность классов - создание экземляров объектов.

rools 01.07.14 в 13:31

0

Когда вам нужен новый объект класса Thingamabob, вы просто пишите new Thingamabob() или как-то по-другому в зависимости от синтаксиса языка.

rools 01.07.14 в 13:37

0

Класс является неявной фабрикой своих экземпляров.

rools 01.07.14 в 13:38

1

Как бы мы создавали новые объекты без классов?

rools 01.07.14 в 13:43

0

В частности, как бы мы создавали кучу новых объектов, которые бы взаимодействовали между собой?

rools 01.07.14 в 13:45

0

Так же как и в шаблонах проектирования, мы бы сделали это в Self с помощью клонирования.

rools 01.07.14 в 13:50

0

В Self каждый объект поддерживает шаблон Прототип по умолчанию.

GromHoll 04.08.14 в 12:43

0

Любой объект может быть клонирован.

rools 01.07.14 в 13:51

0

Для создания нескольких одинаковых объектов вам нужно всего лишь:

rools 01.07.14 в 13:53

0

Предайте объекту тот вид, который вам необходим.

Dmitry84 20.08.14 в 10:00

0

Вы можете просто скопировать базовый Объект, созданный системой, а после наполнить его различными полями и методами.

GromHoll 04.08.14 в 13:03

0

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

rools 01.07.14 в 13:56

0

Создайте столько его клонов, сколько... эм... клонов вам нужно.

GromHoll 11.10.14 в 18:10

0

Мы получили всю элегантность шаблона Prototype без скучной реализации метода clone(); теперь это встроено в систему.

rools 01.07.14 в 14:02

0

Как только я узнал об этой красивой, умной и небольшой системе, я начал создавать язык, основанный на Prototype, чтобы получше разобраться в шаблоне.

rools 01.07.14 в 14:08

0

Я понимаю, что создание языка с нуля не самый хороший способ обучения, но что я могу сказать, я немного странный.

rools 01.07.14 в 14:13

0

Если вам интересно, язык называется Finch.

rools 01.07.14 в 14:14

0

Как все прошло?

rools 01.07.14 в 14:14

0

Я был под большим впечатлением, играя с чисто prototype-ориентированным языком, но в процессе я понял один неприятный факт: программировать на нем было куда менее интересно.

rools 01.07.14 в 14:21

0

С тех пор я слышал через сарафанное радио как многие Self программисты приходили к такому же мнению.

rools 01.07.14 в 14:24

0

Думаю, проект был далек от провала.

rools 01.07.14 в 14:26

0

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

Dmitry84 20.08.14 в 10:09

0

Идеи которые они придумали для компиляции "на лету", сборщика мусора и оптимизации обработки методов, имевшие одинаковые технические приёмы - часто реализовались одними и теми же людьми.

Dmitry84 20.08.14 в 11:35

0

Так что теперь большинство созданных во всём мире языков с динамической типизацией достаточно быстры для использования в очень популярных приложениях.

Dmitry84 20.08.14 в 11:40

0

Конечно, язык был прост в реализации, но это было потому что вся ответственность ложилась на пользователя.

rools 01.07.14 в 16:53

0

Как только я начал пытаться работать с ним, я обнаружил, что в классах отсутствует структура.

rools 01.07.14 в 16:55

0

Как только я попытался работать с ним, обнаружил, что мне не хватает структурности, которую дают классы.

Deo 25.08.14 в 07:50

0

В конце концов я повторил ее на уровне библиотеки, т.к. в языке ее не было.

Deo 25.08.14 в 07:49

0

Возможно вследствие моего предыдущего опыта с языками, основаными на классах, мой мозг был заражен этой парадигмой.

Deo 25.08.14 в 07:59

0

Но я чувствую, что большинству людей просто нравится хорошо определенная "суть вещей".

Deo 25.08.14 в 08:01

0

В дополнение к ошеломляющему успеху объектно ориентированных языков: посмотрите как много игр имеют явные классы игровых героев и точный набор различных видов врагов, предметов и навыков, каждый из которых четко описан.

rools 01.07.14 в 17:10

0

Вы не видите много игр, где каждый монстр уникальная снежинка, словно "смесь между троллем и гоблином с примесью змеи".

rools 01.07.14 в 17:19

0

Можно видеть, что не так много игр, где каждый монстр - уникальная снежинка, вроде "смесь тролля, гоблина и змеи".

Deo 25.08.14 в 08:04

0

Хотя Prototype действительна клрутая парадигма и я хочу, чтобы как можно больше людей узнало о ней, я рад, что большинство из нас не используют ее каждый день.

rools 01.07.14 в 17:26

0

Хоть Prototype - реально крутая парадигма, о которой, хотелось бы, знали больше людей, я рад, что большинство из нас не пользуются ей ежедневно.

Deo 25.08.14 в 08:22

0
+1

Тот код, полностью использующий возможности прототипов, что я видел, я нахожу трудным к пониманию.

Deo 25.08.14 в 12:06

0

Еще одним аргументом выступает то, как мало кода в действительности написано в стиле прототипов.

Deo 25.08.14 в 12:10

0

О, я поискал.

Deo 25.08.14 в 12:10

0

Что на счет JavaScript?

rools 01.07.14 в 17:33

0

А как же JavaScript?

Deo 25.08.14 в 12:11

0
+1

Ок, если prototype-based(?) языки настолько недружелюбны, то как я могу объяснить JavaScript?

rools 01.07.14 в 17:42

0

Ладно, если, языки берущие за основу прототипы, так недружелюбны, как я могу JavaScript?

Deo 25.08.14 в 12:12

0

Это язык с прототипами(?), используемый миллионами людей каждый день.

rools 01.07.14 в 17:47

0

Вот язык с прототипированием, которым пользуются миллионы людей ежедневно.

Deo 25.08.14 в 12:13

0

JavaScript используется на большем числе компьютеров на Земле, чем любой другой язык.

Deo 25.08.14 в 12:15

0

Брендан Айк, создатель JavaScript, черпал вдохновение прямо из Self, и многое из семантики JavaScript основано на прототипах.

Deo 25.08.14 в 13:17

0

Каждый объект может иметь произвольный набор свойств и "методов" (которые на самом деле являются функциями, хранящиеся в виде полей).

rools 01.07.14 в 17:56

0

У любого объекта может быть произвольный набор свойств: полей и "методов" (которые на самом деле функции, хранящиеся в виде полей).

Deo 25.08.14 в 13:24

0
Минутку...

← Предыдущая страница

Следующая страница →