|
Проекты на Blitz3D Обсуждение будущих проектов, демок, набор команды и т.п. |
30.11.2012, 18:48
|
#1
|
Мастер
Регистрация: 26.10.2009
Сообщений: 1,194
Написано 615 полезных сообщений (для 2,209 пользователей)
|
Skynet++ (Скриптовый язык)
Привет, Булка!
Года три назад начал разработку собственного скриптового языка для Blitz3D. Много раз забрасывал его но всё же решил доделать.
О происхождении названия: Это не выпендрёж, просто друзья с которыми я жил в общаге постоянно говорили, что я пишу тот самый "скайнет" из терминатора. Не долго думая решил его назвать так. ++ для того чтобы название было больше похоже на язык программирования. Была даже идея выпустить его 21 декабря.
Вдохновлялся JavaScript, Ruby, Python и прочими. В результате получился простой язык без ООП. Подробнее о синтаксисе можно узнать в описании внутри архива.
Внутри уже подключены некоторые функции (Skynet++ Base Lib.bb), для работы с математикой, строками и массивами. Всё работает достаточно шустро.
Вот. Кому интересно - просьба потестить.
Позволю себе процитировать ReadMe файл (будет включен в следующую версию).
Skynet++ - это скриптовый язык написанный на чистом Blitz3D, без использования сторонних библиотек.
Skynet++ предоставляет гибкое функциональное программирование. Он не содержит ООП, однако в остальном он максимально упрощает процесс написания скриптов. Внутренняя организация виртуальной машины и API, также позволяет очень легко и быстро встроить его в любую программу написанную на Blitz3D.
В первую очередь он ориентирован на тех, кому нужно обеспечить гибкость своей программы посредством выполнения несложных блоков кода.
Ключевые особенности:
- Простой синтаксис. Содержит все знакомые ключевые слова. Некоторые из них изменены, но в целом синтаксис схож с многими другими языками программирования.
- Высокая производительность. Виртуальная машина ориентирована на максимально быстрое выполнение инструкций.
- Динамическая (не строгая) типизация значений переменных.
- Динамические массивы. Вы можете создавать, удалять и добавлять элементы в массивы, используя поставляющиеся в базовой библиотеке функции. А так же передавать массивы в качестве обычных типов данных.
- Встроенный препроцессор.
- Механизм инстансинга. Он позволяет обрабатывать разные наборы данных одним скриптом. Таким образом существенно снижается потребление памяти, т.к. не нужно загружать несколько одинаковых скриптов. Это может быть полезно когда вам, например, нужно обработать поведение искуственного интеллекта в игре. Вместо загрузки скрипта для каждого бота вы просто создаёте объект (инстанс) скрипта поведения.
- Возможность загружать скрипт напрямую из текста в память. Так же присутствует возможность компилировать скрипт в бинарный файл который занимает меньше места на диске и загружается быстрее. Так же компилятор отслеживает возможные синтаксические ошибки и оповещает о конфликтах имён переменных.
- Встроенный сборщик мусора для массивов. Он автоматически удаляет массивы, ссылки на которые были "потеряны" в ходе выполнения кода.
- Наличие базовой библиотеки которая содержит всё необходимое, например математические функции, функции для работы со строками и массивами.
|
UPD: Пока ещё не сделал справку о том, как это в блице использовать. Она будет чуть позже.
Последний раз редактировалось IgorOK, 02.12.2012 в 23:05.
|
(Offline)
|
|
Эти 11 пользователя(ей) сказали Спасибо IgorOK за это полезное сообщение:
|
Arton (30.11.2012), Dependency Walker (29.06.2013), H@NON (30.11.2012), impersonalis (22.09.2015), Mr_F_ (30.11.2012), Nex (30.11.2012), Program23 (01.12.2012), St_AnGer (30.11.2012), tormoz (30.11.2012), Wegox (30.11.2012), Черный крыс (01.12.2012)
|
30.11.2012, 20:31
|
#2
|
.
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений (для 6,863 пользователей)
|
Ответ: Skynet++ (Скриптовый язык)
Больше на python смахивает смесь с блицем.
Но не вижу никакого влияния java-script'а..
Молодцом!
Есть ли какой-либо дебаггинг?
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
30.11.2012, 20:38
|
#3
|
Мастер
Регистрация: 26.10.2009
Сообщений: 1,194
Написано 615 полезных сообщений (для 2,209 пользователей)
|
Ответ: Skynet++ (Скриптовый язык)
Сообщение от MoKa
Больше на python смахивает смесь с блицем.
Но не вижу никакого влияния java-script'а..
Молодцом!
Есть ли какой-либо дебаггинг?
|
Спасибо!
Влияние JavaScript-а ограничилось только проверкой результатов работы операторов с разными типами данных.
Дебаггинга пока толком нет. Есть только вывод синтаксических ошибок и обнаружение конфликтов имён. Надо подумать как его реализовать. Впринципе это возможно.
|
(Offline)
|
|
01.12.2012, 02:45
|
#4
|
Дэвелопер
Регистрация: 10.09.2007
Сообщений: 1,442
Написано 793 полезных сообщений (для 1,460 пользователей)
|
Ответ: Skynet++ (Скриптовый язык)
Сообщение от IgorOK
Привет, Булка!
Вдохновлялся JavaScript, Ruby, Python и прочими. В результате получился простой язык без ООП. Подробнее о синтаксисе можно узнать в описании внутри архива.
|
вот ты клевый чувак, не мог написать нормально, доходчиво:
-что за язык,
-какие у него фичи
-область применения
-можно ли встраивать и куда
и всё это без скачивания и чтения исходников?
|
(Offline)
|
|
01.12.2012, 03:02
|
#5
|
|
Ответ: Skynet++ (Скриптовый язык)
1) регистрочуствительность ИМХО лучше.
2) вдохновлятся надо было языком Lua.
|
|
|
Сообщение было полезно следующим пользователям:
|
|
01.12.2012, 03:08
|
#6
|
Терабайт исходников
Регистрация: 13.09.2008
Сообщений: 3,947
Написано 2,189 полезных сообщений (для 6,051 пользователей)
|
Ответ: Skynet++ (Скриптовый язык)
2) вдохновлятся надо было языком Lua.
|
аргументированно
|
(Offline)
|
|
01.12.2012, 07:54
|
#7
|
[object Object]
Регистрация: 01.08.2008
Адрес: В России
Сообщений: 4,359
Написано 2,473 полезных сообщений (для 6,856 пользователей)
|
Ответ: Skynet++ (Скриптовый язык)
Сообщение от Diablo1909
2) вдохновлятся надо было языком Lua.
|
Lua же ужасен
__________________
Retry, Abort, Ignore? █
Intel Core i7-9700 4.70 Ghz; 64Gb; Nvidia RTX 3070
AMD Ryzen 7 3800X 4.3Ghz; 64Gb; Nvidia 1070Ti
AMD Ryzen 7 1700X 3.4Ghz; 8Gb; AMD RX 570
AMD Athlon II 2.6Ghz; 8Gb; Nvidia GTX 750 Ti
|
(Offline)
|
|
Эти 4 пользователя(ей) сказали Спасибо Randomize за это полезное сообщение:
|
|
01.12.2012, 08:13
|
#8
|
|
Ответ: Skynet++ (Скриптовый язык)
Интересно чем же он вам так не угодил?
ИМХО это лучший скриптовой язык. А модуль Lua JIT 2.0 - делает его одним из самых быстрых.
|
|
|
01.12.2012, 10:37
|
#9
|
Мастер
Регистрация: 26.10.2009
Сообщений: 1,194
Написано 615 полезных сообщений (для 2,209 пользователей)
|
Ответ: Skynet++ (Скриптовый язык)
Сообщение от ffinder
вот ты клевый чувак, не мог написать нормально, доходчиво:
-что за язык,
-какие у него фичи
-область применения
-можно ли встраивать и куда
и всё это без скачивания и чтения исходников?
|
Пока со временем туговато. Позже сделаю. Там сэмплов 10 штук.))
Коротко:
- функциональное программирование без ООП.
- универсальность в применении, механизм инстансинга, уже подключенная библиотека различных полезных функций, сборщик мусора (для массивов)
- область применения: игры редакторы уровней
- см. пред пункт
Наверное надо было сказать, что написан на чистом блице))
UPD: К фичам забыл добавить возможность загрузки скрипта как напрямую из текста, так и из бинарника.
Последний раз редактировалось IgorOK, 01.12.2012 в 11:48.
|
(Offline)
|
|
01.12.2012, 11:45
|
#10
|
Мастер
Регистрация: 26.10.2009
Сообщений: 1,194
Написано 615 полезных сообщений (для 2,209 пользователей)
|
Ответ: Skynet++ (Скриптовый язык)
Сообщение от Diablo1909
Интересно чем же он вам так не угодил?
ИМХО это лучший скриптовой язык. А модуль Lua JIT 2.0 - делает его одним из самых быстрых.
|
Вообще сначала именно Луа и вдохновлялся, но потом понял, что на блице подобное делать будет еще сложнее. В результате получилось, что получилось.))
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
01.12.2012, 12:33
|
#11
|
Дэвелопер
Регистрация: 13.02.2010
Сообщений: 1,645
Написано 620 полезных сообщений (для 2,419 пользователей)
|
Ответ: Skynet++ (Скриптовый язык)
луа ужасен, питон няша
|
(Offline)
|
|
Эти 2 пользователя(ей) сказали Спасибо den за это полезное сообщение:
|
|
01.12.2012, 22:41
|
#12
|
|
Ответ: Skynet++ (Скриптовый язык)
Сообщение от Randomize
Lua же ужасен
|
Сообщение от Den
луа ужасен, питон няша
|
Нечего на зеркало пинять коль рожа крива.
Сообщение от IgorOK
Вообще сначала именно Луа и вдохновлялся, но потом понял, что на блице подобное делать будет еще сложнее. В результате получилось, что получилось.))
|
Там же все завязано на таблицах, у которых есть своя "родительская таблица" ( метатаблица ) - таким образом достигается ООП с нефиксированными правилами (Питоны, Макаки и прочие - смывают себя в унитаз от зависти со своими фиксированными правилами ООП). На блице вполне можно такое сотворить.
|
|
|
Сообщение было полезно следующим пользователям:
|
|
01.12.2012, 23:27
|
#13
|
Легенда
Регистрация: 14.10.2007
Сообщений: 3,878
Написано 2,012 полезных сообщений (для 5,072 пользователей)
|
Ответ: Skynet++ (Скриптовый язык)
Сообщение от Diablo1909
Там же все завязано на таблицах, у которых есть своя "родительская таблица" ( метатаблица ) - таким образом достигается ООП с нефиксированными правилами (Питоны, Макаки и прочие - смывают себя в унитаз от зависти со своими фиксированными правилами ООП). На блице вполне можно такое сотворить.
|
Только это пустая трата времени.
|
(Offline)
|
|
01.12.2012, 23:41
|
#14
|
Дэвелопер
Регистрация: 13.02.2010
Сообщений: 1,645
Написано 620 полезных сообщений (для 2,419 пользователей)
|
Ответ: Skynet++ (Скриптовый язык)
Да это не пустая трата времени, это костыли.
А классическое ООП (такое как в С++/C#/Python/Java/etc.) дураки придумывали, таблицами же удобнее.
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
01.12.2012, 23:46
|
#15
|
[object Object]
Регистрация: 01.08.2008
Адрес: В России
Сообщений: 4,359
Написано 2,473 полезных сообщений (для 6,856 пользователей)
|
Ответ: Skynet++ (Скриптовый язык)
Сообщение от Diablo1909
ИМХО это лучший скриптовой язык. А модуль Lua JIT 2.0 - делает его одним из самых быстрых.
|
В плане скриптовости JS мой идеал. Единственный скриптовик который не стесняется своей скриптовой сути. Остальные косят под компилируемые (руби, правда в этом отношении тож молодец)
__________________
Retry, Abort, Ignore? █
Intel Core i7-9700 4.70 Ghz; 64Gb; Nvidia RTX 3070
AMD Ryzen 7 3800X 4.3Ghz; 64Gb; Nvidia 1070Ti
AMD Ryzen 7 1700X 3.4Ghz; 8Gb; AMD RX 570
AMD Athlon II 2.6Ghz; 8Gb; Nvidia GTX 750 Ti
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 19:42.
|