GTA-Multiplayer.com Posted September 17, 2014 Share Posted September 17, 2014 fabervox, да я ни коим образом не против библиотек) Просто пытался объяснить GTA-Multiplayer.com что речь шла о встроенной в мта реализации классов, а не о том что это можно реализовать самому средствами луа. А на свой первоначальный вопрос, заданный в первом посте, я ответ получил. Теперь найти бы нормальную библиотеку, самому делать в лом, да и времени нет особо… Реализация классов (вернее ее имитация) легко делается средствами Lua. Без библиотек. Таблицами или с использованием метатаблиц. Можно использовать библиотеки, которые отдельно занимаются этой задачей - окей, ну если уж действительно так хочется. Но включать костыль с сомнительной необходимостью в МТА?... Впрочем, предложить разработчикам можно, другое дело какие шансы возьмут ли в работу. Кстати, кто-нибудь это им предлагал на bugs.mtasa.com? Я не нашел такого тикета. Link to comment
Fabervox Posted September 17, 2014 Share Posted September 17, 2014 Реализация классов (вернее ее имитация) легко делается средствами Lua. Без библиотек. Таблицами или с использованием метатаблиц. Де-факто, эта реализация и будет библиотекой. А уж будет реализация в виде Lua-модуля, или же в виде модуля MTA, только скорее всего решит набор возможностей. Только вот как быть во втором случае, с клиентскими скриптами, они конечно же будут ограничены в чем-то, и в целом потребуется генерация автономного Lua-кода, независимого от самой библиотеки, в этом и заключается костыль, а заодно и определенные ограничения. Библиотека написанная в самой Lua, не была бы костылем, если бы можно было все что угодно реализовать, и это не сказывалось ни появлением ошибок, ни производительностью. Мне это не очень и надо пока-что, но тем не менее, глядя на нормальные обзоры реализаций ООП в Lua, я как-то не нашел ни одного без каких-либо "но", и мне кажется странным что у вас все получается без этих "но". При этом показать есть ли они в вашем варианте или нет, вы не хотите, человеку, которому сразу написали что он неправ. По причине того что времени нет(?). Разве вы не понимали, что выложить картинку файловой структуры, которая вовсе не факт что целесообразна только для ООП, и дать какой-то пример двух принципов, будет недостаточно, потому-что мало кто поверит, в идеальную реализацию без оговорок. И разве когда времени нет, вступают в спор без причины? Вы говорите что костыли не нужны, но стали бы делать "ООП-стиль" если бы это никому не нужно было? Я думаю что реализация ООП в Lua-MTA дело не скорое, т.к. видимо сообщество пока не так уж заражено этим(наверно). Link to comment
Arisu Posted October 7, 2014 Share Posted October 7, 2014 Создание своих классов не предусмотрено. То что сделали в МТА очень сложно назвать "ООП". То что вызов происходит через точку\двоеточие не значит, что это ООП.Всё что и добавили в МТА - это всего лишь регистры для Lua позволяющие обращаться к userdata как к таблицам, т.е. вызов методов и доступ к членам. Больше ничего. В ООП как минимум должно быть Наследование, Полиморфизм хотя бы. В идеале конечно бы и Инкапсуляция ещё. Предусмотрено. При помощи метатаблиц, как и сами классы в Lua. Это единственный способ, потому что язык не имеет ООП как такового, но даже при помощи метатаблиц это получается почти полноценное ООП. Обращение через двоеточие - доступ к полям и методам объекта. Полиморфизм ест. Контроль доступа возлагается на плечи программиста. Наследование - пожалуйста, вот наследование. Не можешь изучить основные принципы используемого языка, и требуешь то, что уже есть? То о чём ты сейчас сказал - это всё касается лишь C++, т.е. то на чём это всё реализовано. Конечно вы это реализовали всё красиво со всеми принципами ООП, как положено - да не спорю, вам удобно, вам хорошо. А что на выходе имеем мы? Только лишь доступ к членам (и то чтобы добавить свои - надо ковырять регистры Lua). На мета-таблицах это все реализовано, которые аккуратно сложены в _G. Бери и модифицируй как хочешь прямо в рантайме, в пределах вм целого ресурса. Говоря о Наследовании, Полиморфизме и Инкапсуляции - имелось ввиду в самой Lua. ООП должно быть у нас внутри. А то что вы реализовали ООП на уровне ООП у себя - не говорит ничего. У вас весь МТА на ООП - и что? См. выше. Дайте нам возможность создания собственных классов, со всеми выше указанными фишками (наследование и полиморфизм). См. выше. В идеале я себе представлял что-то вроде этого: Возьми и реализуй такой класс, ссылку выше я дал, поля onStart, onStop реализуешь, можешь даже в виде таблиц как в твоем любимом C#, оператор сложения в Lua перегружается тоже. Естественно без помощи сторонних библиотек, всё должно быть на уровне самой MTA. Имитация ООП в Lua делается без библиотек, через пару строк и метатаблицы. Достаточно изучить используемый язык. Так что, см. выше. Link to comment
Kernell Posted October 7, 2014 Share Posted October 7, 2014 Может быть вы наконец научитесь читать? Если кто не понял, под "библиотекой" подразумевалась библиотека написанная на самой Lua. Не Вам мне объяснять как реализовать классы в Lua посредством самого языка. Я уже всё в этой теме объяснил, видимо Вы не достаточно понимаете о чём здесь идёт речь. Link to comment
Arisu Posted October 7, 2014 Share Posted October 7, 2014 Библиотека на самой Lua? Ну пожалуйста, Lua определяет метатаблицы и метаметоды, это и есть библиотека для создания собственных классов. Что-то еще? Напишите свой враппер для этих функций, чтобы было "красивенько" и однострочно. Может, вы имели ввиду создание новых сущностей в игре? Нет, за этим точно не в луа идти нужно, и, надеюсь, зеленый ник вам это позволяет осознавать. А вот общаться в такой манере, как Не Вам мне объяснять как реализовать классы в Lua посредством самого языка. точно не дает, тем более что вы сами начали дискуссию на эту тему, в результате которой вам несколько людей указали на вашу неправоту. Это дает повод усомниться в вашей компетенции, и традиционным, благонамеренным решением считается послать человека изучать документацию до тех пор, пока он эту компетенцию не обретет. Link to comment
Kenix Posted October 7, 2014 Share Posted October 7, 2014 Grell, ты ничего не уяснил из предыдущих постов. Судя по твоей логике, зачем вообще мташники добавили псевдо ооп, если есть мета таблицы и можем самим сделать? Мы же предлагаем сделать это все в самой mta, расширить существующие возможности Например создать функцию class и добавить ей функционала. Link to comment
Kernell Posted October 7, 2014 Share Posted October 7, 2014 Библиотека на самой Lua? Ну пожалуйста, Lua определяет метатаблицы и метаметоды, это и есть библиотека для создания собственных классов. Что-то еще? Напишите свой враппер для этих функций, чтобы было "красивенько" и однострочно.Может, вы имели ввиду создание новых сущностей в игре? Нет, за этим точно не в луа идти нужно, и, надеюсь, зеленый ник вам это позволяет осознавать. А вот общаться в такой манере, как Не Вам мне объяснять как реализовать классы в Lua посредством самого языка. точно не дает, тем более что вы сами начали дискуссию на эту тему, в результате которой вам несколько людей указали на вашу неправоту. Это дает повод усомниться в вашей компетенции, и традиционным, благонамеренным решением считается послать человека изучать документацию до тех пор, пока он эту компетенцию не обретет. Эти несколько людей так и не смогли ответить на вопрос ТС ибо не понимают что требуется, но вместо этого пытаются доказать всем и без этого очевидные вещи. Тем же самым и Вы занимаетесь. Перечитайте тему с самого начала, и хорошенько вдумайтесь, что требовалось. Так же обратите внимание, то "ООП" которое сейчас реализовано в МТА, можно было бы с таким же успехом реализовать и на самой Lua с помощью тех же метатаблиц. Но об этом вы молчите. Здесь не обсуждается "что можно, а что нельзя", я в своём моде реализовал классы таким образом что даже не надо передавать self, вместо этого скрытно передаётся this и собственно вызов метода происходит через точку. А объявление самого класса почти ничем не отличается от того же C# (за исключением некоторых мелких моментов, но всё равно выглядит очень не плохо). При этом имеется возможность переопределить методы get и set. Естественно это всё давно у меня существует до введения ООП в МТА. Но опять же так возвращаясь к теме - тут не обсуждаются возможности Lua. Вопрос был другой. Более того речь шла о том, чтобы эти механизмы работали на более низком уровне, а не на Lua, в силу производительности и возможности не подключать lua-файлы в каждый ресурс. Но судя по Вашей логике, вам и не нужны те же regexp реализованные на C++ и экспортнутые в Lua, наверное просто потому что не видите разницы. Я так понимаю Вы бы и с удовольствием написали свою библиотеку той же preg на Lua и пользовались бы =) Link to comment
N1kS Posted October 7, 2014 Share Posted October 7, 2014 Kernell, все прекрасно поняли Вас и вашу идею, но вопрос ведь в другом: зачем делать из Lua Lua-C++? Все, о чем Вы сказали реализуемо с помощью метатаблиц(ну в прочем как и сказал другой участник выше). P.S. this реализовал как в плюсах? this->m_Member? Link to comment
Kernell Posted October 8, 2014 Share Posted October 8, 2014 Kernell, все прекрасно поняли Вас и вашу идею, но вопрос ведь в другом: зачем делать из Lua Lua-C++? Все, о чем Вы сказали реализуемо с помощью метатаблиц(ну в прочем как и сказал другой участник выше).P.S. this реализовал как в плюсах? this->m_Member? Интересный вопрос, даже не думал о том чтобы делать из него C++. Моей целью было сделать полноценное ООП которое ничем не будет уступать ООП в других языках, в том же C# например. Более того я люблю Си-подобные языки, и терпеть не могу синтаксис типа бейсика, за что собственно не люблю Lua. Синтаксис я старался делать похожим ради того чтобы было просто привычно, и красиво =) P.S. стрелочку в Lua реализовать не реально, это синтаксическая ошибка. Всё работает через точку, как в C# (хотя и там есть стрелочка). Link to comment
Other Languages Moderators Disinterpreter Posted October 8, 2014 Other Languages Moderators Share Posted October 8, 2014 FAPPALITY BABALITY Link to comment
iAxel Posted November 12, 2014 Share Posted November 12, 2014 Может и тупой вопрос, но как быть с ООП в МТА? использовать то что дано в МТА? или же писать свои? Не давно заглянул в проект Open Dayz Source, правда ничего не понял =) Так вот, что делать? использовать свои? или то что не давно добавили в 1.4 OFFTOP: Есть идея сделать проект но смотря на все ваши проекты, как-то стало обидно и завидно) Link to comment
N1kS Posted November 13, 2014 Share Posted November 13, 2014 Может и тупой вопрос, но как быть с ООП в МТА? использовать то что дано в МТА? или же писать свои?Не давно заглянул в проект Open Dayz Source, правда ничего не понял =) Так вот, что делать? использовать свои? или то что не давно добавили в 1.4 OFFTOP: Есть идея сделать проект но смотря на все ваши проекты, как-то стало обидно и завидно) Почитай: viewtopic.php?f=153&t=57987 viewtopic.php?f=153&t=50134 А по поводу делать свои - не понял. От себя советую использовать библиотеку: https://github.com/sbx320/lua_utils/blo ... asslib.lua Если еще публичная от Kernell'a, но мне эта больше по душе. Link to comment
Kernell Posted November 13, 2014 Share Posted November 13, 2014 А по поводу делать свои - не понял. От себя советую использовать библиотеку: https://github.com/sbx320/lua_utils/blo ... asslib.luaЕсли еще публичная от Kernell'a, но мне эта больше по душе. В ней есть нехороший костыль, который может несколько раз создавать объект. Это как бы не вызовет проблем, но мне например подобные вещи не нравятся. После того как перепишу серверную часть своего проекта на C#, выложу библиотеку которую я написал для него (там много фишек, например скрытая передача this, вызов методов через точку и т.д.) Link to comment
N1kS Posted November 13, 2014 Share Posted November 13, 2014 Мне Либа от тебя тоже нравится, но в публичной нет очень удобной штуки, как есть у sb320 (правда дописать ее - 10 минут). Вызов методов для userdata, ну пример банальный: local pVehicle = createVehicle( ... ) enew( pVehicle, CVehicle, тут можно дописать аргументы в конструктор ) pVehicle:SetColor( ... ) А по поводу this. - это просто дело привычки. self. тоже справляется нормально, тут чисто твой фетиш по поводу С подобных языков. После того как перепишу серверную часть своего проекта на C# Через плагин? Скорость не сильно проседает? Link to comment
Kernell Posted November 14, 2014 Share Posted November 14, 2014 Мне Либа от тебя тоже нравится, но в публичной нет очень удобной штуки, как есть у sb320 (правда дописать ее - 10 минут). Вызов методов для userdata Это есть и в МТАРП (где используется Lua), но это не является частью библиотеки. У меня это в виде отдельного пула который связывает объект класса с нужным элементом. тут чисто твой фетиш по поводу С подобных языков. Вырос и воспитан на Сях, терпеть не могу basic-подобные языки =) Через плагин? Скорость не сильно проседает? Всё по разному. Вызов функций через плагин в любом случае идёт через Lua. Скорость не сильно проседает. А вот моя библиотека Blowfish на C# работает в 3 раза быстрее чем на Lua. Link to comment
TheNormalnij Posted November 14, 2014 Share Posted November 14, 2014 С LuaJIT сравнивалось? Link to comment
GTA-Multiplayer.com Posted November 15, 2014 Share Posted November 15, 2014 Вырос и воспитан на Сях, терпеть не могу basic-подобные языки =) Многими учеными, философами и языковедами, выдвинуто множество концепций связи между языком и мышлением, но всеми ими не оспаривается непосредственная связь между ними. Языки программирования, как и любые другие языки (как например дорожные знаки - тоже язык, пусть и простой), подчиняются этому принципу. Они серьезно связаны с мышлением (mention) человека. В случае с вербальными языками, человек, знающий не один язык, а, например, русский и английский, имеет, как билингв, объективное преимущество перед людьми владеющими единственным языком. Не только мной было замечена твоя "сишность". Без претензий к этому семейству языков, но рассматривать весь многообразный мир программирования с позиции только одного си и его детей, да еще и бравировать этим, по моему мнению, профессинальная стратегическая ошибка. Нужно стать билингвом, мультилингвом, — мир программирования заиграет новыми красками. Go beyond, bro. Link to comment
Kernell Posted November 15, 2014 Share Posted November 15, 2014 Вырос и воспитан на Сях, терпеть не могу basic-подобные языки =) Многими учеными, философами и языковедами, выдвинуто множество концепций связи между языком и мышлением, но всеми ими не оспаривается непосредственная связь между ними. Языки программирования, как и любые другие языки (как например дорожные знаки - тоже язык, пусть и простой), подчиняются этому принципу. Они серьезно связаны с мышлением (mention) человека. В случае с вербальными языками, человек, знающий не один язык, а, например, русский и английский, имеет, как билингв, объективное преимущество перед людьми владеющими единственным языком. Не только мной было замечена твоя "сишность". Без претензий к этому семейству языков, но рассматривать весь многообразный мир программирования с позиции только одного си и его детей, да еще и бравировать этим, по моему мнению, профессинальная стратегическая ошибка. Нужно стать билингвом, мультилингвом, — мир программирования заиграет новыми красками. Go beyond, bro. Ключевая фраза "по моему мнению". Вот именно, что это твоё мнение, поэтому будь добр, оставь его при себе, а не пиши сообщения в стиле "Смотрите какой я умный". У меня так же есть своё мнение по этому поводу, но я не собираюсь кому-то доказывать что-то, тем более в теме где говорится вообще о других вещах (оффтоп). Чего тебе моя сишность? Следи за собой. Или не к кому докопаться? "профессинальная стратегическая ошибка" - как ты умудрился вообще связать эти три слова? Профессионал - от слова профессия, а не от "супер-мега специалист". P.S. В основном заметил, подобные сообщения пишут эдакие диванные эксперты, у которых хватает смелости говорить о профессионализме, но сами они профессионалами в этой области даже близко не являются. С LuaJIT сравнивалось? Ещё нет. Лень собирать проект. Как появится ночная версия - постараюсь уделить время. Link to comment
Other Languages Moderators Disinterpreter Posted November 15, 2014 Other Languages Moderators Share Posted November 15, 2014 Вырос и воспитан на Сях, терпеть не могу basic-подобные языки =) Многими учеными, философами и языковедами, выдвинуто множество концепций связи между языком и мышлением, но всеми ими не оспаривается непосредственная связь между ними. Языки программирования, как и любые другие языки (как например дорожные знаки - тоже язык, пусть и простой), подчиняются этому принципу. Они серьезно связаны с мышлением (mention) человека. В случае с вербальными языками, человек, знающий не один язык, а, например, русский и английский, имеет, как билингв, объективное преимущество перед людьми владеющими единственным языком. Не только мной было замечена твоя "сишность". Без претензий к этому семейству языков, но рассматривать весь многообразный мир программирования с позиции только одного си и его детей, да еще и бравировать этим, по моему мнению, профессинальная стратегическая ошибка. Нужно стать билингвом, мультилингвом, — мир программирования заиграет новыми красками. Go beyond, bro. Но не нужно делать из ЯП непонятного монстра. C-like синтаксис очень удобен и привычен. Например, программисту переходя с Си на другой сиподобный ЯП будет очень удобно и он фактически без проблем начнет сразу кодить то, что ему нужно. Link to comment
Easterdie Posted November 16, 2014 Share Posted November 16, 2014 кернелл, завязывай из себя корчить самого лучшего во всём, один тут уже слетел с модерации после нескольких таких выпадов. правда тогда был вопрос в отношении к пользователям в стиле "я могу всё, а помогать вам не буду, потому что вы тупые", а у тебя "луа говно, потому что это не си". раздражает читать твои говнопосты. Link to comment
Kernell Posted November 16, 2014 Share Posted November 16, 2014 кернелл, завязывай из себя корчить самого лучшего во всём, один тут уже слетел с модерации после нескольких таких выпадов. правда тогда был вопрос в отношении к пользователям в стиле "я могу всё, а помогать вам не буду, потому что вы тупые", а у тебя "луа говно, потому что это не си". раздражает читать твои говнопосты. Заметь он слетел с моей помощью, жертвуя своей модеркой, хотя нужно было это больше всего вам и тебе в том числе. Но речь не об этом, а о том "луа говно, потому что это не си" - пару раз сказал об этом, и то не в этой теме.. И что тут такого? Не нравится - не читай, вместо того чтобы писать оффтоп. Я из себя никого не корчу, мне это не нужно в отличии от тебя. Кому надо тот и так знает кто я и на что способен, таких людей конечно же единицы. Link to comment
Easterdie Posted November 17, 2014 Share Posted November 17, 2014 цитирую основное: "не читай, если не нравится, я не корчу, я один тут такой способный". а теперь давай по пунткам: во-первых: не читай - это как? форум явно не для того, что ты весь такой единичный тут тыкал в то, какой ты умелый и как тебе нравятся сиподобные языки, а для обсуждения луа, мта, гта и всё что с ними связано, и я не собираюсь пропускать твои выпады лишь потому что это написано тобой. найди себе другой форум с аутистами, которые даже читать тебя не будут, потому что ты что-то пишешь и оно не в ходит в рамки их восприятия. могу посоветовать тебе человека даже для такой переписки, всегда вываливает мегабайты текста, но чужие фразы даже не читает: Shaolin. вы одного поля ягодки. во-вторых: от того, что ты умелый весь такой барин и единичный случай, отношения к людям у тебя явно не стало лучше, только больше понтов, аля мх_мастер, который тоже, многое многое может, а с общением с людьми беда. вы тут все никто, а я ромашка. в-третих: про то что луа не такой, как тебе нравятся си у тебя написано в каждом посту за последний месяц. не нравится луа - сгруппировался, прыжок прогнувшись и до встреч. Link to comment
Kernell Posted November 17, 2014 Share Posted November 17, 2014 цитирую основное: "не читай, если не нравится, я не корчу, я один тут такой способный".а теперь давай по пунткам: во-первых: не читай - это как? форум явно не для того, что ты весь такой единичный тут тыкал в то, какой ты умелый и как тебе нравятся сиподобные языки, а для обсуждения луа, мта, гта и всё что с ними связано, и я не собираюсь пропускать твои выпады лишь потому что это написано тобой. найди себе другой форум с аутистами, которые даже читать тебя не будут, потому что ты что-то пишешь и оно не в ходит в рамки их восприятия. могу посоветовать тебе человека даже для такой переписки, всегда вываливает мегабайты текста, но чужие фразы даже не читает: Shaolin. вы одного поля ягодки. во-вторых: от того, что ты умелый весь такой барин и единичный случай, отношения к людям у тебя явно не стало лучше, только больше понтов, аля мх_мастер, который тоже, многое многое может, а с общением с людьми беда. вы тут все никто, а я ромашка. в-третих: про то что луа не такой, как тебе нравятся си у тебя написано в каждом посту за последний месяц. не нравится луа - сгруппировался, прыжок прогнувшись и до встреч. У кого-то конкретно бомбануло Даже я заметил разницу между тем, что было и тем, что имеется сейчас. Раз у меня в каждом сообщении говорится про то, какой не хороший Lua - будь так добр, покажи реальную статистику, иначе получается, Вы у нас п****бол Вообще странное у тебя обо мне мнение сложилось, может быть зависть? Что-то мне подсказывает, что у тебя просто проблемы с самооценкой. А говоря "не нравится - не читай", я тут скорее имел ввиду, просто пройти мимо. Из всей темы в которой говорится про ООП, и из всего сообщения где обсуждалось ООП, а конкретно библиотека классов, ты из всего контекста выделил только то, что я люблю C++ и превратил этот кусок сообщения в некую ненависить. Сравнивать языки - это нормально. А ты сейчас ведёшь себя как холиварщики "Java vs C#", буд-то тут твою религию затронули Link to comment
Easterdie Posted November 17, 2014 Share Posted November 17, 2014 У кого-то конкретно бомбануло я до последнего терпел. тебя неоднократно греллка унижает по некомпетентности. а то шо я сделал назвается зае**ло. Даже я заметил разницу между тем, что было и тем, что имеется сейчас. Раз у меня в каждом сообщении говорится про то, какой не хороший Lua - будь так добр, покажи реальную статистику, иначе получается, Вы у нас п****бол А говоря "не нравится - не читай", я тут скорее имел ввиду Вы у нас п****бол сам себя попустил с небес, сказав одно, поняв иначе, выставив себя дураком, пытаясь тоже самое предъявить мне. увы, мимо кассы, что я хотел сказать было хорошо понято, но обратно под другим соусом подано. Вообще странное у тебя обо мне мнение сложилось, может быть зависть? Что-то мне подсказывает, что у тебя просто проблемы с самооценкой. всегда завидую тем, кто много говорит, но всё никак не может закончить свои проекты, которые обещал... хм, год назад? или больше? Вы напыщенное высокомерие и попытка казаться важным, а как обычно, оказался в жёлтом влажным. Сравнивать языки - это нормально. А ты сейчас ведёшь себя как холиварщики "Java vs C#", буд-то тут твою религию затронули опять весь в жёлтом и влажный, я даже не пытаюсь защищать луа или сравнивать его с другими, я даже не пишу, можно сказать. для меня повесить на пикап стандартный шейдер и сделать передачу бабла по команде - абсолютный предел. зато твоё сишное сравнение и самовосхваление тебя же в си глаза замозолило. удачи дальше разводить холивары луа против си. есть инструмент - пользуйся. руки не подходят - заточи руки, не пеняй на инструмент. Вы у нас п****бол Link to comment
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now