Описание: Холиварные споры. |
Поиск в теме | Версия для печати |
-dead- |
Отправлено: 21 Июня, 2011 - 18:06:03
|
Президент
Сообщений всего: 966
Дата рег-ции: Февр. 2009
|
Admin пишет:-dead- пишет:количество вызовов было бы еще ограничено 10 в секунду
Такой подход не дает никаких преимуществ, только неудобства. Чаще всего это бывает необходимо, чтобы избавиться от одной из проблем СОП - дать возможность "перевести дух" машине. В GameLogo таких проблем нет.
Преимущество он даёт вполне конкретное - на любой более производительной машине он будет работать с той же скоростью, что и на исходной, а не будет страдать проблемой DOS-овских игр на P-III, когда начинаешь играть в тетрис и сразу GAME OVER, потому что комп быстрей выполнил заполнение стакана и отрисовку, чем на исходной машине
И в СОП нету проблемы "перевести дух", есть проблема генерации большего количества событий, чем система может успеть обработать. При отсутствии такой перегрузки "переводить дух" не нужно.
В общем я вас понял - "это не баг, это фича" ну фича, так фича. |
|
|
-dead- |
Отправлено: 21 Июня, 2011 - 19:11:47
|
Президент
Сообщений всего: 966
Дата рег-ции: Февр. 2009
|
Admin пишет:Программы, написанные в GameLogo выполняются на той же машине, на которой они были написаны. Это учебная среда программирования.
Под каждую же ЭВМ вряд ли хорошо заново примеры в учебнике переписывать...
Admin пишет:Мы смотрим на противоположные векторы этой проблемы. Я рассматриваю обратный перенос - с быстрой на медленную. И подход, реализованный в GameLogo, в данном контексте может рассматриваться как наиболее удачное решение.
Типа не делать очередь события, которая может быть перегружена,, если не успеваем их обработать. Вариант. Но тогда это скорее должно называться State-driven-programming, чем Event-driven-programming. Но можете считать это придирками
Admin пишет:Длительное нажатие на клавишу и есть такая проблема.
Если обработчик не успевает обработать все события может быть еще такое решение - выкидывать часть событий из обработки, однотипных или полностью совпадающих. Отчасти это будет похоже на ваш вариант, только тут будет ограничение по количеству обработок исходя из первоначального количестве сгенерированных событий.
В общем да, я понял что у вас, зачем и почему, но мне всё равно кажется, что это не события, а состояния . |
|
|
Admin |
Отправлено: 21 Июня, 2011 - 19:28:36
|
Администратор
Сообщений всего: 897
Дата рег-ции: Май 2006
|
-dead- пишет:Под каждую же ЭВМ вряд ли хорошо заново примеры в учебнике переписывать...
Вы видели хоть один пример, для которого это критично?
-dead- пишет: тогда это скорее должно называться State-driven-programming, чем Event-driven-programming
Вы опять пытаетесь подвести под какую-то парадигму. Теперь будем заводить ветку "Почему GameLogo не реализует АОП?".
-dead- пишет:Если обработчик не успевает обработать все события может быть еще такое решение - выкидывать часть событий из обработки, однотипных или полностью совпадающих. Отчасти это будет похоже на ваш вариант
Именно так и делает селектор в GameLogo.
-dead- пишет:только тут будет ограничение по количеству обработок исходя из первоначального количестве сгенерированных событий.
да
-dead- пишет:В общем да, я понял что у вас, зачем и почему, но мне всё равно кажется, что это не события, а состояния .
Ну вот, теперь уже не события и не свойства, а состояния. Поговорим об АОП? |
|
|
Admin |
Отправлено: 21 Июня, 2011 - 20:48:01
|
Администратор
Сообщений всего: 897
Дата рег-ции: Май 2006
|
-dead- пишет:Логично использовать какую-то целостную парадигму, разве нет?
Все зависит от задачи и того, что мы хотим получить.
Следование стандартам какой-либо парадигмы упрощает решение, но далеко не всегда делает его лучше.
-dead- пишет:Состояния объектов = свойства объектов я имел в виду в данном случае.
Эко Вас понесло. No comments.
-dead- пишет:PS: И как удалось прицепить еще и АОП сюда?
Это Вы прицепили, заметьте.
-dead- пишет:Но тогда это скорее должно называться State-driven-programming, чем Event-driven-programming. |
|
|
-dead- |
Отправлено: 21 Июня, 2011 - 22:03:55
|
Президент
Сообщений всего: 966
Дата рег-ции: Февр. 2009
|
Ну значит и я вас не так понял с АОП, потому что по этой аббревиатуре гугл и вики выдали ровно аспектно-ориентированное программирование.
Я под термином State-driven programming имел в виду не аналогию конечным автоматам, а выполнение кода в зависимости от каких-то текущих состояний системы, например основной цикл программы, в котором среди прочего написано "Если сейчас нажата кнопка Х, то сделать Y". А не "если сейчас мы находимся в состоянии Х, то сделать Y и перейти в состояние Z". Видимо зря, термин уже заняли
И я считаю в контексте данного обсуждения синонимами состояние объекта и свойство объекта, посколько на частоту вызовов обработчика не влияет - относим ли мы состояние объекта к свойствами или наоборот или еще как-то.
Нажатие и отжатие это событие. Не спорю, но речь о том, что код работает столько раз сколько успеет, и вроде как каждый раз как "если в данный момент нажата кнопка Х, то сделать Y". Или я таки не правильно понял? если правильно понял, то отличие от классического подхода к событиям в том, что обычно количество сгенерированных событий никак не зависит от количества событий, которые успели обработать. И их обычно генерируется некоторое количество, зависящее от генератора, но не от обработчика.(Отредактировано автором: 21 Июня, 2011 - 22:06:42) |
|
|
Admin |
Отправлено: 22 Июня, 2011 - 14:45:18
|
Администратор
Сообщений всего: 897
Дата рег-ции: Май 2006
|
-dead- пишет:код работает столько раз сколько успеет
А где это не так?
-dead- пишет:вроде как каждый раз как "если в данный момент нажата кнопка Х, то сделать Y". Или я таки не правильно понял?
Нет, не так. Нет никакой проверки в главном цикле. Используются стандартные события KeyDown и KeyUp.
-dead- пишет:если правильно понял, то отличие от классического подхода к событиям в том, что обычно количество сгенерированных событий никак не зависит от количества событий, которые успели обработать. И их обычно генерируется некоторое количество, зависящее от генератора, но не от обработчика.
Нет отличий от подхода, который Вы называете классическим. Количество сгенерированных событий в GameLogo не зависит от количества обработок.
Это количество обработок зависит от времени, которое клавиша остается нажатой. И это сделано, еще раз повторю, для обеспечения плавности управления объектами-картинками на экране. Как и в любой игре нам не надо многократно нажимать на клавишу, чтобы плавно переместить какой-либо персонаж.
-dead- пишет:их обычно генерируется некоторое количество, зависящее от генератора, но не от обработчика.
Да, но вопрос обычно заключается в том, что делать с этой "нагенерированнной" кучей. Еще раз подчеркну, основной вопрос далеко не в регистрации нажатия на клавишу, а в том, что с этой регистрацией делать. А у Вас получается, что главный вопрос - "зависит - не зависит". |
|
|
|
Поиск в теме | Версия для печати |
Страниц (7): « 1 2 [3] 4 5 6 7 » |
« GameLOGO » |
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
|
|
|
|
|