Kernell Posted January 30, 2015 Share Posted January 30, 2015 (edited) Приветствую всех! Так как на форуме эта тема уже затрагивалась ранее (в виде оффтопа, конечно ), думаю самое время создать для этого специальную, дабы не засорять другие. Предлагаю тут обсуждать разные языки программирования, какие вам нравятся\не нравятся, и почему. Пожалуйста, только конструктивную критику. Пожалуй начну первым. И так. Многие наверное уже заметили мою ненависть в сторону Lua (и любым basic-style) и любовь к Си-подобным языкам (чувствую у кое кого опять бомбанёт). Да что уж там, об этом не раз писали и кидались за это в меня камнями .. не будем о грустном, а перейдём сразу к сути. Говоря о Lua, как язык - это очень мощный инструмент и в то же время лёгкий, потре:Oющий мало ресурсов и очень быстрый. Язык достаточно гибкий и простой в изучении (хотя имеет много подводных камней). Вообще меня удивляет тот факт, что скриптеры сампа не могут освоить Lua. Ведь Pawn куда сложнее. Из минусов: отсутствие встроенных классов, отсутствие конструкций switch-case, и нет continue (приходится костылять с помощью unitl и break). Ещё к этому можно добавить утиную типизацию, и то что 0 = true Гибкость языка я могу лишь объяснить недостатком тех самых фишек, которые есть в других языках, таких как JavaScript, PHP. В Lua вы можете создать классы на метатаблицах, причём объявление самих классов можно сделать очень похожими на C++, добавив синтаксический сахар. Но всё это, к сожалению, не нативно. К примеру, взять C#. Язык очень богат функционалом, и самое главное - этот функционал нативный. Такая гибкость как у Lua ему просто не нужна. На форуме я заметил, что по производительности Lua сравнивают с Python, и чуть ли не на ровне. Для меня это показалось очень странным, ведь Python очень медленный язык потре:Oющий ужасное количество памяти (его разве что с Java сравнивать). Скорость выполнения в LuaJIT иногда почти достигает скорость выполнения равную сишному. Python в этом плане медленнее наверное раз в 5. К сожалению не могу предоставить конкретные цифры (говорю лишь из личного опыта), но если у кого-то есть желание сделать замеры производительности, то буду весьма признателен. Edited January 30, 2015 by Guest Link to comment
Elengar Posted January 30, 2015 Share Posted January 30, 2015 Когда я сравнивал Lua с Python, я имел ввиду, что оба достаточно просты и понятны для новичка. Отсутствие switch-case не такое уж и страшное, а вот continue, ссылки и поддержка еще нескольких парадигм ему бы явно не помешала. Link to comment
iAxel Posted January 30, 2015 Share Posted January 30, 2015 Согласен пару функции для Lua не помешает, но вроде же его обновляют или мне так кажись? Link to comment
Elengar Posted January 30, 2015 Share Posted January 30, 2015 Согласен пару функции для Lua не помешает, но вроде же его обновляют или мне так кажись? Обновляют, вот история версий http://www.lua.org/versions.html. Кстати, недавно Lua 5.3 вышел, http://www.lua.org/manual/5.3/readme.html#changes , есть пара интересных фич. Link to comment
Other Languages Moderators Disinterpreter Posted January 30, 2015 Other Languages Moderators Share Posted January 30, 2015 Кстати, недавно Lua 5.3 вышел, http://www.lua.org/manual/5.3/readme.html#changes , есть пара интересных фич. Одна из основных фитч, это введение целого числа. Может кто слышал о Squirrel, AngelScript, GameMonkey? Link to comment
iAxel Posted January 30, 2015 Share Posted January 30, 2015 А в MTA? Последний раз когда обновили версию Lua? Link to comment
Kernell Posted January 30, 2015 Author Share Posted January 30, 2015 Согласен пару функции для Lua не помешает, но вроде же его обновляют или мне так кажись? Lua - да. Но MTA не обновляют Lua. Говорят мол если обновят, то все ресурсы перестанут работать Может кто слышал о Squirrel, AngelScript, GameMonkey? Squirrel и AngelScript я внедрял в МТА (в виде модуля). Squirrel не прижился мне. Не понравилось в нём это: Для создания полей у таблиц нужно использовать специальный оператор <-, таким образом невозможно создать новое поле, случайно ошибившись в имени. Считаю подобные вещи бредом. Что касается AngelScript.. Не вижу в нём смысла, когда есть C# Link to comment
N1kS Posted January 30, 2015 Share Posted January 30, 2015 (edited) Что касается AngelScript.. Не вижу в нём смысла, когда есть C# Если так размышлять - то смысл в любом языке, если есть плюсы и шарп? Если бы на шарпе можно было женится - женился бы? Ты весь форум про свой шарп прожужал, хватит уже может быть? Edited January 30, 2015 by Guest Link to comment
Other Languages Moderators Disinterpreter Posted January 30, 2015 Other Languages Moderators Share Posted January 30, 2015 Не вижу в нём смысла, когда есть C# Если юзать c# в качестве клиента, то придется вырезать половину его функциональности (в целях безопасности). Link to comment
Kernell Posted January 30, 2015 Author Share Posted January 30, 2015 Не вижу в нём смысла, когда есть C# Если юзать c# в качестве клиента, то придется вырезать половину его функциональности (в целях безопасности). Для этого придётся переписать mscorlib и ещё несколько библиотек. Но оно того стоит. Конечно же речь о mono. Link to comment
iAxel Posted January 30, 2015 Share Posted January 30, 2015 Я бы не против кроме Lua ввести и другой язык, ну как в Unity 3D поддержка других языков Link to comment
obuhhh Posted January 30, 2015 Share Posted January 30, 2015 (edited) Я бы не против кроме Lua ввести и другой язык, ну как в Unity 3D поддержка других языков Много мороки. Да и смысла нет. Юнити это целый движок для игр. На нем пишут самые разные игры, где нужен огромный размах для возможностей... А МТА - клиент к ГТА СА и достаточно одного, который бы развивался хотяб. UPD: Lua обновляется, но не в МТА. Edited January 30, 2015 by Guest Link to comment
Elengar Posted January 30, 2015 Share Posted January 30, 2015 Я бы не против кроме Lua ввести и другой язык, ну как в Unity 3D поддержка других языков Я тоже был бы рад видеть дополнительный язык. С# очень даже хорошо для такой роли подходит, пример - выше упомянутый Unity3D. Одна только проблема: нужно найти энтузиастов, которые могут и желают переписать пару библиотек для этого. И, в нынешней ситуации, лучше таких энтузиастов на другие фичи и проблемы в МТА кинуть. Link to comment
iAxel Posted January 30, 2015 Share Posted January 30, 2015 (edited) Я тоже был бы рад видеть дополнительный язык. С# очень даже хорошо для такой роли подходит, пример - выше упомянутый Unity3D. Одна только проблема: нужно найти энтузиастов, которые могут и желают переписать пару библиотек для этого. В нынешней ситуации, лучше таких энтузиастов на другие фичи и проблемы в МТА кинуть. Если хотя бы добавить C# или же C++ может и аудитории прибавиться... Edited January 30, 2015 by Guest Link to comment
iAxel Posted January 30, 2015 Share Posted January 30, 2015 Я бы не против кроме Lua ввести и другой язык, ну как в Unity 3D поддержка других языков Много мороки. Да и смысла нет. Юнити это целый движок для игр. На нем пишут самые разные игры, где нужен огромный размах для возможностей... А МТА - клиент к ГТА СА и достаточно одного, который бы развивался хотяб. UPD: Lua обновляется, но не в МТА. Вот пример возьмем проект STALKER Project, проект долго разрабатывается, хотя если была бы поддержка других языков, возможно на нем уже играли бы игроки... Что я сейчас вижу так только костыли для своих задуманных фишек на основных функциях мало что уникальное сделаешь Link to comment
obuhhh Posted January 30, 2015 Share Posted January 30, 2015 Я бы не против кроме Lua ввести и другой язык, ну как в Unity 3D поддержка других языков Много мороки. Да и смысла нет. Юнити это целый движок для игр. На нем пишут самые разные игры, где нужен огромный размах для возможностей... А МТА - клиент к ГТА СА и достаточно одного, который бы развивался хотяб. UPD: Lua обновляется, но не в МТА. Вот пример возьмем проект STALKER Project, проект долго разрабатывается, хотя если была бы поддержка других языков, возможно на нем уже играли бы игроки... Что я сейчас вижу так только костыли для своих задуманных фишек на основных функциях мало что уникальное сделаешь Ну дык, проектов как Сталкер, и подобные, мало очень. Для этих проектов, которые можно пересчитать на пальцах, вводить новый язык не самое приятное дело для разработчиков. Чтобы вводить новый язык надо быть уверенным в том, что это делается не впустую. Т.к. школьникам из МТА-рызурза этого не надо. Новый язык нужен нормальным скриптерам и программистам, которые будут пользоваться им. А таких не много. Думаешь увеличится аудитория? Где возьмется? Прирост будет небольшой. Т.к. МТА это всего лишь клиент. И на нем ты особо большой проект не сделаешь. *Голова болит, возможно пишу глупо, но надеюсь мысль понимаете* Link to comment
Kernell Posted January 30, 2015 Author Share Posted January 30, 2015 Я тоже был бы рад видеть дополнительный язык. С# очень даже хорошо для такой роли подходит, пример - выше упомянутый Unity3D. Одна только проблема: нужно найти энтузиастов, которые могут и желают переписать пару библиотек для этого. В нынешней ситуации, лучше таких энтузиастов на другие фичи и проблемы в МТА кинуть. Если хотя бы добавить C# или же C++ может и аудитории прибавиться... С++? Это шутка такая? Я тоже был бы рад видеть дополнительный язык. С# очень даже хорошо для такой роли подходит, пример - выше упомянутый Unity3D. Одна только проблема: нужно найти энтузиастов, которые могут и желают переписать пару библиотек для этого. В нынешней ситуации, лучше таких энтузиастов на другие фичи и проблемы в МТА кинуть. В прошлом году я писал модуль по интеграции mono в МТА, почти все функции забиндил, написал пул для хранения объектов, остановился на событиях так и бросил это дело. Если говорить о внедрении mono в саму MTA, то я не представляю как это уживить вместе с Lua. Link to comment
iAxel Posted January 30, 2015 Share Posted January 30, 2015 Когда я сравнивал Lua с Python, я имел ввиду, что оба достаточно просты и понятны для новичка.Отсутствие switch-case не такое уж и страшное, а вот continue, ссылки и поддержка еще нескольких парадигм ему бы явно не помешала. https://github.com/StiviiK/mta-sa_lua_utils/blob/master/switch.lua local cond = "var1" switch (cond) { ["var1"] = function () error("var1") end; [false] = function () error("false") end; ["hello"] = function () error("hello") end; ["default"] = function () error("default") end; } -- local i = 6 switch (i) { ["calc!var == 6"] = function () error("var == 6 --> true") end; ["calc!var ~= 6"] = function () error("var ~= 6 --> true") end; ["calc!var > 6"] = function () error("var > 6 --> true") end; -- (...) ["default"] = function () error("default") end; } Link to comment
Elengar Posted January 30, 2015 Share Posted January 30, 2015 Вот пример возьмем проект STALKER Project, проект долго разрабатывается, хотя если была бы поддержка других языков, возможно на нем уже играли бы игроки... Что я сейчас вижу так только костыли для своих задуманных фишек на основных функциях мало что уникальное сделаешь В ориг. STALKER'е тоже Lua используется, там проблема, скорее всего, такая, как и везде: нету других энтузиастов. Link to comment
Kernell Posted January 30, 2015 Author Share Posted January 30, 2015 Когда я сравнивал Lua с Python, я имел ввиду, что оба достаточно просты и понятны для новичка.Отсутствие switch-case не такое уж и страшное, а вот continue, ссылки и поддержка еще нескольких парадигм ему бы явно не помешала. https://github.com/StiviiK/mta-sa_lua_utils/blob/master/switch.lua local cond = "var1" switch (cond) { ["var1"] = function () error("var1") end; [false] = function () error("false") end; ["hello"] = function () error("hello") end; ["default"] = function () error("default") end; } -- local i = 6 switch (i) { ["calc!var == 6"] = function () error("var == 6 --> true") end; ["calc!var ~= 6"] = function () error("var ~= 6 --> true") end; ["calc!var > 6"] = function () error("var > 6 --> true") end; -- (...) ["default"] = function () error("default") end; } Собственно что я и имел ввиду говоря о гибкости этого языка. Дана она только разве что для костыляния недостающего функционала Link to comment
Other Languages Moderators Disinterpreter Posted January 30, 2015 Other Languages Moderators Share Posted January 30, 2015 Если говорить о внедрении mono в саму MTA, то я не представляю как это уживить вместе с Lua. Почти так же, как это сделали в IV-Network (хотя там склеили Lua и Squirrel) Link to comment
N1kS Posted January 30, 2015 Share Posted January 30, 2015 С++? Это шутка такая? Неприязнь к плюсам? Link to comment
Kenix Posted January 30, 2015 Share Posted January 30, 2015 Наверное он имел ввиду, что использовать C++ в качестве языка для разработки мода глупо. Link to comment
N1kS Posted January 30, 2015 Share Posted January 30, 2015 Да как можно об этом спорить, я не могу понять... У каждого свои идела. Если бы выбирать между C++ и C# - я бы выбрал плюсы. Это очень личный вопрос и хватит его обсуждать. Link to comment
Other Languages Moderators Disinterpreter Posted January 30, 2015 Other Languages Moderators Share Posted January 30, 2015 Да как можно об этом спорить, я не могу понять... У каждого свои идела. Если бы выбирать между C++ и C# - я бы выбрал плюсы. Это очень личный вопрос и хватит его обсуждать. Однако цимес в том, что Mono поддерживает несколько языков. 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