Это популярное сообщение. Dennis_Chikin 3 665 Опубликовано 30 Января 2015 Это популярное сообщение. Поделиться Опубликовано 30 Января 2015 (изменено) Судя по регулярно происходящему в других темах - таки нужна.Вот здесь как раз можете спросить про "зачем создали эту тему ?" А также про ООП, про как заниматься моддингом и его устарелости неустарелости, кто как его себе представляет и т.д. В общем, для много слов "обо всем". Что в более специализированные темы не лезет, но поговорить давно хотелось и хочется. Но таки да, пп 2.0, 2.1 и даже 2.5 правил здесь вполне таки действуют. Изменено 30 Января 2015 пользователем Dennis_Chikin 5 Ссылка на комментарий https://www.amk-team.ru/forum/topic/13126-kurilka-programmistov/page/21/#findComment-912783
Desertir 202 Опубликовано 23 Августа 2015 Поделиться Опубликовано 23 Августа 2015 , я наверное не туда лезу, но все таки. Задача в чем заключается? Чтобы не плодить функций IsXXX()? Ссылка на комментарий https://www.amk-team.ru/forum/topic/13126-kurilka-programmistov/page/21/#findComment-959501
Dennis_Chikin 3 665 Опубликовано 23 Августа 2015 Поделиться Опубликовано 23 Августа 2015 "Чтобы не плодить функций IsXXX()?" Как бы, типа того. Не то, что они объявляются совсем прямо вредными, но сначала понять их смысл: какие и сколько надо, и почему именно функции (и еще хуже - "методы", со всеми накладными расходами). Вообще, так вот подумав, что реально надо в повседневной жизни - это чтобы любой объект, имеющий конфиг, имел свойства, прописанные в конфиге. То есть, если мы в конфиге пишем "[неведомая фигня]\nтраляля = блаблабла" - то obj.траляля должно быть == блаблабла. кстати, еще неплохо таки сделать дефайны с инклудами, универсальные и для конфигов, и для скрипов. Это закроет весть вопрос с IsXXX() и прочими _g.ammo = [тыща строк] раз и навсегда. Ссылка на комментарий https://www.amk-team.ru/forum/topic/13126-kurilka-programmistov/page/21/#findComment-959509
Desertir 202 Опубликовано 23 Августа 2015 Поделиться Опубликовано 23 Августа 2015 Короче - рассуждения. А была уже идея сделать одну функцию "проверить тип" с двумя аргументами? Первый - объект, второй - нужный тип. Все типы хранятся в хеш-таблице (аля енум). Не ну а чо. А непосредственно тип вещи пишем в св-во объекта. Хотяяя, как то не логично, вид вещи должен представлять класс. Я бы конечно сделал по ООП, абстракция -> базовый класс -> дочерние классы. В абстрактном классе говорим, что есть метод для проверки объекта, в базовом классе тупая реализация на РАВНО, ну и виртуальным на всякий случай сделать в базовом, чтобы дочерние в случае чего могли переопределить. Дальше по логике это все должно приводиться к уровню абстракции и там вызывается метод. По крайне мере я так ООП представляю PS: а что за негатив к "методам"? Ссылка на комментарий https://www.amk-team.ru/forum/topic/13126-kurilka-programmistov/page/21/#findComment-959546
Zander_driver 10 348 Опубликовано 23 Августа 2015 Поделиться Опубликовано 23 Августа 2015 PS: а что за негатив к "методам"? Ходят слухи что они неприлично много жрут, всего на свете... Хотя мне думается надо проверить. Насколько существенна разница. Ссылка на комментарий https://www.amk-team.ru/forum/topic/13126-kurilka-programmistov/page/21/#findComment-959547
RayTwitty 567 Опубликовано 24 Августа 2015 Поделиться Опубликовано 24 Августа 2015 (изменено) Задача в чем заключается? Чтобы не плодить функций IsXXX()?Насколько я понял, тут еще не все в курсе про smart_cast в движке и что его 3 года назад вытащили в скрипты в проекте Xray Extensions. Все простыни "isWeapon" разом отпали. http://www.amk-team.ru/forum/index.php?showtopic=10339&p=910319 game_object -> Методы для проверки типа объекта -> Регистрация функций в движке Изменено 24 Августа 2015 пользователем Shadows Ссылка на комментарий https://www.amk-team.ru/forum/topic/13126-kurilka-programmistov/page/21/#findComment-959549
Desertir 202 Опубликовано 24 Августа 2015 Поделиться Опубликовано 24 Августа 2015 (изменено) @Zander_driver, начем с того, что в Луа нет методов. На этом можно было бы и закончить, но я проверил тут код ниже. local wpn = { base = "Call me like a " } function wpn:magic(ctype) local call_type = self.base..ctype end local cl = 3000000 local timer = 0 timer = os.clock() for i = 1, cl do wpn:magic("method") end print(os.clock() - timer) timer = os.clock() for i = 1, cl do wpn.magic(wpn, "static method") end print(os.clock() - timer) function magic(self, ctype) local call_type = self.base..ctype end timer = os.clock() for i = 1, cl do magic(wpn, "function") end print(os.clock() - timer) --[[ first time 0.28 0.29 0.27 second time 0.27 0.31 0.28 third time 0.28 0.32 0.3 ]] Не ну функции определенно быстрее. Лол. Изменено 24 Августа 2015 пользователем Desertir 1 1 Ссылка на комментарий https://www.amk-team.ru/forum/topic/13126-kurilka-programmistov/page/21/#findComment-959553
Desertir 202 Опубликовано 24 Августа 2015 Поделиться Опубликовано 24 Августа 2015 (изменено) Кстати про ООП. Интересно и даже по-русски. Хватит уже изображать ворчливого старика)Что ты, я за слово "метод", оно мне нравится, я так сказал потому, что существенной разницы нет. Изменено 24 Августа 2015 пользователем Desertir 1 Ссылка на комментарий https://www.amk-team.ru/forum/topic/13126-kurilka-programmistov/page/21/#findComment-959675
Zander_driver 10 348 Опубликовано 24 Августа 2015 Поделиться Опубликовано 24 Августа 2015 Zander_driver, начем с того, что в Луа нет методов Хватит уже изображать ворчливого старика) Знаю я про своеобразие "Луа-ООП" который как бы не совсем ООП, от слова совсем не. Но это не мешает нам его так называть. Насколько я понял, тут еще не все в курсе про . . . Xray Extensions Вот кстати. Я когда заглядываю в тему X-Ray Ext, то вижу там много вроде бы вкусного, но требующего хитрых танцев с бубном при определенных совпадениях фазы луны, нигде не указанных.Может быть кто-нибудь приведет хотя бы что-то из результатов этого проекта к такому виду, чтобы не стыдно было сюда положить, соблюдая "правила темы" ? Ссылка на комментарий https://www.amk-team.ru/forum/topic/13126-kurilka-programmistov/page/21/#findComment-959704
RayTwitty 567 Опубликовано 24 Августа 2015 Поделиться Опубликовано 24 Августа 2015 Может быть кто-нибудь приведет хотя бы что-то из результатов этого проекта к такому виду, чтобы не стыдно было сюда положить, соблюдая "правила темы" ? Ну а мой пост что, не подходит под эти условия? Ссылка на комментарий https://www.amk-team.ru/forum/topic/13126-kurilka-programmistov/page/21/#findComment-959707
Zander_driver 10 348 Опубликовано 24 Августа 2015 Поделиться Опубликовано 24 Августа 2015 Нет, не подходит. Много описания вкусностей "смотрите что у нас есть", но нет самих вкусностей. Где готовый собранный файл, который можно положить в папку и пользоваться без шаманских плясок? Не вижу. Ссылка на комментарий https://www.amk-team.ru/forum/topic/13126-kurilka-programmistov/page/21/#findComment-959711
RayTwitty 567 Опубликовано 24 Августа 2015 Поделиться Опубликовано 24 Августа 2015 (изменено) @Zander_driver, http://rghost.ru/private/7RK6xBwXb/648fb32a73b3e30b2879a8630f0886dc Дефолтная конфигурация, не требующая никаких скриптовых добавок (вроде все отключил). Изменено 24 Августа 2015 пользователем Shadows 1 Ссылка на комментарий https://www.amk-team.ru/forum/topic/13126-kurilka-programmistov/page/21/#findComment-959714
Dennis_Chikin 3 665 Опубликовано 24 Августа 2015 Поделиться Опубликовано 24 Августа 2015 (изменено) 2 Desertir: а теперь то же самое, например, со string.* vs. :*строковыми. И, видимо, имеет значение, сколько и каких аргументов передается, а также использование переменных "внутри" (сколько и откуда). Изменено 24 Августа 2015 пользователем Dennis_Chikin Ссылка на комментарий https://www.amk-team.ru/forum/topic/13126-kurilka-programmistov/page/21/#findComment-959719
TIGER_VLAD 361 Опубликовано 24 Августа 2015 Поделиться Опубликовано 24 Августа 2015 , Можешь скинуть уже готовый SVN_portable_r230 для самостоятельной сборки dll ? Tortoise не работает у меня. 1 Ссылка на комментарий https://www.amk-team.ru/forum/topic/13126-kurilka-programmistov/page/21/#findComment-959720
RayTwitty 567 Опубликовано 24 Августа 2015 Поделиться Опубликовано 24 Августа 2015 (изменено) @TIGER_VLAD, это тебе к Макрону... Тем более он собирался как раз. Изменено 24 Августа 2015 пользователем Shadows 1 Ссылка на комментарий https://www.amk-team.ru/forum/topic/13126-kurilka-programmistov/page/21/#findComment-959721
TIGER_VLAD 361 Опубликовано 24 Августа 2015 Поделиться Опубликовано 24 Августа 2015 , Ок, подождем)) Ссылка на комментарий https://www.amk-team.ru/forum/topic/13126-kurilka-programmistov/page/21/#findComment-959723
Zander_driver 10 348 Опубликовано 24 Августа 2015 Поделиться Опубликовано 24 Августа 2015 2 Desertir: а теперь то же самое, например, со string.* vs. :*строковыми. И, видимо, имеет значение, сколько и каких аргументов передается, а также использование переменных "внутри" (сколько и откуда). Давайте мы при прочих равных факторах, обозначим список "подозреваемых причин" А затем проведем исчерпывающий тест. А то эти страшные мифы про то что ООП-код работает в 80 раз медленнее чем состоящий только из прямого вызова функций, уже конкретно достали. , Я так понимаю, с расширением Луа от RvP - не совместимо? Ссылка на комментарий https://www.amk-team.ru/forum/topic/13126-kurilka-programmistov/page/21/#findComment-959724
Desertir 202 Опубликовано 24 Августа 2015 Поделиться Опубликовано 24 Августа 2015 (изменено) @Dennis_Chikin, тот же сайт, тот же код, жмакал кнопку Run 3 раза. local cl = 3000000 local timer = 0 timer = os.clock() for i = 1, cl do local wpn = "wpn123" local s = wpn:gsub("123", "ABC") end print("method "..(os.clock() - timer)) timer = os.clock() for i = 1, cl do local wpn = "wpn123" local s = string.gsub(wpn, "123", "ABC") end print("function "..(os.clock() - timer)) method 0.4 function 0.45 method 0.41 function 0.44 method 0.4 function 0.43 На движке Сталкера не измеряю принципиально, т.к. там может быть всё, что угодно. Привык использовать то, что доступно сейчас, а не 10 лет назад. Еще не надоело думать о наносекундах? Давайте мы при прочих равных факторах, обозначим список "подозреваемых причин"Нужный спецы по компилятору Луа, я не в курсе, как он точно разворачивает конструкции obj:method(...) и obj.method(obj, ...). Я вижу два отличия, первое - явно передаваемых аргументов больше на один (как передается неявный self ?) и обращение к глобальному string. Возможно это сказывается на производительности... только не в ту сторону и не на те величины, чтобы на это обращать внимание. Изменено 24 Августа 2015 пользователем Desertir Ссылка на комментарий https://www.amk-team.ru/forum/topic/13126-kurilka-programmistov/page/21/#findComment-959726
Zander_driver 10 348 Опубликовано 24 Августа 2015 Поделиться Опубликовано 24 Августа 2015 На движке Сталкера не измеряю принципиально, т.к. там может быть всё, что угодно. Привык использовать то, что доступно сейчас, а не 10 лет назад. Если учитывать тот факт, что обсуждаемые на этом форуме вещи часто сопряжены с практическим применением чего-либо именно на движке сталкера, то такой подход я бы не назвал верным... Ссылка на комментарий https://www.amk-team.ru/forum/topic/13126-kurilka-programmistov/page/21/#findComment-959731
Desertir 202 Опубликовано 24 Августа 2015 Поделиться Опубликовано 24 Августа 2015 (изменено) @Zander_driver, а я нет, ибо исходники в доступе, актуальные версии чего либо подключить возможно. Правда никто не говорит, что это просто. Под шумок дополню. Я предоставил несколько кода и чуть чуть цифр, я не агитирую никого использовать методы или функции. Мне это без разницы, но ради спортивного интереса сделал. Я не считаю, что это обсуждение вообще достойно внимания, разница незначительна. По мне так есть более интересные задачи, вон в ковырялке двигла с транспортом разбираются, занятная вещь. Изменено 24 Августа 2015 пользователем Desertir Ссылка на комментарий https://www.amk-team.ru/forum/topic/13126-kurilka-programmistov/page/21/#findComment-959732
Zander_driver 10 348 Опубликовано 24 Августа 2015 Поделиться Опубликовано 24 Августа 2015 ладно убедил Ссылка на комментарий https://www.amk-team.ru/forum/topic/13126-kurilka-programmistov/page/21/#findComment-959733
Рекомендуемые сообщения
Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий
Комментарии могут оставлять только зарегистрированные пользователи
Создать аккаунт
Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!
Зарегистрировать новый аккаунтВойти
Есть аккаунт? Войти.
Войти