Jump to content

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


Recommended Posts

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

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

Пожалуй начну первым.

И так. Многие наверное уже заметили мою ненависть в сторону 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
Link to comment
  • Replies 62
  • Created
  • Last Reply

Top Posters In This Topic

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

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

Link to comment
  • Other Languages Moderators

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

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

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

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

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

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

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

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

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

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

Edited by Guest
Link to comment
  • Other Languages Moderators
Не вижу в нём смысла, когда есть C#

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

Link to comment
Не вижу в нём смысла, когда есть C#

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

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

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

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

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

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

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

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

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

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

Link to comment

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Link to comment

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

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

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

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

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

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

В прошлом году я писал модуль по интеграции mono в МТА, почти все функции забиндил, написал пул для хранения объектов, остановился на событиях так и бросил это дело. Если говорить о внедрении mono в саму MTA, то я не представляю как это уживить вместе с Lua.
Link to comment
Когда я сравнивал 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

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

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

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

Link to comment
Когда я сравнивал 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

Link to comment
  • Other Languages Moderators

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

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

Link to comment

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

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

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

Link to comment

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...