Orion - PHP подобный скриптовой движок

open source скриптовой язык Orion (аналог PHP) для freepascal / delphi

Модераторы: devels, Модераторы

Re: Orion - PHP подобный скриптовой движок

Сообщение devels » 24.02.2011 08:55:37

Я сейчас переделываю массивы очень основательно для увеличения производительности, лучше обновить до r216 где еще не было изменений. Сей час проверить не могу.

Добавлено спустя 9 часов 13 минут 59 секунд:
Забыл, надо добавить Use;

Код: Выделить всё
procedure x_your_func(pr: TOriMemoryStack; Return: TOriMemory; eval: Pointer); cdecl;
  var
  i: integer;
  M: TOriMemory;
  ARR,Sub: TOriTable;
begin
     ARR := TOriTable.CreateInManager; // создаем массив в менеджере
     
    for i := 0 to 9 do // добавим 10 элементов в массив
    begin
         M := TOriMemory.GetMemory;
         Sub := TOriTable.CreeateInManager;
         Sub.Use; //  <------------------- говорим что объект используется
            Sub.GetCreateValue('Filename').Val( 'string value' ); // создаем TOriMemory в массиве с ключем и сразу задаем значение...
            Sub.GetCreateValue('Directory').Val(False); // ...
            Sub.GetCreateValue('Filesize').ValL(100); // ...
         
         M.ValTable( Sub ); // задаем значению Массив
         Arr.Add( M ); // добавляем элемент массив
    end;

     Return.ValTable(ARR); // результат функции
end;
devels
постоялец
 
Сообщения: 137
Зарегистрирован: 01.09.2010 12:14:38

Re: Orion - PHP подобный скриптовой движок

Сообщение devels » 28.02.2011 14:29:32

Последние новости:

  • Добавлена поддержка конструкции switch
  • Добавлены волшебные методы __set и __get для классов
  • Добавлены пользовательские свойства с сеттером и геттером (чего нет в php). Свойство может быть только для чтения.
  • Все динамически вызываемые методы стали виртуальными (в пхп нет виртуальных методов), читаем про это здесь http://code.google.com/p/orionphp/wiki/OOP.

Примеры:

Пользовательское свойство:
Код: Выделить всё
// PHP it's not supports

class Ura {

    private $_prop = 40;
   
        function propGet(){ return $this->_prop; }
        function propSet($val){ $this->_prop = $val + 1; }
         
    public prop(get propGet, set propSet);
}

$obj = new Ura;
$y = $obj->prop = 20; // $y assign prop value
$x = $obj->prop;

echo $x,$y;
// выведет 21 и 21



Волшебные сеттеры и геттеры:

Код: Выделить всё
// Magic Properties

class Ura {
    var $props;
   
    function __get($name){
         return $this->props[$name];
    }
   
    function __set($name, $val){
       $this->props[$name] = $val;
    }
}

$obj = new Ura;
$obj->x = 20;
$obj->y = 40;
echo $obj->y + $obj->x;
// выведет 60
devels
постоялец
 
Сообщения: 137
Зарегистрирован: 01.09.2010 12:14:38

Re: Orion - PHP подобный скриптовой движок

Сообщение Maxizar » 01.03.2011 21:50:36

Прочитал тему, еще раз, и нигде не нашел ответ.
А именно
    - реализована передача $this в методы классов.
    - Скобки как в C++ и Php тобишь { }
    - Доступ к свойствам через -> а не через точку… ну и.т.д.
    - присвоение как = а не как := (просто меня все время немного коробит присваение как =, а сравнение как == брррр) :evil:

Почему не наш родной Self. Текстовые метки не через ‘’ а через “”. Как я понял, вы синтаксис делаете как можно ближе к php и C… Почему, (обидно) Я думал, что будет что то вроде этого:
Код: Выделить всё
Writeln(‘Hello World’)

Вместо Echo или Print.
Ну Вы понял про что я?...
Я даже расстроен, а так конечно вы молодец.
А можно не скромный вопрос, сколько Вам лет, сколько вы программируете, какой опыт. Очень интересно, насколько я безнадежен… :cry:
Maxizar
постоялец
 
Сообщения: 385
Зарегистрирован: 20.03.2010 19:48:14

Re: Orion - PHP подобный скриптовой движок

Сообщение Mr.Smart » 01.03.2011 22:05:14

Maxizar это развитие PHP, а он как известно основан на С! Так что ваши претензии не обоснованы!
Mr.Smart
долгожитель
 
Сообщения: 1796
Зарегистрирован: 29.03.2008 01:01:11
Откуда: из леса!

Re: Orion - PHP подобный скриптовой движок

Сообщение Maxizar » 01.03.2011 22:12:14

Mr.Smart писал(а):Maxizar это развитие PHP, а он как известно основан на С! Так что ваши претензии не обоснованы!

Да нет это я знаю, по этому к php вопросов нету... это дело авторов php.

Вопрос как раз про Орион - Он же с нуля написан или я что то не так понял?...
Или делается так чтобы скрипты написанные на php работали на орионе?. Если так, то как то нужно было это обозначить.. (или я пропустил эту строчку, с недосыпа :( )
Maxizar
постоялец
 
Сообщения: 385
Зарегистрирован: 20.03.2010 19:48:14

Re: Orion - PHP подобный скриптовой движок

Сообщение devels » 01.03.2011 22:38:05

Maxizar писал(а):Прочитал тему, еще раз, и нигде не нашел ответ.
А именно
    - реализована передача $this в методы классов.
    - Скобки как в C++ и Php тобишь { }
    - Доступ к свойствам через -> а не через точку… ну и.т.д.
    - присвоение как = а не как := (просто меня все время немного коробит присваение как =, а сравнение как == брррр) :evil:

Почему не наш родной Self. Текстовые метки не через ‘’ а через “”. Как я понял, вы синтаксис делаете как можно ближе к php и C… Почему, (обидно) Я думал, что будет что то вроде этого:
Код: Выделить всё
Writeln(‘Hello World’)

Вместо Echo или Print.
Ну Вы понял про что я?...
Я даже расстроен, а так конечно вы молодец.
А можно не скромный вопрос, сколько Вам лет, сколько вы программируете, какой опыт. Очень интересно, насколько я безнадежен… :cry:



1. Во-первых точку вместо -> использовать нельзя, у точки и так 2 контекста - конкатенация и вещественные числа.
2. Под self уже зарезервировано название текущего класса self::
3. На счет = это дело привычки. В крайнем случае константы отвечающие за символ присваивания можно изменить, но я не рекомендую
4. Ну скобки, я думаю это уже тренд современных языков (c#, java, c++, php).
5. Да и к тому же совместимость с php была задумана изначальна, не полная, но все же. (все таки он очень популярен)
6. Текстовые метки можно ставить и через одинарные кавычки как в паскале.
7. Вам ни что не мешает объявить функцию WriteLn или даже для объявления алиасов есть специальная конструкция:
Код: Выделить всё
   use WriteLn as echo;
   WriteLn('abcd'); // такой же быстрый вызов как и у echo
   


Мне 21+ год, опыт программирования на паскале 4,5 года. Опыт программирования на php 2,5 года.



К тому же сейчас я больше делаю упор на расширение возможностей языка, например сейчас я реализую перегрузку операторов для объектов и другие волшебные методы для объектов.
devels
постоялец
 
Сообщения: 137
Зарегистрирован: 01.09.2010 12:14:38

Re: Orion - PHP подобный скриптовой движок

Сообщение devels » 22.03.2011 14:55:08

Последние новости

+ Доконца реализована поддержка перегрузки для операторов + - * / % . = < > == === >= <= != !==, отрицание
+ Добавлен волшебный метод __invoke для объектов, который позволяет вызывать объекты как функции
+ Добавлена поддержка клонирования объектов - оператор clone, а также волшебный метод __clone, который вызывается после клонирования
+ Добавлены волшебные методы __foreachInit и __foreach для объектов, они позволяют реализовать поведение объекта в foreach цикле.
+ Добавлен оператор приведения объекта к массиву (array)
+ Добавлен класс UTF16String для юникодных строк
+ Добавлены классы CStream и CFileStream для работы с потоками как в freepascal.
+ Добавлены операторы для перегрузки обращения к объекту как к массиву, по индексам - indexNew, indexGet, indexSet
+ Теперь движок умеет контролировать переполнение буфера на своем уровне (например в бесконечных рекурсиях), т.е. больше он не будет падать в таких случаях, а выдаст лишь фатальную ошибку.
+ Добавлены функции serialize, unserialize для сериализации любых значений
+ Добавлены функции print_r и var_dump для удобного вывода любого значения
+ Анонимные функции теперь можно объявлять где угодно - в любом логически-правильно контексте (раньше их можно было только к чему-то приравнять).
+ Добавлено большое количество функций для работы с массивами - compact, extract, array_sum, array_product, array_fill и т.д.


У языка появился официальный сайт и вики: http://orion-lang.org/
devels
постоялец
 
Сообщения: 137
Зарегистрирован: 01.09.2010 12:14:38

Re: Orion - PHP подобный скриптовой движок

Сообщение devels » 08.04.2011 11:37:40

Последние новости:

Самое важно: Сборщик мусора был полностью переделан, теперь нет никаких смарт-поинтеров, сборщик мусора работает на алгоритме пометить-и-подмести (mark & sweep). За счет новой системы сборки мусора некоторые скрипты стали работать в 2-10 раз быстрее (т.к. теперь не тратится время на уменьшение и увеличение счетчика при каждом чихе). Новая система успешно справляется с циклическими ссылками, в отличии от старой.

Также очень важное: Была реализована нормальная работа анонимных функций, теперь их можно вставлять где угодно и как угодно (пришлось переработать парсер и компилятор). К анонимным функциям добавлена поддержка замыканий с синтаксисом php 5.3, но с логикой работы из javascript.

Замыкания...
Код: Выделить всё
function make($count){
    return function() use ($count){
         return $count++;
    }
}

$func = make(10);
echo $func(); // 11
echo $func(); // 12
echo $func(); // 13


Пользовательские свойства
Теперь поддерживаются переменные объекта, а не просто методы класса:

Код: Выделить всё
class My {
    private $_prop;
    public prop(get $_prop, set $_prop);
}
Последний раз редактировалось devels 08.04.2011 12:36:22, всего редактировалось 1 раз.
devels
постоялец
 
Сообщения: 137
Зарегистрирован: 01.09.2010 12:14:38

Re: Orion - PHP подобный скриптовой движок

Сообщение vada » 08.04.2011 12:14:51

У меня на счет пункта 3 большие сомнения. Не очень пригодны скриптовые языки для GUI.
Могу привести в пример свою любимую JAVA. На серверах JAVA прилады рвут в клочья даже программы на Си. (проверено. пиписьками мерялись на LOR). Но вот с GUI... Прослойка виртуализации к оконной системе хозяйской ОС, создает огромные издержки.
Конечно можно заточить Orion на GUI конкретной ОС, но это уже совсем не айс. А как встанет вопрос с мультиплатформеностью, тут вы начнете наступать на детские грабли. Куда они бъют? :)
Аватара пользователя
vada
энтузиаст
 
Сообщения: 691
Зарегистрирован: 14.02.2006 13:43:17

Re: Orion - PHP подобный скриптовой движок

Сообщение devels » 08.04.2011 12:23:20

vada писал(а):У меня на счет пункта 3 большие сомнения. Не очень пригодны скриптовые языки для GUI.
Могу привести в пример свою любимую JAVA. На серверах JAVA прилады рвут в клочья даже программы на Си. (проверено. пиписьками мерялись на LOR). Но вот с GUI... Прослойка виртуализации к оконной системе хозяйской ОС, создает огромные издержки.
Конечно можно заточить Orion на GUI конкретной ОС, но это уже совсем не айс. А как встанет вопрос с мультиплатформеностью, тут вы начнете наступать на детские грабли. Куда они бъют? :)


Что за пункт 3? Я не понимаю, тут столько пунктов уже было. О целесообразности ГУИ - вы не первый человек который про это говорит. На питоне отлично пишут гуи приложения без JIT'а и игры тоже (пример тому http://ru.wikipedia.org/wiki/Construct вся логика на питоне). А Мультиплатформенности на уровне встроенных библиотек в языке хватит, а я просто буду встраивать кросс-библиотеки, которые уже существуют - synapse например и т.п, сам то язык никак от платформы не зависит. ГУИ сам по себе не требует чего-то такого быстрого, порой оптимизированные нативные функции для массивов, строк и т.п. работают также быстро как и в fpc. А например некоторые функции из php - пример - md5 работает быстрее в 3-4 раза чем самая быстрая реализация на delphi/fpc, так что от нативности ничего не зависит.

ГУИ библиотека для ориона будет основана на LCL, и сам скриптовой язык за отрисовку отвечать не будет. В начале я писал про develstudio, где вся логика (90% кода) написана на php, за программой не замечено никаких тормозов, она работает также быстро как и другие программы.
devels
постоялец
 
Сообщения: 137
Зарегистрирован: 01.09.2010 12:14:38

Re: Orion - PHP подобный скриптовой движок

Сообщение vada » 08.04.2011 12:44:24

ГУИ библиотека для ориона будет основана на LCL

Согласен, тогда все ОК. Получается, что какие виджеты поддерживает Lazarus, те и Orion. Мудро.
Аватара пользователя
vada
энтузиаст
 
Сообщения: 691
Зарегистрирован: 14.02.2006 13:43:17

Re: Orion - PHP подобный скриптовой движок

Сообщение devels » 08.04.2011 12:59:35

vada писал(а):
ГУИ библиотека для ориона будет основана на LCL

Согласен, тогда все ОК. Получается, что какие виджеты поддерживает Lazarus, те и Orion. Мудро.


Я похож на мазохиста, который еще и гуи библиотеку с нуля будет писать? :D
devels
постоялец
 
Сообщения: 137
Зарегистрирован: 01.09.2010 12:14:38

Re: Orion - PHP подобный скриптовой движок

Сообщение vada » 08.04.2011 13:08:22

Я похож на мазохиста, который еще и гуи библиотеку с нуля будет писать?

Есть много разных людей :) Кто Вас знает :) Забацать новую реализацию пых-пыха дело не шуточное.
Аватара пользователя
vada
энтузиаст
 
Сообщения: 691
Зарегистрирован: 14.02.2006 13:43:17

Re: Orion - PHP подобный скриптовой движок

Сообщение primus » 05.05.2011 13:06:29

русский проект +1000
но обьясните тем кто в танке(это я)
как так что я не смогу все ваши скрипты реализовать в паcкале(delphi) или у вас много вкраплений asm
исходники ваши не смотрел, до сегодняшнего дня думал что php идеальный язык для работы с базами

p5 tp6.0 tp7.0 turbovision d2 d4 d6
я остановился на десктопе уровень delphi7, специфика работы изменилась с тех пор SCADA+HMI
hmi смещается в сторону клиент серверных приложений вот и решил вспомнить com dcom и sockets
а тут такие перемены думал что достаточно будет выучить синтаксис языка, ан нет php уже на десктоп и с плюшками
чесно говоря меня наверное устроит механизм PDO_ODBC for win 32
primus
незнакомец
 
Сообщения: 1
Зарегистрирован: 05.05.2011 11:52:38

Re: Orion - PHP подобный скриптовой движок

Сообщение Max Rusov » 05.05.2011 14:42:23

primus писал(а):...до сегодняшнего дня думал что php идеальный язык для работы с базами...

??? Я всегда думал, что php - для работы с WEB. А что его делает "идеальным для работы с базами" ?
Max Rusov
постоялец
 
Сообщения: 191
Зарегистрирован: 25.04.2009 15:46:03

Пред.След.

Вернуться в Orion

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0

Рейтинг@Mail.ru
cron