Jump to content

Обсуждаем языки программирования


Recommended Posts

Posted (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 by Guest

Не оказываю поддержку посредством личных сообщений, ICQ, ВК и тому подобное. Все вопросы задавайте на форуме.

  • Replies 62
  • Created
  • Last Reply

Top Posters In This Topic

Posted

Когда я сравнивал Lua с Python, я имел ввиду, что оба достаточно просты и понятны для новичка.

Отсутствие switch-case не такое уж и страшное, а вот continue, ссылки и поддержка еще нескольких парадигм ему бы явно не помешала.

Posted

Согласен пару функции для Lua не помешает, но вроде же его обновляют или мне так кажись?

  • Moderators
Posted

Кстати, недавно Lua 5.3 вышел, http://www.lua.org/manual/5.3/readme.html#changes , есть пара интересных фич.

Одна из основных фитч, это введение целого числа.

Может кто слышал о Squirrel, AngelScript, GameMonkey?

Developers, Developers, Developers, Developers.... © Steve Balmer

http://www.lua.org/about.html

Quote
Please do not write it as "LUA", which is both ugly and confusing, because then it becomes an acronym with different meanings for different people. So, please, write "Lua" right!
Posted
Согласен пару функции для Lua не помешает, но вроде же его обновляют или мне так кажись?

Lua - да. Но MTA не обновляют Lua. Говорят мол если обновят, то все ресурсы перестанут работать :)

Может кто слышал о Squirrel, AngelScript, GameMonkey?

Squirrel и AngelScript я внедрял в МТА (в виде модуля). Squirrel не прижился мне. Не понравилось в нём это: Для создания полей у таблиц нужно использовать специальный оператор <-, таким образом невозможно создать новое поле, случайно ошибившись в имени. Считаю подобные вещи бредом.

Что касается AngelScript.. Не вижу в нём смысла, когда есть C#

Не оказываю поддержку посредством личных сообщений, ICQ, ВК и тому подобное. Все вопросы задавайте на форуме.

Posted (edited)
Что касается AngelScript.. Не вижу в нём смысла, когда есть C#

Если так размышлять - то смысл в любом языке, если есть плюсы и шарп? Если бы на шарпе можно было женится - женился бы? Ты весь форум про свой шарп прожужал, хватит уже может быть?

Edited by Guest

skype: shadow_niks

  • Moderators
Posted
Не вижу в нём смысла, когда есть C#

Если юзать c# в качестве клиента, то придется вырезать половину его функциональности (в целях безопасности).

Developers, Developers, Developers, Developers.... © Steve Balmer

http://www.lua.org/about.html

Quote
Please do not write it as "LUA", which is both ugly and confusing, because then it becomes an acronym with different meanings for different people. So, please, write "Lua" right!
Posted
Не вижу в нём смысла, когда есть C#

Если юзать c# в качестве клиента, то придется вырезать половину его функциональности (в целях безопасности).

Для этого придётся переписать mscorlib и ещё несколько библиотек. Но оно того стоит. Конечно же речь о mono.

Не оказываю поддержку посредством личных сообщений, ICQ, ВК и тому подобное. Все вопросы задавайте на форуме.

Posted

Я бы не против кроме Lua ввести и другой язык, ну как в Unity 3D поддержка других языков

Posted (edited)
Я бы не против кроме Lua ввести и другой язык, ну как в Unity 3D поддержка других языков

Много мороки. Да и смысла нет. Юнити это целый движок для игр. На нем пишут самые разные игры, где нужен огромный размах для возможностей...

А МТА - клиент к ГТА СА и достаточно одного, который бы развивался хотяб.

UPD: Lua обновляется, но не в МТА. :/

Edited by Guest
Posted
Я бы не против кроме Lua ввести и другой язык, ну как в Unity 3D поддержка других языков

Я тоже был бы рад видеть дополнительный язык. С# очень даже хорошо для такой роли подходит, пример - выше упомянутый Unity3D.

Одна только проблема: нужно найти энтузиастов, которые могут и желают переписать пару библиотек для этого.

И, в нынешней ситуации, лучше таких энтузиастов на другие фичи и проблемы в МТА кинуть.

Posted (edited)

Я тоже был бы рад видеть дополнительный язык. С# очень даже хорошо для такой роли подходит, пример - выше упомянутый Unity3D.

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

Если хотя бы добавить C# или же C++ может и аудитории прибавиться...

Edited by Guest
Posted
Я бы не против кроме Lua ввести и другой язык, ну как в Unity 3D поддержка других языков

Много мороки. Да и смысла нет. Юнити это целый движок для игр. На нем пишут самые разные игры, где нужен огромный размах для возможностей...

А МТА - клиент к ГТА СА и достаточно одного, который бы развивался хотяб.

UPD: Lua обновляется, но не в МТА. :/

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

Что я сейчас вижу так только костыли для своих задуманных фишек на основных функциях мало что уникальное сделаешь

Posted
Я бы не против кроме Lua ввести и другой язык, ну как в Unity 3D поддержка других языков

Много мороки. Да и смысла нет. Юнити это целый движок для игр. На нем пишут самые разные игры, где нужен огромный размах для возможностей...

А МТА - клиент к ГТА СА и достаточно одного, который бы развивался хотяб.

UPD: Lua обновляется, но не в МТА. :/

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

Что я сейчас вижу так только костыли для своих задуманных фишек на основных функциях мало что уникальное сделаешь

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

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

Думаешь увеличится аудитория? Где возьмется? Прирост будет небольшой. Т.к. МТА это всего лишь клиент. И на нем ты особо большой проект не сделаешь.

*Голова болит, возможно пишу глупо, но надеюсь мысль понимаете*

Posted

Я тоже был бы рад видеть дополнительный язык. С# очень даже хорошо для такой роли подходит, пример - выше упомянутый Unity3D.

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

Если хотя бы добавить C# или же C++ может и аудитории прибавиться...

С++? Это шутка такая?

Я тоже был бы рад видеть дополнительный язык. С# очень даже хорошо для такой роли подходит, пример - выше упомянутый Unity3D.

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

В прошлом году я писал модуль по интеграции mono в МТА, почти все функции забиндил, написал пул для хранения объектов, остановился на событиях так и бросил это дело. Если говорить о внедрении mono в саму MTA, то я не представляю как это уживить вместе с Lua.

Не оказываю поддержку посредством личных сообщений, ICQ, ВК и тому подобное. Все вопросы задавайте на форуме.

Posted
Когда я сравнивал 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; 
} 
  

Posted

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

Что я сейчас вижу так только костыли для своих задуманных фишек на основных функциях мало что уникальное сделаешь

В ориг. STALKER'е тоже Lua используется, там проблема, скорее всего, такая, как и везде: нету других энтузиастов.

Posted
Когда я сравнивал 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; 
} 
  

Собственно что я и имел ввиду говоря о гибкости этого языка. Дана она только разве что для костыляния недостающего функционала :D

Не оказываю поддержку посредством личных сообщений, ICQ, ВК и тому подобное. Все вопросы задавайте на форуме.

  • Moderators
Posted

Если говорить о внедрении mono в саму MTA, то я не представляю как это уживить вместе с Lua.

Почти так же, как это сделали в IV-Network (хотя там склеили Lua и Squirrel)

Developers, Developers, Developers, Developers.... © Steve Balmer

http://www.lua.org/about.html

Quote
Please do not write it as "LUA", which is both ugly and confusing, because then it becomes an acronym with different meanings for different people. So, please, write "Lua" right!
Posted

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

http://vk.com/the_kenix

Вопросы задавайте на форуме, не пишите мне в личку.

Please don't pm me.

Posted

Да как можно об этом спорить, я не могу понять... У каждого свои идела. Если бы выбирать между C++ и C# - я бы выбрал плюсы. Это очень личный вопрос и хватит его обсуждать.

skype: shadow_niks

  • Moderators
Posted
Да как можно об этом спорить, я не могу понять... У каждого свои идела. Если бы выбирать между C++ и C# - я бы выбрал плюсы. Это очень личный вопрос и хватит его обсуждать.

Однако цимес в том, что Mono поддерживает несколько языков.

Developers, Developers, Developers, Developers.... © Steve Balmer

http://www.lua.org/about.html

Quote
Please do not write it as "LUA", which is both ugly and confusing, because then it becomes an acronym with different meanings for different people. So, please, write "Lua" right!

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.

×
×
  • Create New...