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 мой идеал. Единственный скриптовик который не стесняется своей скриптовой сути. Остальные косят под компилируемые (руби, правда в этом отношении тож молодец)


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

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