Прочитал в доке:
Кроме этого, ObjectScript разрешает вызов функции по нулевой ссылке. В этом случае, никакая функция конечно не вызывается. Результат попытки вызова будет null.
А аргументы при таком вызове вычисляются?
сам сайт с документацией, тоже написан на ОС? круто!
он только для веба или еще для чего-то? какие платформы поддерживает?
сложно ли биндится на другие языки?
ну и не мешало бы тесты производительности в сравнении с другими подобными прогнать и афишировать результаты.
вообще реквестирую небольшой FAQ на сайте с такого рода вопросами. Если есть такой, сорри в глаза не бросился.
Я не нашел способа передать массив в сишный код, все методы для работы с массивами оказались скрыты.
Неплохо бы добавить это в примеры, если поддерживается...
tirinox
>> Кроме этого, ObjectScript разрешает вызов функции по нулевой ссылке. В этом случае, никакая функция конечно не вызывается. Результат попытки вызова будет null.
> А аргументы при таком вызове вычисляются?
Да, вычисляются. Проверка на возможность вызова и тип вызова (это может быть, например, создание экземпляра класса) выполняется уже после подготовки аргументов.
респект, конечно.
но те же яйца, только в изометрии.
нужно двигать новые концепты...
я вот все думаю над новой концепцией ооп, ибо наследование для меня давно уже выглядит как-то ущербно и больше похоже на какой-то костыль.
не всем нравятся JavaScript-lua-python подобные языки. мне, например.
Честное слово, лучше бы очередной C++синаксисоподобный язык, мультиплатформенный и быстрый, для геймдева.
А вообще я делал свой визуальный скриптовый язык, так и закинул его, не хватило меня.
Но там все на порядок проще, гораздо меньше исходного кода и заморочек, зато профит от него очевиден (если довести до ума).
Хотя это все может показаться игрушкой в сравнении с настоящим программированием, но на самом деле иногда нужна совсем уж простая логика,
и использовать программиста для этих целей ну совсем уж не обязательно.
а что касается критики - то синтаксический сахар не нужен.. .как уже было сказано: код написанный в стиле синтаксического сахара в одну строчку легко писать, но невозможно поддерживать. write-only. нужно быть проще.
а еще не нравится использование "__". можно придумать гораздо более красивый префикс для специальных функций - любой из знаков "$%&@" будет намного лучше.
а еще лучше без всего - зарезирвированные слова, и все тут
constructor
destructor
operator_plus
operator_minus
...
operator_power (естественнее смотрится не 2**2, а 2^2)
ну или
op_add
op_sub
op_mul
op_div
op_pow
op_and
op_not
op_etc
ну в общем, респект за титанический труд.
желаю, чтобы язык развивался и занимал свою нишу.
жалко, если такой энтузиазм и столько сделанной работы пропадёт даром...
divol13
> сам сайт с документацией, тоже написан на ОС? круто!
Да, сайт написан на ObjectScript. Спасибо!
> он только для веба или еще для чего-то?
ObjectScript - это универсальный язык программирования общего назначения. Его можно использовать для разработки сайтов, написания скриптов, а также встраивать в программы на C++. Например, программа на C++, которая выполняет скрипт на ObjectScript:
#include <objectscript.h> using namespace ObjectScript; int main(int argc, char* argv[]) { OS * os = OS::create( ); // craete ObjectScript instance os->require( "main.os"); // run ObjectScript program os->release( ); // release the ObjectScript instance return 0; }
> какие платформы поддерживает?
Испробовано на Windows, Linux, Android (ARM), x32, x64, да любые платформы.
> ну и не мешало бы тесты производительности в сравнении с другими подобными прогнать и афишировать результаты.
В этой теме тесты производительности уже публиковались, скорость не плохая, сравнимая с lua, согласен, надо еще опубликовать. Скорость работы сайта - довольно хорошая. На сайте http://objectscript.org внизу каждой страницы справа пишется время генерации текущей страницы, например, 9ms (означает 9 миллисекунд). При этом, сайт работает на контролерах, представлениях, виджетах и т.п., т.е. все по-человечески на мой взгляд. Исходники сайта находятся в этом репозитории https://github.com/unitpoint/objectscript.org , а сам сайт можно скачать на локалку и запустить под виндой. Именно так я его и разрабатываю, потом заливаю в репозиторий на гитхабе, а затем делаю git pull на сервере.
При заходе первый раз на страницу, ObjectScript компилирует еще не откомпилированный (или измененный) код в бинарное представление, что увеличивает скорость работы скрипта существенно при заходе на страницу в следующий раз. Это аналог accelerator для PHP и др. подобных расширений. Только в ObjectScript такая возможность уже встроена в язык по умолчанию.
> вообще реквестирую небольшой FAQ
Согласен, FAQ очень нужен, руки дойдут понемногу, обязатеьно буду делать.
/A\
> Я не нашел способа передать массив в сишный код, все методы для работы с массивами оказались скрыты.
В ObjectScript массив (например, [1, 2, 3]) может содержать элементы любых типов, в том числе рекурсивно ссылаться на самого себя. Кроме массивов в OS есть объекты (например, {user="Ivan", age=23}). Для массивов и объектов в OS С++ API существуют функции по чтению, записи, добавлению, удалению свойств (элементов) и обходу коллекции.
Например, обход на С++ некой абстрактной коллекции (объект или массив), который находится на вершине стека, можно сделать так:
Код на С++:
while(os->nextIteratorStep( )){ OS::String key = os->toString( -2); OS::String value = os->toString( -1); // ... pop( 2); }
т.е. при выполнении nextIteratorStep в стек помещается два значения. На вершине стека (индекс: -1) будет само значение, а перед ним (индекс: -2) будет ключ или название свойства. Т.к. ключ (для объекта) может быть любого типа, то программист сам решает, к какому типу его преобразовать. В выше приведенном примере, к строке, можно к числу и т.п.
Кроме этого можно вызывать функции самого массива (реализованные на C++ или OS) из C++ и обрабатывать их результат.
UnitPoint
Небольшой баг на сайте: нельзя открыть свойства в документации, всегда перекидывает на GitHub:

~NucleaR~
> Небольшой баг на сайте: нельзя открыть свойства в документации, всегда перекидывает на GitHub
Огромное спасибо за найденный баг, исправил, теперь эта кнопка строится на css и кликабельна только при наведении курсором.
https://www.google.ca/search?q=objectscript&rlz=1C1LENP_enCA5… =objectscript Название уже взяли
polyfrag
тот что по первой ссылке вроде мертв, а остальные ведут как раз на этот.
UnitPoint
Спасибо за работу! Обязательно попробуем. Так как называться то будет ? Имя то занято не ?
EvilSpirit
> естественнее смотрится не 2**2, а 2^2
В языке есть и тот и др. оператор, см. Побитовые операторы
> а еще не нравится использование "__". можно придумать гораздо более красивый префикс
"__" - стандартный префикс во мн. языках, любой др. на мой взгляд - это те же яйца, только в профиль. В контексте определения свойств вида __get@username и доступа к свойству через @username (вместо this.username) используемый префикс выглядит довольно гармонично. Нет?
> ну в общем, респект за титанический труд. желаю, чтобы язык развивался и занимал свою нишу
Спасибо огромное!
kipar
> тот что по первой ссылке вроде мертв, а остальные ведут как раз на этот.
Да верно.
ksacvet777
> Спасибо за работу! Обязательно попробуем. Так как называться то будет ? Имя то занято не ?
Есть еще "Cache ObjectScript", а ObjectScript вроде свободный, был.
В ObjectScript добавлена новая возможность - блок (в документации на сайте еще не описан), синтаксис @{ ... }. Блок - это набор команд, который можно использовать в любом выражении. Блок в качестве контекства получает текущий this и он может возвращать значение через return. Пример использования (framework/components/UrlManager.os):
parseRequest = function(request){ return request.getParam( @routeVar) || @enablePrettyUrl && @{ for( var _, rule in @rules){ var route, params = rule.parseRequest( this, request) if( route){ _GET.merge( params) return route } } if( "${request.baseUrl}/" != request.url){ request.redirect( request.baseUrl) } } },
UnitPoint
> "__" - стандартный префикс во мн. языках, любой др. на мой взгляд - это те же
> яйца, только в профиль. В контексте определения свойств вида __get@username и
> доступа к свойству через @username (вместо this.username) используемый префикс
> выглядит довольно гармонично. Нет?
никогда не нравилось то, что люди, делая что-то свое, смотрят на плохие решения других, а потом говорят "так заведено".
с моей точки зрения, такое решение в любом языке выглядит ужасно. никогда не мог понять, скольно на самом деле подчеркиваний там ставится.
Тема в архиве.