Перейти к контенту

Язык Lua. Общие вопросы программирования


Рекомендуемые сообщения

С чего начинать и где взять.

 

Установка Lua:
http://www.amk-team.ru/forum/index.php?showtopic=11584&p=629106

 

Руководство «Программирование на языке Lua», третье издание:
http://www.amk-team.ru/forum/index.php?showtopic=11584&p=905308

Изменено пользователем Kirgudu
Ссылка на комментарий
Надо знать ООП, а это уже явно выходит не только за пределы топика, но и форума

Не согласен. Как раз топик для того и создан, чтобы узнавать что-то новое о Lua.

Почему бы тут не делиться знаниями?

Мне иногда гораздо проще и конструктивнее сделать что-то на базе классов.

И созданных в самом 5.1.4 Без всякого luabind.

 

Ссылка на комментарий

ООП не относится к ЛУА. Это общая парадигма. Ее не расскажешь в двух словах и не научишь за 10 минут. Максимум, чему можно научить в пределах топика - базовым принципам использования готового кода с использованием готовых классов, кем-то написанных.

 

И созданных в самом 5.1.4 Без всякого luabind.

А смысл извращаться? В ЛУА нет классов как таковых. Все имитируется с помощью метатаблиц. Луабинд это делает автоматически и предоставляет соответствующий функционал, благодаря чему праздник в дом приходит в ЛУА появляется удобный инструмент для использования ООП - классы и объекты этих классов. Описывать, как реализовать подобное вручную метатаблицами - нет ни желания, ни необходимых знаний.

Все, кто стоит на моем пути: идите нахрен и там погибните! ©

Ссылка на комментарий
А смысл извращаться?

Не знаю кому как, а мне лишняя тренировка в создании метатаблиц, методов и т.д. никогда не помешает.

Да и просто люблю это дело.

Конечно я понимаю что тот же luabind уже создан для... А как же искуство?

Хорошо, делайте кому как хочется... А я уж буду по старинке...

нет ни желания
Так ведь кому нужно - спросит, кто захочет - ответит. Насильно никто, никого, ни к чему не принуждает.
ни необходимых знаний
Читал топик потихоньку. Не хотел говорить, но всё же... Как-то странно, что программисты такого уровня не знали о тех же замыканиях...

Ещё раз повторю, - "А не для того ли топик, чтобы находить эти знания?".

Прошу прощения за то, что "насорил". Удаляюсь.

Изменено пользователем Gun12
Ссылка на комментарий
Конечно я понимаю что тот же luabind уже создан для... А как же искуство?

Искусство ради искусства? :) Я ничего против не имею. Только с этим вопросом (имитациия классов через метатаблицы) точно не ко мне. Я не настолько "продвинута" в этом вопросе. Да и сочинять велосипед не очень хочется :)

Насильно никто, никого, ни к чему не принуждает.

Будем считать, что это был мой ответ на твой вопрос. Только мой.

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

Программисты знают в первую очередь то, что используют. Я, например, про замыкания знаю и вовсю их использую, потому что в работе нужны. Метатаблицы ЛУА я знаю, и даже не в теории. Но повторять то, что сделано просто классно и офигительно - никогда не было желания. Ибо, скорее всего, я сделаю хуже и менее производительно.

Ещё раз повторю, - "А не для того ли топик, чтобы находить эти знания?".

Так а разве нет? Нового ты не прочитал / не обнаружил на последних страницах? Этот топик читает очень мало людей, еще меньше что-то пишет. И уровень, в основном, так сказать, повышенной сложности. А если еще вспомнить предыдущие прения (где я настаивала на нововведениях, а Артос тут же пресекал тем, что это "чисто академические" вещи и использовать их нет смысла), то как-то грустно становится. Ты говоришь, что кому нужно, тот спросит? А где этот кто-то? Вот я что-то не наблюдаю. Может ты что-то спросишь? Поучавствуй в обсуждении.

Хорошо, делайте кому как хочется... А я уж буду по старинке...

Посижу в сторонке? Займусь велосипедами? :)

Все, кто стоит на моем пути: идите нахрен и там погибните! ©

Ссылка на комментарий
Посижу в сторонке? Займусь велосипедами?
А это дело может пойти во вред?:)

Я видать ещё на очень низкой ступени развития.

ОК. Как я обещал - чуть позже - выложу таймеры. Я их создал именно с помощью метатаблиц со всеми сопуствующими... Просто ради души... Кому нужно "переведут" на luabind.

Ещё раз простите. Хватит голословности. Буду ждать окончания праздника.

 

Добавлено через 14 мин.:

Ой. Очень нужно добавить.

что это "чисто академические" вещи и использовать их нет смысла
Тут я полностью поддерживаю точку зрения "модулей". Как говорят, - "Не нужно плодить сущностей". Для этого конечно нужен как минимум средний уровень знаний (того же Lua). Ведь это уже ООП.
Ссылка на комментарий

xStream, ну зачем же передергивать ...? Может быть мои слова читались несколько двузначно, но вкладываемый в них мною смысл был схож с тем, о чем говорит Gun12.

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

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

 

И в чем плохо занятие искусством ради искусства? Для меня (да и ты вроде как разделяешь данный подход) моддинг - это хобби, т.е. трата времени/сил собственно не обязательно ради создания чего-то, а и просто отдохнуть или дать зарядку мозгам ...

Максимум, чему можно научить в пределах топика - базовым принципам использования готового кода с использованием готовых классов, кем-то написанных
Но, все же, хотя раздел и носит название "Школа ...", но это не школа с учителями и учениками! ИМХО, тут мы все и учим и учимСЯ, т.е. даже обучая кого-то, делясь знаниями/навыками - подспудно оттачиваем и свои навыки/знания и ничего не мешает, получив порцию знаний, продолжить самостоятельно копать в этом направлении, набираясь уже не только базовых знаний.

 

Согласен, что все наши слова/ответы - это только наше видение/мнение. Но никто же и не заставляет насильно делиться знаниями и, начав о чем-то - в обязательном порядке продолжать. Вполне начать может кто-то и если ему надоело (разинтереснилось) - это может продолжить другой/другие. Если затронутая тема интересна НЕ одному/двум - то почему бы и ради "чистого исскуства" над ней не покумекать? :-)

Ну а кто-то и продолжая "изобретать велосипед" - все же и познает собственно что-же такое велосипед и глядишь ... мопед изобретет. ;-)

 

Добавлено через 3 мин.:

Gun12, хотел бы попросить выслать твои наработки по таймерам, т.к. этим вопросом занялся довольно глубоко и ... любая информации была бы полезна.

"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени

Ссылка на комментарий

Ув. Artos, я не передергиваю. Все к тому и пришло: "есть два мнения, мое и неправильное". Не хочу дальше эту тему развивать.

А все остальное - слова, много слов. Не осилила прочитать, не обессудь :)

 

ЗЫ Пойду лучше оливье доедать.

Изменено пользователем xStream

Все, кто стоит на моем пути: идите нахрен и там погибните! ©

Ссылка на комментарий

xStream, много буковок не только же для прочтения тобою понаписаны ... ;-)

(плз. не коверкать по-возможности мой ник)

P.S. и, конечно же, приятного аппетита за оливье и хорошего настроения на эти и последующие дни!

Изменено пользователем Artos

"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени

Ссылка на комментарий

Хорошо, исправлюсь. А много буковок тут и читать-то особо некому :) Тем более, что их ты написал в ответ на мой пост. Не прокатила отмазка.

ЗЫ спасибо. Тебе желаю того же.

Все, кто стоит на моем пути: идите нахрен и там погибните! ©

Ссылка на комментарий

Согласен с Gun12:

Не знаю кому как, а мне лишняя тренировка в создании метатаблиц, методов и т.д. никогда не помешает.
...

К тому же, как только я покопался в скриптах написаных Refresh-ом, для АМК 2.0, мне сразу понравилось как выглядят скрипты, как-то меньше "хлама", и "приятней" на глаз, да и лишняя практика еще никому не мешала... Ведь рано или поздно, скорей всего, что именно такой вид написания скриптов/схем может пригодиться, пусть даже не в моддинге...

 

И поддерживаю Artos, особенно с:

Ну а кто-то и продолжая "изобретать велосипед" - все же и познает собственно что-же такое велосипед и глядишь ... мопед изобретет. ;-)

 

:offtopic:

З.Ы. Artos и xStream, спасибо вам больше за придуманные и написанные вами схемы/скрипты, ибо именно по ним начинал открывать для себя LUA. Особенно хочу отметить мое постоянное поражение, как Artos умудрился совместить столько модов и скриптовых фитч в одну модификацию... Причем, что багов почти нет, а если и случаются, то они не критичные, да и если надо посмотреть пример какой-то схемы, то лучше чем примеры модулей из SIMBION`a просто не найти... ;). Это единственная солянка(не в обиду сказано), которую я люблю(касается только мода))) и уважаю, вместе с ее автором...

Изменено пользователем Viнt@rь
Ссылка на комментарий

Viнt@rь,

спаcибо за отзыв по моду. Ну и, в контексте топика, позволю себе дать небольшое пояснение:

1. "Солянка" - все же термин, который может выражать и суть (кратко: сборник из различных источников) и форму/качество (ругательно: мешанина из всякой всячины).

SIMBION был (времена ABC+AMR+SRP+...) в полном смысле первой "глобальной" солянкой (и по сути и по форме). После него пошли и иные моды-солянки, но ... (см. п.2).

2. Можно коды собрать в нечто единое (солянку) по разному:

а) Просто совместив коды, избежав синтаксических и логических ошибок;

б) Интегрировать коды, т.е. помимо просто совмещения, совмещаемые коды привести к некоей единой концепции/сюжету.

Тут ранее говорилось, что проще в каждом содуле/скрипте оставлять по нескольку однотипных строк/проверок/функций ... Моя же позиция в этом несколько иная: если кол-во таких дублирующих друг друга кодов превышает некий предел или даже порой просто дублируют - вынести это в единое место (в центральный модуль).

Если в совмещаемых кодах однотипное выполнено различными способами - выбрать из них наиболее оптимальный и остальное переписать по аналогии (иначе: объединить множество разнотипных аналогичных сущностей/методов/функций в единые).

и т.д.

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

К сожалению, давно многие научились грамотно совмещать, но ... лень/нежелание тратить время на "чужие" коды, вникая в них и исправляя/дополняя/оптимизируя, так и оставляют моды на уровне "солянки" по форме, а не по сути. Ну а различный "почерк" исходных кодов делает и плохо читаемым и соответственно понимаемым "соляночный код" и только усложняет поиск и исправление ошибок.

 

Изменено пользователем Artos

"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени

Ссылка на комментарий

Читаю топик и давно хотел спросить, xStream ты постоянно ругаешь LUA-вский метод создания классов через luabind, а собственно почему он плох и какие ограничения накладывает, и в чём его отличия от классических классов, которые делают его ущербным?

Изменено пользователем *Shoker*

Можно просто Shoker, форум АМК съел моё старое имя и не хочет отдавать о_О

Мастер аномалий на свою заднюю точку.

Ссылка на комментарий

Я ругаю? Где? O_o

Я его наоборот использую вовсю и всем остальным советую (кто знает как использовать). Ты, видимо, что-то не так понял. :) Я ругаю то, как это используют. Вон, хвалят АМК 2.0 за "приятность для глаз". А по сути хлам как был, так и остался. Просто оно все аккуратнее смотрится из-за организации в виде классов. Но по сути это все то же процедурное программирование. Скажем так - забивание микроскопом гвоздей, использование не по назначению.

Просто подобный подход я видела не в одном языке и руки бы поотрывала а такое. Не знаете ООП - не трогайте классы.

Все, кто стоит на моем пути: идите нахрен и там погибните! ©

Ссылка на комментарий

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

xStream, ну ведь есть же пословица: "Не боги горшки обжигают.", зачем же так резко: "Не знаете ООП - не трогайте классы".

Понимаю отношение профессионала к теме, которая ему близка и дорога и в которую суют нос неумехи и/или недотепы ... Но посмотри, плз, на заголовок раздела ("Школа ..."), ведь без "трогания" не изучишь ни ООП ни иное даже полегче чего. Более 90% всех модмейкеров (позволю себе всех кто хотя бы как то серьезно ковырять коды игры) не знали (а многие и этого не знают) далее чем lua_help.

С твоим подходом - остается всем не профессионалам только конфиги ковырять да текстуры перекрашивать или садиться "за парту" и грызть теорию программирования. ;-(

Однако все начинается с малого, с неумелых шагов, неудачных использований (даже "за партой"). Кто-то так и будет забивать гвозди микроскопом, но ведь кто-то и может иначе его применить ... и может даже по назначению. ;-) Был бы инструмент - а применение ему найдется.

xStream: Вон, хвалят АМК 2.0 за "приятность для глаз". А по сути хлам как был, так и остался ...
Порою тоже за собою замечаю резкость в оценках и нетерпимость к кривому коду, но все же вот так давать нелицеприятную оценку труду других и не лично авторам кода - все же перебор (ИМХО). Все познается в сравнении, и то, что для тебя хлам, для многих (и не только начинающих) является достаточно неплохим примером и стимулом ровняться хотя бы на это.

Понимаю, что это твой ответ на тебе лично адресованный вопрос, но топик все же публичный и не так уж малочитаемый, как ты считаешь. 12.000 просмотров за тройку месяцев - не такой уж плохой показатель для подобного топика в "школе". Порою (ИМХО) подобные оценки отбивают желание заниматься "не своим делом" не только у тех, кому собственно дается подобная оценка.

Эх ...

 

Изменено пользователем Artos

"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени

Ссылка на комментарий

Artos, оффтопить, так офтопить...

Вот поддержу всеми конечностями. Когда скрипты той же НС всего-лишь после поверхностного касания худеют на четверть - это пол беды.

Даже месиво из того, что вчера разбирали (и даже если половина не работает) - тоже еще на так страшно по сравнению с гораздо худшим.

 

Во-первых, оно совмещалось вообще не думая. Например, могут быть подряд несколько попыток удалить один и тот же объект, разумеется, без проверки на его существование. Ну, заспавнено аддоном xStream аптечка, ну удаляется она по уходу непися в офлайн. Ну, нормально. Но так там еще 3 штуки таких, которые тоже удаляют. Причем существование аптечки запомнено еще при netspawn. Ага. Вот так вот прямо в виде серверного объекта... Результат понятен. Ну а что происходит потом с оффлайн_алайфом... В который тоже кусков понапихали. Этот и сам один и тот же предмет в цикле может пытаться удалять.

 

И ведь что-то поправить - надо перелопатить 2 десятка скриптов. А потом перекомпилируется олспавн, и снова лопатим скрипты, вбивая в них руками изменившиеся координаты и номера... Тоже по 2-м десяткам.

НУ и бесконечные простыни if ... elseif .... end'а не видно...

Бесконечные сканирования for i = 1, 65535 do obj = level.object_by_id(i) ... по нескольку штук в одном апдейте. iterate_inventory() туда-же...

 

Что до ООП и lua, то в данном конкретном случае вызовы вида obj:method() получились весьма неторопливыми, скажем так. И стремление все-все построить в виде якобы объектов оказывается крайне неполезным, если сравнить с результатом разворачивания этого творчества в самые обыкновенные функции.

 

Upd: просто некоторые инструменты могут быть опасны. Особенно, используемые по принципу "а по тому, что все так делают". К ООП это вполне относится.

 

Изменено пользователем Dennis_Chikin
Ссылка на комментарий

Dennis_Chikin, наверное xStream более резко возразит или даст оценку потугам разработчиков игры, я же пока дам реплику:

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

"Полезность" - все же понятие относительное.

 

Ну а про код упомянутого тобою мода не поддержу тему

, для меня это из уже закрытой категории:

"

о покойниках или хорошо или ничего" - это о кодах/моде, а не о чем-то ином.

(сейчас мне кто-то врежет за такую, хотя и косвенную и личную, "оценку")

... хотя шанс разубедить у них все же есть.

 

Изменено пользователем Artos

"Но иногда найдется вдруг чудак, этот чудак все сделает не так ..."© Машина времени

Ссылка на комментарий

Я не буду ни возражать, ни давать оценку.

На вкус и цвет фломастеры разные.

Скажу только одно. Про скорость и "а по тому, что все так делают". Всякие "оптимизации на скорость" и "неторопливые вызовы" это смех. Ребята, не занимайтесь фигней. Оптимизировать надо тогда, когда появляются боттлнеки, а абстрактно рассуждать о скорости - глупо.

Что касается второго, то вот все и делают на функциях все свои потроха для модов, убер быстро, ага. Не надо присваивать свое видение другим.

Итог: ООП - это удобная иерархическая архитектура. Позволяет инкапсулировать данные, заниматься рефлексией и наследованием. Не надо говорить, что это уберкруто или уберплохо. Надо знать, когда использовать и что использовать, выбирать инструмент исходя из задачи, а не в теоретическом ключе, сравнивая такты процессора, затраченные на то или иное. Если вы не можете оперировать разными категориями инструментов - это ваши проблемы. Я могу и оперирую, и классами и функциями, и разными методиками хранения данных. Но я могу выбирать, а вы, судя по всему - нет. (последнее высказывание в первую очередь адресовано Dennis_Chikin)

 

Добавлено через 1 мин.:

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

 

ЗЫ Ув. Artos, как бы то ни было, я имею полное право давать категоричную оценку тому, что было написано мной, не так ли? :) А код АМК и его последователя (и других модов, использующих куски АМК) в конкретном случае на очень неслабую часть - мой, спорить, надеюсь, не будем (моежете мне приписать огромное ЧСВ, если хотите)? Методики, использованые там, заложены Red75, sokol_jack и мной. Причем, скорее, в разных сферах и направленностях. Поэтому, я вполне в состоянии критически оценить и эффективность самих методик и их реализаций. Методики, подчеркиваю, и код для их реализации, остался по сути неизменным с тех времен по большей части. Хоть как перекомпонуйте, оберните в псевдо-классы, переназовите переменные и т.п. - суть остается той же.

Изменено пользователем xStream

Все, кто стоит на моем пути: идите нахрен и там погибните! ©

Ссылка на комментарий

kamikazze

Мы не NLC делаем, которое не мод, а арт-объект, который нельзя трогать, в который ни в коем случае нельзя играть, потому что это искусство - им надо любоваться, восхищаясь замыслом и видением художников.

Нельзя так категорично, играть можно и трогать при настойчивости тоже можно. Нравится искать соринку в чужом глазу, покритикуйте технические детали на примерах. Скажем тот-же биндер, вы мастер оптимизации наверное заметили там жуткие тормоза ) В целом доработка его с моей стороны закончилась на этапе... замедления количества циклов:

elps = ElapsedTime(9) 
if elps < 19 then
    SleepEx( 20 - elps )
end

Потому что даже на современных системах графика вылезает за 100FPS, что пропорционально связано с количеством вызовов update. А стремиться к таким запредельным показателям производительности нет смысла, ибо все это обходится недешево - греются комплектующие, шум раздражающий и т.п. Изредка возникают на самом деле потребности в больших расчетах, но на этот счет я веду разработку в пользу использования многоядерности ЦП.

Изменено пользователем alpet

Плавайте поездами аэрофлота!

Ссылка на комментарий

Мой пост был адресован не только xStream...

Что касается:

... Я ругаю то, как это используют. Вон, хвалят АМК 2.0 за "приятность для глаз". А по сути хлам как был, так и остался. Просто оно все аккуратнее смотрится из-за организации в виде классов. Но по сути это все то же процедурное программирование. Скажем так - забивание микроскопом гвоздей, использование не по назначению.

Просто подобный подход я видела не в одном языке и руки бы поотрывала а такое. Не знаете ООП - не трогайте классы.

1. Вы ведь сами говорили что в LUA скриптах сталкера некогда небыло ООП

2. За что руки то отрывать? Если в данном случае, по вашим же словам, организовывание функций в классы, ни на что не влияет ;)

Лично мне нравится то, что организовывание функций в классы, делает код внутри скрипта "приятней и красивей"(ИМХО), собственно потому и спрашивал, влияет ли это на что-то...

Ссылка на комментарий

1) Не было, за исключением биндеров и всяких ГУИ - там наследование и там оправданное использование. Никто в модах ООП не пользовал в том понимании, какое заложено парадигмой.

2) А что мешает писать аккуратный код и без этого, скажите мне? Каждый файл в сталкере - отдельный модуль, вот вам и неймспейс, там же локальные переменные. По сути, когда обворачивают в класс, получается аж две обертки для процедурного кода. Зачем? Красивый и читабельный код можно писать и без классов. Тем более, что в данном конкретном случае это использование не по назначению.

Все, кто стоит на моем пути: идите нахрен и там погибните! ©

Ссылка на комментарий

Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий

Комментарии могут оставлять только зарегистрированные пользователи

Создать аккаунт

Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!

Зарегистрировать новый аккаунт

Войти

Есть аккаунт? Войти.

Войти
  • Недавно просматривали   0 пользователей

    • Ни один зарегистрированный пользователь не просматривает эту страницу.
×
×
  • Создать...