[cut noguest=Что такое PawnX и с чем его едят?] PawnX - новое веяние в разработке SAMP. Поистине революционный язык, призванный заменить своего родителя Pawn. В последнее время, функциональный объем скриптов на Pawn стремительно растет. Более менее работоспособный код имеет от 40 000 строк. Не жирно ли для одного скрипта?!
Все дело в том, что основные шаблоны программирования при разработке не используются. Код нагло копируется, увеличивая масштабы катастрофы! Из-за этого поддерживать код большинство скриптеров отказывается - ведь разбираться сложно в таком объеме кода. Программисты с опытом, в большинстве случаев отказываются вообще от затрат своего времени на Pawn. Проблема в том что язык морально уже устарел!
Основная идея нового языка в том, чтобы упростить работу при создании тяжелых скриптов для SAMP. А также привнести новые "фишки", которые уже давно есть в других языках. Сейчас уже создан препроцессор, который из исходников PawnX преобразует их в единый файл Pawn. Который дальше можно уже скомпилировать стандартным компилятором для Pawn. По духу это дело напоминает вкусности вроде: SASS или LESS для CSS.
Для любознательных, ответим на вопрос: "На чем это работает?". Прототип первого препроцессор изначально был написан на PHP5.3. Подтвердив, что идея имеет шансы на жизнь, все это дело было переписано на C++ (помимо этого использовалась библиотека Boost). Препроцессор собирается с помощью CMake, т.к. мы ориентируемся на кросс-платформенность нашего решения.
Есть уже первые важные "фишки" Кодировка UTF-8 для исходников. Препроцессор конвертирует кодировку, и на выходе получаем Pawn-исходник с кодировкой Windows-1251. Функция pwn_require(), которая подгружает указанный исходный файл и вставляет его прямо в код. Полностью поддерживается вложенность по относительным путям. Например: можно подгрузить файл в котором подгружаются другие файлы, относительно него.[/cut] Проект PawnX вышел в свет, с чем вас и поздравляем. Обо всех вопросах можете спрашивать в комментариях. Найденные недочеты или ошибки пишите в баг-трекер: https://github.com/tesjin/pawnx/issues
Помимо исходников PawnX, мы выложили также в публичный доступ урезанную версию игрового мода проекта Valinor-RP (http://valinor-rp.ru/), в обучающих целях. Можете посмотреть на то, как мы использовали PawnX в бою: https://github.com/tesjin/valinor-samp
Пишем свои вопросы, предложения, замечания.
Сообщение отредактировал Turgenev - Четверг, 18.09.2014, 15:39
Шрифт хороший, специально для чтения создавался, с засечками. Если "режит" глаза, то наверное у тебя что-то не то с монитором или настройками (Покрути в настройках ClearType если есть).
Если коротко то из плюсов это:
Полная обратная совместимость с Pawn. Любой код из Pawn тут будет работать.
Исходники в UTF-8, а не в Windows-1251. Т.е. меньше проблем на Linux с разработкой скрипта
Подгрузка кода из файла, куда тебе надо. Просто вызвал функцию, передав туда путь до файла (относительно текущего файла), и все.. Теперь в этом месте будет подгружен тот файл. Это нереально облегчает работу в сотни раз, теперь можно разбить логически скрипт на файлы, что упростит навигацию в разы.
Из минусов, чего пока не хватает
Собственного компилятора нет. Используется пока от Pawn. Хотя может оно и к лучшему...
В целях проекта не было сделать что-то новое чего нигде нет.. Цель проста: взять лучшее из других языков и привнести это в Pawn. Сейчас идет работа над введением локальных переменных и областью видимости их, с возможностью специально пересекать их.
Возможно у вас возникнут пожелания, что добавить сюда из другого языка?
Исходники в UTF-8, а не в Windows-1251. Т.е. меньше проблем на Linux с разработкой скрипта
Да нет никаких проблем с разработкой на Linux.
ЦитатаTurgenev ()
Подгрузка кода из файла, куда тебе надо. Просто вызвал функцию, передав туда путь до файла (относительно текущего файла), и все.. Теперь в этом месте будет подгружен тот файл. Это нереально облегчает работу в сотни раз, теперь можно разбить логически скрипт на файлы, что упростит навигацию в разы.
Сто лет назад люди разбивали скрипт на файлы и подключали их с помощью #include.
ЦитатаTurgenev ()
Сейчас идет работа над введением локальных переменных и областью видимости их
1 час моей работы стоит минимум 800 рублей для срочных работ. Знаю CodeIgniter, Kohana, втч. кастом(php), Вникаю в Yii. jQuery на должном уровне, немного разбираюсь в RightJS. Алсо, 6 лет павно, 2 года в шарпе, понимаю си и плюсы. Немного ассемблер. Ох**тельный верстальщик какб.
Если ваш заказ потребует неделю работы и вы собираетесь заплатить 100 рублей - лес там ->> ^^^^^
Turgenev, что часть текста от гостей спрятали, правильно. То что язык устарел, это несколько не верно, т.к. в той же вики написано для чего хорош(мк с огр. памятью, и в т.ч. для тех кто не осилил С или ASM).
Есть темка про пых для сампа, там есть сравнение производительности, для этого вашего, это неуместно в таком виде. Но все же замена некоторых конструкций удобных в написании, быстрыми в исполняемом коде, было бы полезно, и соответственно эту разницу в производительности можно дать, вместе с условиями такого изменения.
Но сама затея странная, если нравится другой язык, почему бы не заняться именно его интеграцией. Если неудобно разрабатывать, то почему бы не слепить для павна IDE какую-нибудь. И мне кажется, на весь этот пафосный текст и его постинг вы потратили времени, соизмеримо с написанием кода. Поэтому это больше похоже на пафос ради пафоса или рекламы(своего РП).
1 час моей работы стоит минимум 800 рублей для срочных работ. Знаю CodeIgniter, Kohana, втч. кастом(php), Вникаю в Yii. jQuery на должном уровне, немного разбираюсь в RightJS. Алсо, 6 лет павно, 2 года в шарпе, понимаю си и плюсы. Немного ассемблер. Ох**тельный верстальщик какб.
Если ваш заказ потребует неделю работы и вы собираетесь заплатить 100 рублей - лес там ->> ^^^^^
Да, это всего лишь обертка над Pawn, не больше Цель языка не делать, что-то революционного: ломая обратную совместимость с Pawn, а пойти по пути эволюции языка, добавив возможности использовать в своих скриптах популярные, общепринятые парадигмы программирования.
К примеру сейчас в разработке одна из популярных парадигм программирования: ООП. Думаю это самая необходимая возможность, которой сейчас не хватает многим скриптерам. Или это не так? Проект PawnX открыт для обсуждения, все пожелания будут рассматриваться. Так что прошу вас предложить свои пожелания
Да возможно глупо было публиковать проект так рано, но это сделано ради фидбека от комьюнити
Да возможно глупо было публиковать проект так рано, но это сделано ради фидбека от комьюнити
Слишком рано.
Займитесь делом
ЦитатаTurgenev ()
К примеру сейчас в разработке одна из популярных парадигм программирования: ООП. Думаю это самая необходимая возможность, которой сейчас не хватает многим скриптерам. Или это не так?
ООП В pawn? Хах, ну удачи, лучше бы развивали тему с виртуальной машиной amx -> php vm
1 час моей работы стоит минимум 800 рублей для срочных работ. Знаю CodeIgniter, Kohana, втч. кастом(php), Вникаю в Yii. jQuery на должном уровне, немного разбираюсь в RightJS. Алсо, 6 лет павно, 2 года в шарпе, понимаю си и плюсы. Немного ассемблер. Ох**тельный верстальщик какб.
Если ваш заказ потребует неделю работы и вы собираетесь заплатить 100 рублей - лес там ->> ^^^^^
лучше бы развивали тему с виртуальной машиной amx -> php vm
Не понятен смысл с вирт машиной, какой с этого профит?
Использовать PHP везде где можно не разумно: для каждой задачи есть свои инструменты. Допустим мы получили некоторую инфраструктуру, которая пробрасывает запросы на PHP из SAMP. Не важно как: будь это FastCGI или же моудль к Apache, или даже еще прокси-сервер будет стоять... Давайте заострим внимание на сам язык. В чем минусы PHP? Он интерпретируемый, т.е. время выполнения кода заметно ниже, чем с теми языками, которые могут компилироваться в байт-код или бинарный файл. В добавок при каждом вызове будет происходить ПОЛНАЯ инициализация скрипта. Как решение можно использовать PHP-daemon, но это костыль, который сильно течет в памяти из-за "корявых" скриптов, так что это даже не вариант.
Также хочу заострить внимание, что использовав такую инфраструктуру у нас будут очень большие проблемы со скоростью выполнения вычислений. Можете сами подсчитать это, начиная от вызова event-функции в SAMP: перехват event, отправка на PHP по средствам HTTP или FastCGI, инициализация скрипта PHP, обработка данных, возвращение результата по HTTP/FastCGI, обработка результата в SAMP, вызов функций SAMP. Да можно отказаться от транспортировки по TCP/IP и вызвать интерпретатор каждый раз, но выигрыша как не странно не будет, даже будет скорее проигрыш: дело в том, что ресурсы будут тратятся ОС на каждый запуск интерпретатора: загрузка в память и т.д. А еще не забываем что обработка в SAMP (судя по исходникам 0.3d) и вызов функций в PAWN однопоточный!
Резюмируя, хочу сказать что PHP не для высоконагруженных проектов, где задержка у игроков является критичным местом для команды такого сервера. Соответственно радужных перспектив для PHP в SAMP я не вижу. Его либо надо встраивать в саму движку, заменяя Pawno, либо делать backend сервер на другом языке, который может быть заточен под real-time: C/C++, Java, C#, Go, Rust, Haskell, Node.js, Ruby. И на этот сервер по средствам TCP/IP или Unix-Socket асинхронно отправлять данные для обработки. Главное, чтобы задержка между SAMP и backend сервером была минимальна, иначе будет "лагать"
Turgenev, у вас огромный пробел в знаниях, вы явно не изучали код php и явно не знаете что такое vm. Почитайте, пожалуйста литературу и исходники уже имещихся в samp комьюнити проектов по использованию других языков, а также документацию от compuphase и тогда суйтесь в эти области. Пока что это просто сборщик, который на коленке делается за один вечер. И еще раз говорю, не новый язык, тк ВНЕЗАПНО AMX - тоже виртуальная машина, а в pawn есть ассемблерные вставки в вирт. машину. ПАМ-ПАМ-ПАМ!!11
1 час моей работы стоит минимум 800 рублей для срочных работ. Знаю CodeIgniter, Kohana, втч. кастом(php), Вникаю в Yii. jQuery на должном уровне, немного разбираюсь в RightJS. Алсо, 6 лет павно, 2 года в шарпе, понимаю си и плюсы. Немного ассемблер. Ох**тельный верстальщик какб.
Если ваш заказ потребует неделю работы и вы собираетесь заплатить 100 рублей - лес там ->> ^^^^^