forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Проекты на Blitz3D (http://forum.boolean.name/forumdisplay.php?f=14)
-   -   Skynet++ (Скриптовый язык) (http://forum.boolean.name/showthread.php?t=17578)

IgorOK 30.11.2012 18:48

Skynet++ (Скриптовый язык)
 
Вложений: 1
Привет, Булка!

Года три назад начал разработку собственного скриптового языка для Blitz3D. Много раз забрасывал его но всё же решил доделать.:)

О происхождении названия: Это не выпендрёж, просто друзья с которыми я жил в общаге постоянно говорили, что я пишу тот самый "скайнет" из терминатора. Не долго думая решил его назвать так. ++ для того чтобы название было больше похоже на язык программирования. Была даже идея выпустить его 21 декабря.:-D

Вдохновлялся JavaScript, Ruby, Python и прочими. В результате получился простой язык без ООП. Подробнее о синтаксисе можно узнать в описании внутри архива.

Внутри уже подключены некоторые функции (Skynet++ Base Lib.bb), для работы с математикой, строками и массивами. Всё работает достаточно шустро.

Вот. Кому интересно - просьба потестить.:)


Позволю себе процитировать ReadMe файл (будет включен в следующую версию). :)

Цитата:

Skynet++ - это скриптовый язык написанный на чистом Blitz3D, без использования сторонних библиотек.


Skynet++ предоставляет гибкое функциональное программирование. Он не содержит ООП, однако в остальном он максимально упрощает процесс написания скриптов. Внутренняя организация виртуальной машины и API, также позволяет очень легко и быстро встроить его в любую программу написанную на Blitz3D.

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

Ключевые особенности:
  • Простой синтаксис. Содержит все знакомые ключевые слова. Некоторые из них изменены, но в целом синтаксис схож с многими другими языками программирования.
  • Высокая производительность. Виртуальная машина ориентирована на максимально быстрое выполнение инструкций.
  • Динамическая (не строгая) типизация значений переменных.
  • Динамические массивы. Вы можете создавать, удалять и добавлять элементы в массивы, используя поставляющиеся в базовой библиотеке функции. А так же передавать массивы в качестве обычных типов данных.
  • Встроенный препроцессор.
  • Механизм инстансинга. Он позволяет обрабатывать разные наборы данных одним скриптом. Таким образом существенно снижается потребление памяти, т.к. не нужно загружать несколько одинаковых скриптов. Это может быть полезно когда вам, например, нужно обработать поведение искуственного интеллекта в игре. Вместо загрузки скрипта для каждого бота вы просто создаёте объект (инстанс) скрипта поведения.
  • Возможность загружать скрипт напрямую из текста в память. Так же присутствует возможность компилировать скрипт в бинарный файл который занимает меньше места на диске и загружается быстрее. Так же компилятор отслеживает возможные синтаксические ошибки и оповещает о конфликтах имён переменных.
  • Встроенный сборщик мусора для массивов. Он автоматически удаляет массивы, ссылки на которые были "потеряны" в ходе выполнения кода.
  • Наличие базовой библиотеки которая содержит всё необходимое, например математические функции, функции для работы со строками и массивами.




UPD: Пока ещё не сделал справку о том, как это в блице использовать. Она будет чуть позже.

moka 30.11.2012 20:31

Ответ: Skynet++ (Скриптовый язык)
 
Больше на python смахивает смесь с блицем.
Но не вижу никакого влияния java-script'а..

Молодцом!
Есть ли какой-либо дебаггинг?

IgorOK 30.11.2012 20:38

Ответ: Skynet++ (Скриптовый язык)
 
Цитата:

Сообщение от MoKa (Сообщение 245298)
Больше на python смахивает смесь с блицем.
Но не вижу никакого влияния java-script'а..

Молодцом!
Есть ли какой-либо дебаггинг?

Спасибо!:)

Влияние JavaScript-а ограничилось только проверкой результатов работы операторов с разными типами данных.:)

Дебаггинга пока толком нет. Есть только вывод синтаксических ошибок и обнаружение конфликтов имён. Надо подумать как его реализовать. Впринципе это возможно.

ffinder 01.12.2012 02:45

Ответ: Skynet++ (Скриптовый язык)
 
Цитата:

Сообщение от IgorOK (Сообщение 245285)
Привет, Булка!
Вдохновлялся JavaScript, Ruby, Python и прочими. В результате получился простой язык без ООП. Подробнее о синтаксисе можно узнать в описании внутри архива.

вот ты клевый чувак, не мог написать нормально, доходчиво:
-что за язык,
-какие у него фичи
-область применения
-можно ли встраивать и куда

и всё это без скачивания и чтения исходников?

Черный крыс 01.12.2012 03:02

Ответ: Skynet++ (Скриптовый язык)
 
1) регистрочуствительность ИМХО лучше.
2) вдохновлятся надо было языком Lua.

Mr_F_ 01.12.2012 03:08

Ответ: Skynet++ (Скриптовый язык)
 
Цитата:

2) вдохновлятся надо было языком Lua.
аргументированно

Randomize 01.12.2012 07:54

Ответ: Skynet++ (Скриптовый язык)
 
Цитата:

Сообщение от Diablo1909 (Сообщение 245335)
2) вдохновлятся надо было языком Lua.

Lua же ужасен

Черный крыс 01.12.2012 08:13

Ответ: Skynet++ (Скриптовый язык)
 
Цитата:

Lua же ужасен
Интересно чем же он вам так не угодил?

ИМХО это лучший скриптовой язык. А модуль Lua JIT 2.0 - делает его одним из самых быстрых.

IgorOK 01.12.2012 10:37

Ответ: Skynet++ (Скриптовый язык)
 
Цитата:

Сообщение от ffinder (Сообщение 245331)
вот ты клевый чувак, не мог написать нормально, доходчиво:
-что за язык,
-какие у него фичи
-область применения
-можно ли встраивать и куда

и всё это без скачивания и чтения исходников?

Пока со временем туговато. Позже сделаю. Там сэмплов 10 штук.))
Коротко:
- функциональное программирование без ООП.
- универсальность в применении, механизм инстансинга, уже подключенная библиотека различных полезных функций, сборщик мусора (для массивов)
- область применения: игры редакторы уровней
- см. пред пункт
Наверное надо было сказать, что написан на чистом блице))

UPD: К фичам забыл добавить возможность загрузки скрипта как напрямую из текста, так и из бинарника.

IgorOK 01.12.2012 11:45

Ответ: Skynet++ (Скриптовый язык)
 
Цитата:

Сообщение от Diablo1909 (Сообщение 245359)
Интересно чем же он вам так не угодил?

ИМХО это лучший скриптовой язык. А модуль Lua JIT 2.0 - делает его одним из самых быстрых.

Вообще сначала именно Луа и вдохновлялся, но потом понял, что на блице подобное делать будет еще сложнее. В результате получилось, что получилось.))

den 01.12.2012 12:33

Ответ: Skynet++ (Скриптовый язык)
 
луа ужасен, питон няша

Черный крыс 01.12.2012 22:41

Ответ: Skynet++ (Скриптовый язык)
 
Цитата:

Сообщение от Randomize (Сообщение 245357)
Lua же ужасен

Цитата:

Сообщение от Den (Сообщение 245376)
луа ужасен, питон няша

Нечего на зеркало пинять коль рожа крива.

Цитата:

Сообщение от IgorOK
Вообще сначала именно Луа и вдохновлялся, но потом понял, что на блице подобное делать будет еще сложнее. В результате получилось, что получилось.))

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

Gector 01.12.2012 23:27

Ответ: Skynet++ (Скриптовый язык)
 
Цитата:

Сообщение от Diablo1909 (Сообщение 245420)
Там же все завязано на таблицах, у которых есть своя "родительская таблица" ( метатаблица ) - таким образом достигается ООП с нефиксированными правилами (Питоны, Макаки и прочие - смывают себя в унитаз от зависти со своими фиксированными правилами ООП). На блице вполне можно такое сотворить.

Только это пустая трата времени.

den 01.12.2012 23:41

Ответ: Skynet++ (Скриптовый язык)
 
Да это не пустая трата времени, это костыли.
А классическое ООП (такое как в С++/C#/Python/Java/etc.) дураки придумывали, таблицами же удобнее.

Randomize 01.12.2012 23:46

Ответ: Skynet++ (Скриптовый язык)
 
Цитата:

Сообщение от Diablo1909 (Сообщение 245359)
ИМХО это лучший скриптовой язык. А модуль Lua JIT 2.0 - делает его одним из самых быстрых.

В плане скриптовости JS мой идеал. Единственный скриптовик который не стесняется своей скриптовой сути. Остальные косят под компилируемые (руби, правда в этом отношении тож молодец)

Черный крыс 01.12.2012 23:48

Ответ: Skynet++ (Скриптовый язык)
 
Цитата:

Сообщение от Den (Сообщение 245432)
Да это не пустая трата времени, это костыли.
А классическое ООП (такое как в С++/C#/Python/Java/etc.) дураки придумывали, таблицами же удобнее.

Согласен, на Lua ООП менее удобное, чем в классических языках, зато LUA ООП более гибкое и предоставляет большую свободу.

IgorOK 02.12.2012 00:47

Ответ: Skynet++ (Скриптовый язык)
 
Цитата:

Сообщение от Diablo1909 (Сообщение 245436)
Согласен, на Lua ООП менее удобное, чем в классических языках, зато LUA ООП более гибкое и предоставляет большую свободу.

Если честно, я подумал и пришел к выводу, что ООП в скриптовике, только для Блиц3Д делать нецелесообразно. Вот например взять GameScript. Автор сделал там даже ООП, но я ни разу не видел чтобы его кто-то использовал. В конечном счете все сводится к банальным проверкам и вызовам функций.

musetdima 02.12.2012 01:43

Ответ: Skynet++ (Скриптовый язык)
 
Шикарная лицензия:D

IgorOK 02.12.2012 07:41

Ответ: Skynet++ (Скриптовый язык)
 
Цитата:

Сообщение от musetdima (Сообщение 245449)
Шикарная лицензия:D

Я пока не изучил какие лицензии вообще бывают. Вообще условия стандартные - главное не выдавать за свою разработку. А так хоть что угодно с ней делай. Можно даже распечатать и съесть.))

Еще была идея сделать ее beerware. )

IgorOK 02.12.2012 23:28

Ответ: Skynet++ (Скриптовый язык)
 
Первый пост обновлён.

moka 03.12.2012 00:09

Ответ: Skynet++ (Скриптовый язык)
 
Цитата:

Сообщение от IgorOK (Сообщение 245557)
Первый пост обновлён.

Хм.. у всех фото-память на 98%, как говориться, найди 5 отличий. А что обновил то? Если те кто его уже читали, не хотят его снова перечитывать, а хотят только инфу - что обновил. Что таким делать?

IgorOK 03.12.2012 12:42

Ответ: Skynet++ (Скриптовый язык)
 
Цитата:

Сообщение от MoKa (Сообщение 245561)

Хм.. у всех фото-память на 98%, как говориться, найди 5 отличий. А что обновил то? Если те кто его уже читали, не хотят его снова перечитывать, а хотят только инфу - что обновил. Что таким делать?

Добавил более подробное описание всех фишек. ffinder вроде об этом говорил.

ant0N 07.12.2012 20:39

Ответ: Skynet++ (Скриптовый язык)
 
Цитата:

Сообщение от Randomize (Сообщение 245435)
В плане скриптовости JS мой идеал. Единственный скриптовик который не стесняется своей скриптовой сути. Остальные косят под компилируемые (руби, правда в этом отношении тож молодец)

Есть Lua, что еще нужно? Какие в нем недостатки?
+ простота
+ скорость
+ гибкость
всякие питоны и рядом не стоят. Единственный конкурент это Squirrel (для крестоманов).

moka 07.12.2012 20:43

Ответ: Skynet++ (Скриптовый язык)
 
Цитата:

Сообщение от ant0N (Сообщение 246033)
Есть Lua, что еще нужно? Какие в нем недостатки?
+ простота
+ скорость
+ гибкость
всякие питоны и рядом не стоят. Единственный конкурент это Squirrel (для крестоманов).

Ты хоть в курсе что такое python?

ant0N 07.12.2012 21:04

Ответ: Skynet++ (Скриптовый язык)
 
Цитата:

Сообщение от MoKa (Сообщение 246034)
Ты хоть в курсе что такое python?

это змея, не?

Черный крыс 07.12.2012 23:32

Ответ: Skynet++ (Скриптовый язык)
 
Цитата:

Сообщение от MoKa (Сообщение 246034)
Ты хоть в курсе что такое python?

Тут дело, в том, что питон немного шире понятия "просто скриптового языка" его применяют немного в других областях. Однако, в плане игрового скриптинга, ЛУА действительно заткнет питон за пупок.

IgorOK 08.12.2012 00:44

Ответ: Skynet++ (Скриптовый язык)
 
Давайте не будем разводить срач про другие скриптовики. Давайте лучше про мой!


moka 08.12.2012 19:11

Ответ: Skynet++ (Скриптовый язык)
 
Цитата:

Сообщение от Diablo1909 (Сообщение 246048)
Тут дело, в том, что питон немного шире понятия "просто скриптового языка" его применяют немного в других областях. Однако, в плане игрового скриптинга, ЛУА действительно заткнет питон за пупок.

Я кодил на обоих, и не вижу почти ни одного сценария что можно сделать н LUA и нельзя на Python и наоборот. Некоторые вещи лучше в LUA, некоторые в Python'е.
Вот нашёл отличнейшую ссылку, почитай: http://lua-users.org/wiki/LuaVersusPython

IgorOK 09.12.2012 00:56

Ответ: Skynet++ (Скриптовый язык)
 
Если кому нибудь здесь ещё интересно... Найден баг при загрузке бинарника.:-) Исправлю в ближайщее время.

IgorOK 11.12.2012 12:42

Ответ: Skynet++ (Скриптовый язык)
 
Баг исправлен. Следующая версия будет доступна после того как будет написана хелп.

Alex_028 27.12.2012 21:30

Ответ: Skynet++ (Скриптовый язык)
 
Надеюсь лицухой не запрещается модифицировать некоторые места в коде вм и компила?
PS: Авторские права сохранятся за автором первоначального движка, просто некоторые вещи хочу под себя подправить.

Gector 27.12.2012 21:47

Ответ: Skynet++ (Скриптовый язык)
 
Цитата:

Сообщение от Alex_028 (Сообщение 247741)
Надеюсь лицухой не запрещается модифицировать некоторые места в коде вм и компила?
PS: Авторские права сохранятся за автором первоначального движка, просто некоторые вещи хочу под себя подправить.

Авторские права говорят только не выдавать оригинальную разработку за собственную (ибо это не красиво). :)

Alex_028 28.12.2012 00:18

Ответ: Skynet++ (Скриптовый язык)
 
Gector
Я вообще это и имел в виду!
Просто изменю исходники в некоторых местах.
Просто если где-нибудь выложу измененный вариант чтоб ко мне потом не было притензий типа "нахрена изменил, ведь все так было круто!"...

IgorOK 28.12.2012 01:10

Ответ: Skynet++ (Скриптовый язык)
 
Цитата:

Сообщение от Alex_028 (Сообщение 247761)
Gector
Я вообще это и имел в виду!
Просто изменю исходники в некоторых местах.
Просто если где-нибудь выложу измененный вариант чтоб ко мне потом не было притензий типа "нахрена изменил, ведь все так было круто!"...

Да ты в файл с лицензией загляни.:-D

Запрещается только выдавать оригинал за своё. В модификации написать, что основано на Skynet++. Дальше можешь её хоть продавать за бешеные тыщи.:)


Alex_028 28.12.2012 01:16

Ответ: Skynet++ (Скриптовый язык)
 
IgorOK
:D
Лицуху ради интереса смотрел)))
Я хочу немного изменить синтаксис в сторону бейсикоподобного. Надеюсь скоро будет справка по всем командам скриптовика и тогда будет проще разобратся что к чему, но по беглому пролистыванию достаточно увидел классного кода))) Так держать! :)))

IgorOK 28.12.2012 11:44

Ответ: Skynet++ (Скриптовый язык)
 
Цитата:

Сообщение от Alex_028 (Сообщение 247765)
IgorOK
:D
Лицуху ради интереса смотрел)))
Я хочу немного изменить синтаксис в сторону бейсикоподобного. Надеюсь скоро будет справка по всем командам скриптовика и тогда будет проще разобратся что к чему, но по беглому пролистыванию достаточно увидел классного кода))) Так держать! :)))

Спасибо! Справку думаю сделать в новогодние каникулы.:)

Кирпи4 01.01.2013 22:11

Ответ: Skynet++ (Скриптовый язык)
 
Скриптовик вообще огонь, всем советую!

Alex_028 09.01.2013 02:40

Ответ: Skynet++ (Скриптовый язык)
 
IgorOK
Как продвигается написание справки?

IgorOK 09.01.2013 11:53

Ответ: Skynet++ (Скриптовый язык)
 
Сегодня буду дописывать после того как переставлю винду. Вообще это дело немного затянется т.к. я думаю сделать ее в html.

IgorOK 21.01.2013 22:22

Ответ: Skynet++ (Скриптовый язык)
 
Справка наполовину готова. Как это я раньше не сообразил использовать Notepad++ ? :)

Осталось только сделать справку по функциям API.

IgorOK 24.01.2013 00:29

Ответ: Skynet++ (Скриптовый язык)
 
Вложений: 1
Готово! Справка в аттаче.
Возможно это не полная версия. Осталось сделать справку по функциям для работы с массивом. Просто я пока ещё размышляю на какие именно функции сделать справку. Есть предположение, что для пользователя можно сделать пару более удобных вариантов.

Randomize 29.01.2013 17:16

Ответ: Skynet++ (Скриптовый язык)
 
А будет версия не для Blitz3D?

IgorOK 30.01.2013 00:11

Ответ: Skynet++ (Скриптовый язык)
 
Цитата:

Сообщение от Randomize (Сообщение 251068)
А будет версия не для Blitz3D?

Других версий пока не планировалось. А под какой нннада?:)

В планах было только перевести справку на английский и зарелизить на blitzbasic.com. Но пока нет времени.

Вообще пока я планировал заняться игрой. :-)

Randomize 30.01.2013 06:35

Ответ: Skynet++ (Скриптовый язык)
 
Цитата:

Сообщение от IgorOK (Сообщение 251119)
Других версий пока не планировалось. А под какой нннада?:)

Ну например лексер/парсер и часть интерпретатора убрать в dll. Чтоб потом можно было использовать где угодно.

IgorOK 30.01.2013 12:10

Ответ: Skynet++ (Скриптовый язык)
 
Цитата:

Сообщение от Randomize (Сообщение 251151)
Ну например лексер/парсер и часть интерпретатора убрать в dll. Чтоб потом можно было использовать где угодно.

Можно. Только займусь этим после игры. Надо ж хоть как то его в деле проверить. :-)

IgorOK 24.02.2013 20:28

Ответ: Skynet++ (Скриптовый язык)
 
В процессе разработки игры была выявлена пара досадных багов (люблю пользоваться copy/paste). Скоро выложу новую версию. Так же исправлена неточность в хэлпе.

IgorOK 28.02.2013 14:12

Ответ: Skynet++ (Скриптовый язык)
 
Была исправлена ещё пара багов компилятора. Сейчас вроде всё в норме.

IgorOK 09.03.2013 22:17

Ответ: Skynet++ (Скриптовый язык)
 
Несмотря на то, что было уже исправлено всё, что известно, следующая версия задержится, до тех пор пока не будет протестирована по полной программе. Буквально сегодня был обнаружен и обезврежен один хитрый жук. А т.к. иногда исправление багов может привести к появленю других, то нужно быть максимально осторожным.:)

Кирпи4 10.03.2013 00:56

Ответ: Skynet++ (Скриптовый язык)
 
Игоряс, портируй на пуряк - и ему цены не будет!

IgorOK 10.03.2013 01:35

Ответ: Skynet++ (Скриптовый язык)
 
Цитата:

Сообщение от Кирпи4 (Сообщение 254547)
Игоряс, портируй на пуряк - и ему цены не будет!

А почему сразу не C++?:)

Кирпи4 10.03.2013 12:58

Ответ: Skynet++ (Скриптовый язык)
 
Да патамуша работы будет в разы меньше, плюс спрос огромный будет - на пургене кроме кривого луа вообще скриптовиков нет

IgorOK 10.03.2013 21:34

Ответ: Skynet++ (Скриптовый язык)
 
Цитата:

Сообщение от Кирпи4 (Сообщение 254585)
Да патамуша работы будет в разы меньше, плюс спрос огромный будет - на пургене кроме кривого луа вообще скриптовиков нет

Это как вариант, но пока, попросту, нет времени.

IgorOK 29.06.2013 16:14

Ответ: Skynet++ (Скриптовый язык)
 
Вложений: 1
Выкладываю последнюю версию скриптовика. Были произведены мелкие (и не очень) багфиксы. В остальном всё без изменений


Часовой пояс GMT +4, время: 20:44.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot