Добро пожаловать на Pro Pawn - Портал о PAWN-скриптинге.
Страница 2 из 2 ПерваяПервая 1 2
Показано с 11 по 20 из 20
  1. #11
    Аватар для $continue$
    Пользователь

    Статус
    Оффлайн
    Регистрация
    02.08.2014
    Адрес
    г. Киров (aka Вятка)
    Сообщений
    1,487
    Репутация:
    276 ±
    Да, действительно , забыл про AngelScript.
    Можно поставить в ряд с Lua, Python, Squirrel.
    На счйт встраивомости : Пробувал встроить в C# - очень муторно. В C++ , да, легко встроить
    Value your freedom or you will lose it, teaches history. "Don't bother us with politics," respond those who don't want to learn. (c) Richard Stallman

  2. #12
    Аватар для Profyan
    Пользователь

    Статус
    Оффлайн
    Регистрация
    23.12.2013
    Адрес
    Омск
    Сообщений
    196
    Репутация:
    22 ±
    Daniel_Cortez,а почему все-таки вы его начали изучать? Могу предположить,что как многие игроки,играющие когда-то в самп,решили сделать свой сервер.(я таким путем и шел)

    Моя история:
    Хоть у меня и есть проект,но он стал для меня второстепенным.В далеком 2011 году,когда я был в классе 5, впервые услышал о самп.Тогда была версия 0.3d. Зашел на первый РП сервер и меня поразило то,что разработчики сделали такое в игре.Они приблизили многое к реальности.Существенным плюсом является то,что язык скриптовый,поэтому он легок в обучении.(хотя в 5ом классе я так не думал).Как уже сказал Untonyst, чтобы кодить на Pawn, нужно открыть всего-лишь Pawno.Платформа(если можно так сказать) на которой можно воплотить все свои фантазии в реальность,хоть и игровую, уже есть. Поэтому знания легко подкрепляются практикой. Для меня этот скриптовый язык стал первым и он подтолкнул меня на изучение других ЯП, уже более серьезных и практичных. Но Pawn забывать не хочется,потому что из-за его медленного развития приходится включать свои мозги,когда решаешь нетривиальную задачу. Т.к и в ресурсах мы ограничены и в возможностях.Почему я об этом говорю?Да потому, что некоторые "программисты" использующие серьезные языки не заботятся совершенно о памяти,о скорости работы,т.к в наше время вычислительные машины(ПК) довольно производительные и сложные задачи с не рациональным алгоритмом решают быстро.А Pawn меня научил(или вы,комьюнити п-п) рационально использовать ограниченные ресурсы и разрабатывать эффективные алгоритмы.



    Любой дурак может написать код, понятный компьютеру. Хороший программист пишет код, понятный человеку
    Мартин Фаулер


    Skype
    profan99
    VK
    click




  3. #13
    Аватар для $continue$
    Пользователь

    Статус
    Оффлайн
    Регистрация
    02.08.2014
    Адрес
    г. Киров (aka Вятка)
    Сообщений
    1,487
    Репутация:
    276 ±
    Увы, реальность такова - что сейчас, работодателям легче докупить планку с 16 гб оперативы, чем платить C++ программистам.
    Да и иногда, погоня за теми же макросекундами - нафиг не нужна.
    Цитата Сообщение от Profyan Посмотреть сообщение
    Да потому, что некоторые "программисты" использующие серьезные языки не заботятся совершенно о памяти,о скорости работы,т.к в наше время вычислительные машины(ПК) довольно производительные и сложные задачи с не рациональным алгоритмом решают быстро
    Value your freedom or you will lose it, teaches history. "Don't bother us with politics," respond those who don't want to learn. (c) Richard Stallman

  4. #14
    Аватар для Profyan
    Пользователь

    Статус
    Оффлайн
    Регистрация
    23.12.2013
    Адрес
    Омск
    Сообщений
    196
    Репутация:
    22 ±
    Цитата Сообщение от $continue$ Посмотреть сообщение
    Увы, реальность такова - что сейчас, работодателям легче докупить планку с 16 гб оперативы, чем платить C++ программистам.
    Да и иногда, погоня за теми же макросекундами - нафиг не нужна.
    Поэтому востребованы программисты,пишущие на ЯП высокого уровня.Например, Java.



    Любой дурак может написать код, понятный компьютеру. Хороший программист пишет код, понятный человеку
    Мартин Фаулер


    Skype
    profan99
    VK
    click




  5. #15
    Аватар для Daniel_Cortez
    "Это не хак, это фича"

    Статус
    Оффлайн
    Регистрация
    06.04.2013
    Адрес
    Novokuznetsk, Russia
    Сообщений
    2,192
    Репутация:
    2589 ±
    Цитата Сообщение от Profyan Посмотреть сообщение
    Daniel_Cortez,а почему все-таки вы его начали изучать? Могу предположить,что как многие игроки,играющие когда-то в самп,решили сделать свой сервер.(я таким путем и шел)
    Да, но буквально через неделю понял, что открывать свой сервер не стоит того, когда весь русскоязычный сегмент серверов SA:MP переполнен "уникальными" RLS, в которых уникально только название (и то не всегда), которое изменили за 5 минут и за такое же время залили на хостинг.

    Цитата Сообщение от $continue$ Посмотреть сообщение
    Да, действительно , забыл про AngelScript.
    Можно поставить в ряд с Lua, Python, Squirrel.
    На счйт встраивомости : Пробувал встроить в C# - очень муторно. В C++ , да, легко встроить
    Про Lua вообще отдельный разговор.
    • В нём нет переменных в обычном их понимании, всё завязано вокруг таблиц.
      Глобальные переменные и встроенные функции с модулями являются элементами таблицы _G, которая, в свою очередь, принадлежит сама себе (_G._G = _G), а локальные переменные, начиная с Lua 5.2, принадлежат к таблице _E.
      Отсюда универсальный способ перекрыть Lua'шнику кислород - опустошить таблицы _G и _E (в принципе достаточно очистить _G, но вдруг мы имеем дело с параноиком, который забэкапил _G в локальной переменной?)

    • Операции со строками производятся, как с объектами.
      Например, чтобы получить i-й символ из строки, нельзя просто написать "str[i]", нужно вызвать функцию для извлечения подстроки ("string.sub(str, i, i+1)") или аналогичный метод (str:sub(i, i+1)).
      Мало того, при этом создастся новый строковый объект, который будет помещён в общую таблицу строк.

    • Функции в Lua могут возвращать несколько значений, но если таких функций вызывается несколько в списке, то больше одного значения сможет вернуть только последняя функция:
      PHP код:
      function f1()
          return 
      123
      end

      function f2()
          return 
      456
      end

      local t 
      = { f1(), f2() }
      for 
      1#t do print(t[i]) end 
      В результате будет выведено "1 4 5 6".
      Нет, я понимаю, эта багофича задокументирована и всё такое. Но что помешало авторам Lua сделать куда более логичный возврат нескольких значений для всех функций, а не только для f2?
      И такие подводные камни в Lua можно ещё долго перечислять.

    • Хвалёная "простота встраивания" Lua на деле ни что иное, как просто миф.
      Да, для встраивания интерпретатора в проект на Си достаточно лишь ввести «#include "lua.h"», но на этом вся простота заканчивается.
      Чтобы сделать свою нативную функцию, придётся не раз поломать голову с уродливым стековым механизмом передачи параметров (самый геморрой, если передаётся таблица и нужно прочесть из неё элементы, представляя её либо как массив, либо как хеш-таблицу) и обработкой аргументов, которых, кстати говоря, может и не существовать или они могут оказаться не совсем такими, какими вы их ожидали: у функций в Lua нельзя сделать фиксированное число аргументов, да ещё и строго заданного типа (ишь, чего захотели!)

    • Язык разрабатывается всего 3 программистами из PUC-Rio по закрытой (соборной) модели.
      У проекта нет публичного репозитория и кроме них троих никто не может притрагиваться к коду.
      После релиза можно скачать исходники и сделать свой форк, но вряд ли он станет достаточно популярным, чтобы привлечь других разработчиков, да и сами инициаторы форков имеют тенденцию со временем переходить на другие проекты, оставляя форки Lua стагнировать.
      Можно связаться с разработчиками по электронной почте и предложить им какие-либо улучшения, но они мало когда прислушиваются к этим предложениям (достаточно лишь посмотреть их публичный список рассылки) и чужой код не принимают (религия запрещает, наверное).
      Разработчики Lua объясняют всё это тем, что они хотят, чтобы язык был таким, каким хотят его видеть только они сами, а не сообщество.

    Наверное, именно все это и удерживает меня от перехода с SA:MP на MTA (впрочем, наверное я и в SA:MP никогда не разбирался достаточно хорошо).
    Сначала вам может понравиться простота языка Lua, но при работе над крупными проектами, в которых требуется что-то большее, чем просто пара таблиц и обработчиков событий, вы будете сталкиваться со всё новыми и новыми ограничениями, накладываемыми языком, и ещё не раз пожалеете о своём выборе.
    Из-за анально огороженного процесса разработки Lua, ЧСХ, имеем кучу мелких форков и наборы патчей для самых разнообразных целей.
    Но, что самое интересное, несмотря на все свои недостатки Lua смог стать самым популярным языком для игрового скриптинга и до сих пор не собирается сдавать свои позиции. Мало того, на основе его концепций в последствии были созданы языки Squirrel, GameMonkey и наверняка ещё куча похожих на Lua малоизвестных скриптовых языков (по-моему, их все, вместе с самим Lua, следовало бы выделить в отдельную категорию), которые заполонили оставшуюся после Lua часть сферы геймдева.
    Не знаю, что насчёт самого языка (мне вообще всё это фиолетово, т.к. я не собираюсь делать никаких серьёзных проектов на Lua), но, ИМХО, его авторы - одни из самых успешных троллей всех времён.


    Также хотелось бы упомянуть о встраиваемости в AngelScript: при создании своих нативных функций не нужно даже писать код для обработки параметров из виртуальной машины.
    Достаточно лишь зарегистрировать функцию, указав, какие параметры она должна принимать.
    PHP код:
    int result engine->RegisterGlobalFunction("void DoSomething(string, int)"WRAP_FN(DoSomething), asCALL_GENERIC);
    assertresult >= ); 
    Стоит заметить, что эта главная фича языка является в то же время и его главным недостатком, т.к. с ней связаны многие проблемы в AngelScript.
    Она работает только на самых распространённых платформах (Windows, Linux, OS X, Android), но на других платформах ещё не успели сделать так, чтобы нативные функции вызывались правильно.
    Как результат, на некоторых платформах при вызове нативных функций происходит краш, а без них язык практически бесполезен.
    Для таких проектов, как SA:MP или MTA, внедрение AngelScript может и прокатит, но если вы хотите сделать что-то с более широким списком целевых платформ, лучше использовать язык с более переносимым интерпретатором - например, тот же Pawn.
    Я бы предложил ещё C# или Java, но у них чересчур раздутая стандартная библиотека функций, да и патентов там больше, чем строк кода. Вообще, что Microsoft (создатели C# и владельцы патентов на него), что Oracle (также владеют кучей патентов на Java) - жирные патентные тролли, достаточно лишь вспомнить претензии oracle к Google за использование их API в своей реализации Java, а также что за счёт патентных отчислений Microsoft зарабатывает на платформе Android больше, чем даже её создатели: Google.

    UPD: Что ещё интересно, в AngelScript я не нашёл ни одного момента по объявлению заголовков нативных функций в скриптах.
    Если этой возможности реально нет, то как вообще можно работать над проектом, если список нативок известен только интерпретатору и IDE не может по мере ввода названия функций предложить список вариантов? Узнавать об ошибках только после компиляции? В лучшем случае, можно сделать захардкоженный список функций, который придётся время от времени пополнять вручную.
    Пару дней назад я хотел использовать AngelScript для своего проекта (который, возможно, анонсирую несколько позже; разработка ведётся черепашьими шагами), но теперь больше склоняюсь к использованию Pawn версии 3.2, чтобы можно было использовать уже привычный компилятор с патчами от Zeex, а многие проблемы можно было решить с помощью #emit (в последней версии 4.0 #emit использовать нельзя, а из 3.3 Zeex уже бэкпортировал многие исправления и оптимизации для генерируемого байткода).
    Индивидуально в ЛС по скриптингу не помогаю. Задавайте все свои вопросы здесь (click).

  6. #16
    Аватар для $continue$
    Пользователь

    Статус
    Оффлайн
    Регистрация
    02.08.2014
    Адрес
    г. Киров (aka Вятка)
    Сообщений
    1,487
    Репутация:
    276 ±
    Была идея сделать бота на C#, с возможностью написания скриптов на AngelScript. (Вызов методов: getVKMessange, sendVKMessange, etc...)
    Херово, что встраемость в C# , почти ровна = 0.
    Вот, подумываю бота писать теперь на C++
    Value your freedom or you will lose it, teaches history. "Don't bother us with politics," respond those who don't want to learn. (c) Richard Stallman

  7. #17
    Аватар для Daniel_Cortez
    "Это не хак, это фича"

    Статус
    Оффлайн
    Регистрация
    06.04.2013
    Адрес
    Novokuznetsk, Russia
    Сообщений
    2,192
    Репутация:
    2589 ±
    Цитата Сообщение от $continue$ Посмотреть сообщение
    Была идея сделать бота на C#, с возможностью написания скриптов на AngelScript. (Вызов методов: getVKMessange, sendVKMessange, etc...)
    Херово, что встраемость в C# , почти ровна = 0.
    Вот, подумываю бота писать теперь на C++
    Есть альтернативные реализации Lua на C#, но они в лучшем случае застряли на версии 5.2.
    Индивидуально в ЛС по скриптингу не помогаю. Задавайте все свои вопросы здесь (click).

  8. #18
    Аватар для TheMallard
    Пользователь

    Статус
    Оффлайн
    Регистрация
    08.12.2015
    Адрес
    San Fierro
    Сообщений
    217
    Репутация:
    39 ±
    Где-то в классе четвертом-пятом (2013-2014), пошел на курсы Java для школьников. Курсы закончили 4 человека, из них я единственный понимал ООП и всерьез заинтересовался языком, написал две(!!!) змейки и один платформер (это все в 2014). Позвали пилить сервер для Майнкампфа. С нами был пацан, который писал на Pawn, звали Александр. Ну и я типо с ним начал пилить сервер, правда Pawn совсем (совсем-совсем!!!) не знал, к тому же не было ООП. С Александром мы расстались, прихватив исходники, я свалил. Собственно, вот и все, теперь летом собираюсь пилить сервер уже на платформе SA-MP.

  9. #19
    Аватар для [ForD]
    Пользователь

    Статус
    Оффлайн
    Регистрация
    14.11.2013
    Адрес
    Свердловская обл.
    Сообщений
    688
    Репутация:
    103 ±
    Цитата Сообщение от $continue$ Посмотреть сообщение
    привет синтаксису Python
    PAWN Compiler делает то, что вы приказали ему сделать, а не то, что вы хотели, чтобы он сделал..

    25% времени в программировании уходит на размышления о том, что пользователь может сделать не так.[HR]/Брайан Хьюмс/





    #FIXSAMP

  10. #20
    Аватар для Seregamil
    Проверенный

    Статус
    Оффлайн
    Регистрация
    21.11.2013
    Сообщений
    551
    Репутация:
    274 ±
    Цитата Сообщение от $continue$ Посмотреть сообщение
    Была идея сделать бота на C#, с возможностью написания скриптов на AngelScript. (Вызов методов: getVKMessange, sendVKMessange, etc...)
    Херово, что встраемость в C# , почти ровна = 0.
    Вот, подумываю бота писать теперь на C++
    Улыбнуло)

    По теме: ничем язык не привлек. Играл на дм серверах со времен 0.3c, играл на nWo League, даже клан свой был, было весело и интересно) И никогда не играл на РП, хоспаде, как же это прекрасно, что этот жанр не привлекает меня, просто сказка. Ну а по определенному стечению жизненных обстоятельств пришлось учиться тому, что мне не подвластно. Коротко и ясно.

 

 
Страница 2 из 2 ПерваяПервая 1 2

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •