Fw: Re: wfl grid

15 messages Options
Embed this post
Permalink
ygrek-3

Fw: Re: wfl grid

Reply Threaded More More options
Print post
Permalink
Привет

 Обсуждение wfl.

Begin forwarded message:

Date: Sat, 9 Jun 2007 21:26:05 +0400
From: Dmitry Yakimov <[hidden email]>
To: ygrek <[hidden email]>
Subject: Re: wfl grid


Привет,

On Thu, 7 Jun 2007 13:27:10 +0300
ygrek <[hidden email]> wrote:

>
> > > 1. Мы в диалоге родителе вынуждены обрабатывать WM_SIZE и
> > > отправлять его grid, можно сделать автоматически как в контроле
> > > splitter. Суть приема в том что grid делает сабклассинг (attach
> > > метод) к родителю, и фильтрует его сообщения в поисках WM_SIZE!
> > > ПОсле обработки сообщение отправляем родителю. (ну и необходимо
> > > смотреть чтобы сообщение которое получаем по сабклассингу точно
> > > принадлежало перехваченному родителю). По WM_NCDESTROY wfl сделает
> > > автоматический detach.
> >
> > Буду смотреть. Очень интересно.
>
> Посмотрел :)
> Что-то мне не нравится делать grid отдельным контролом.
В том то и дело что хочется сделать wfl так чтобы можно было легко
инкапсулировать сущности друг от друга.

> Сразу
> вылезли какие-то глюки в GL-контроле, перестал отрисовываться. Хотя
> может я что-то неправильно сделал.. Если бы можно было вклиниться в
> обработку сообщений не создавай для этого отдельное окно...

> Вообще
>> пока спрятывание внутренностей вполне решается наследованием от
> стандартных контролов - FrameWindow, Dialog, Panel с перегрузкой
> соответствующих сообщений. Но конечно дублирование кода :(

В WTL (есть такая gui либа для с++) сделано интересно -
1. Можно унаследоваться от родителя и перегрузить некоторые его методы
так, что родитель будет вызывать методы потомка. Там сделано через
шаблоны. Хорошо, в wfl это сделано через полиморфизм.
2. Самое важное - там каждый класс это фильтр сообщений. То есть
например у нас есть библиотечный класс CWindow, мы делаем библиотечный
класс CWindowWithHeader и наследуем CMyWindow : CWindowWithHeader :
CWindow. и в CMyWindow мы сообщения которые не отбрабатываем отправляем
родителю - CWindowWithHeader чтобы тот отрисовал header. Таким образом
мы этот CWindowWithHeader можем использовать много раз и в том числе и
для контролов. В wfl это делается через перегрузку метода message:

: message ( lpar wpar msg hwnd -- result )
    DEPTH >R
    OVER [CHAR] W SWAP sendWinMessage 0=
    IF
       inheritWinMessage
    THEN
    DEPTH R> SWAP - 3 =  INVERT S" Wrong data stack size" SUPER abort
;

здесь мы пытаемся послать себе сообщение. и если мы его не обработали
(или сделали вид) то отправляем дальше, но отправляем не по цепочке
классов, а сразу колбеку. то есть в wfl пока этот функционал по
умолчанию отсутствует. А думаю его надо ввести, тогда создание
компонент будет облегчено.

Можно конечно сейчас делать это руками:

: message ( lpar wpar msg hwnd -- n )
    || CWinMessage msg ||
    msg copy INHERIT
    0= IF послать message базовому классу THEN
;

Но и здесь неудобно! У нас нет множественного наследования как в c++.
Например у нас есть grid. Допустим для того чтобы контрол сел в нее
надо его унаследовать от объекта класса CGridCell. Но мы не можем
вклинить CGridCell в уже написанную иерархию.

Думаю надо ввести
1. В CWinBaseClass список объектов перехватчиков сообщений,
модифицирующих поведение объекта
2. В message автоматически проходить сначала по ним, потом по списку
родителя.

Это заменит текущий хак с врезкой окна ребенка в очередь сообщений окна
родителя.

В случае с CSplitterController этот класс тогда будет таким
контроллером и будет перехватывать WM_SIZE уже на законных основаниях.

grid тоже будет таким контроллером. И будет перехватывать сообщения
окна родителя контролов. И сам grid будет windowless, будет содержать
только логику. И управлять CGridCell (это уже может быть окном) и окном
внутри CGridCell.

Буду копать в этом направлении.

>
> Предложение - унифицировать поведение create по всему коду,
> сейчас в разных классах у него разная стековая нотация. Сложно
> отслеживать. Например в activex в качестве параметра передаётся
> дополнительная строка. Лучше сделать так - переименовать в
> другое слово и вдобавок определить стандартный create с abort'ом
> внутри. Мне думается сделать в grid-е отложенное создание контролов,
> чтобы grid можно было определять вне класса. Т.е. во время задания
> сетки запоминаются только классы контролов, а потом по сигналу create
> к каждому из них полиморфно делается create. Тут и пригодится
> одинаковый create, а доп. параметры передавать внутри классов-обёрток
> над более общими контролами (например mediaplayer наследовать от
> activex, всё равно к нему надо дополнительные методы делать).
Согласен на 100%, занес в todo.

Вопрос - если запоминать только классы - как проще всего
инициализировать контролы после создания? Например заполнить список или
дерево значениями, задача встречающаяся в каждой программе.

grid штука важная. поверху wtl и grid легко сделать скриптовый gui язык
a la winlib но более продвинутый.

>
> В CWindow#getStrText течёт память - ALLOCATE без FREE

Ага, fixed.

>
> Предлагаю для <= => использовать ~profit/lib/logic.f - уже выделено в
> отдельный файл. Просто лишние isnt unique мельтешат

согласен.

>
> ЗЫ Насчёт ~day/lib/clipboard.f письмо получал? Из-за более строгого
> синтаксиса локалсов не компилится сейчас.

Спасибо, исправил.

>
> --
> ygrek
>

Собственно todo list сейчас такой в wfl:

* модульный перехват сообщений (?)
* унифицировать create
* получение нотификаций от active x компонент (важно, тогда можно
делать интерфейс к программам на html)
* проверить в Win98/95/Wine
* отловить утечки
* resizing framework
* класс тулбара, UI update framework, связать меню и тулбар!
* docking windows/toolbars
* URLLabel проверить где отпустили
* RAD gui (например просто визуальное редактирование диалогов с
генерацией соотв. wfl кода)

p.s. если не против - отправь это в spfdev, пусть народ почитает.

Дмитрий.


--
ygrek


attachment0 (187 bytes) Download Attachment
Andrey Cherezov

Re: Fw: Re: wfl grid

Reply Threaded More More options
Print post
Permalink
Добрый день, ygrek!

Ваше сообщение от 10.06.2007 8:49:
>  Обсуждение wfl.
>  
Эх, вашу бы ложку да к обеду (10 назад при разработке интерфейса Eserv/2
пригодилось бы, тем более что в wfl вошли и небольшие куски моих либ,
написанных в 95-96гг).
А сейчас ведь уже и не пишет никто такие интерфейсы - не только потому,
что "не модно", столько потому, что кроме игр скоро вообще ничего на
локальный компьютер ставить не будут, всё из Сети работает лучше. А Сети
для интерфейса нужен только браузер, который и является тем, определение
чего вы дали в строках ниже:
> grid штука важная. поверху wtl и grid легко сделать скриптовый gui язык
> a la winlib но более продвинутый.
>  
Разве нет?


Andrey Cherezov

Re: Fw: Re: wfl grid

Reply Threaded More More options
Print post
Permalink
Добрый день, Andrey Cherezov!

Ваше сообщение от 11.06.2007 1:16:
> А сейчас ведь уже и не пишет никто такие интерфейсы - не только потому,
> что "не модно", столько потому, что кроме игр скоро вообще ничего на
> локальный компьютер ставить не будут, всё из Сети работает лучше. А Сети
> для интерфейса нужен только браузер, который и является тем, определение
> чего вы дали в строках ниже:
>  
Кстати, вот по теме, смолтолкеры мигрируют в браузер:
http://vistasmalltalk.wordpress.com/
http://vistascript.net/



ygrek-3

Re: Fw: Re: wfl grid

Reply Threaded More More options
Print post
Permalink
In reply to this post by Andrey Cherezov

> А сейчас ведь уже и не пишет никто такие интерфейсы - не только
> потому, что "не модно", столько потому, что кроме игр скоро вообще
> ничего на локальный компьютер ставить не будут, всё из Сети работает
> лучше.

Для меня - нет. Не желаю доверять свои данные Сети...
Ещё локальный веб-интерфейс - возможно. Но до сих пор пробовал
несколько раз и ни разу субьективно не понравилось - нативные
приложения-аналоги гораздо удобнее.

--
ygrek


attachment0 (187 bytes) Download Attachment
Илья Абдрахимов

Re: Fw: Re: wfl grid

Reply Threaded More More options
Print post
Permalink
In reply to this post by Andrey Cherezov
Hello Andrey,

Monday, June 11, 2007, 2:16:50 AM, you wrote:

> Добрый день, ygrek!

> Ваше сообщение от 10.06.2007 8:49:
>>  Обсуждение wfl.
>>  
> Эх, вашу бы ложку да к обеду (10 назад при разработке интерфейса Eserv/2
> пригодилось бы, тем более что в wfl вошли и небольшие куски моих либ,
> написанных в 95-96гг).
> А сейчас ведь уже и не пишет никто такие интерфейсы - не только потому,
Это ты зря! Я пишу.:-)
Правда я базируюсь на либах от ~nn.
> что "не модно", столько потому, что кроме игр скоро вообще ничего на
> локальный компьютер ставить не будут, всё из Сети работает лучше. А Сети
> для интерфейса нужен только браузер, который и является тем, определение
> чего вы дали в строках ниже:
>> grid штука важная. поверху wtl и grid легко сделать скриптовый gui язык
>> a la winlib но более продвинутый.
>>  
> Разве нет?
Остались "сферы" применения, где просто необходимо иметь автономную
софтину (пример: сервисные программы для "всяческих" железяк).


--
Best regards,
 Илья                            mailto:[hidden email]



Andrey Cherezov

Re: Fw: Re: wfl grid

Reply Threaded More More options
Print post
Permalink
Some javascript/style in this post has been disabled (why?)
Добрый день!

Илья Абдрахимов:
Остались "сферы" применения, где просто необходимо иметь автономную
софтину (пример: сервисные программы для "всяческих" железяк).
  
Сервисные программы для всяческих железок тоже уже чаще работают через веб.
Вот уже не найдешь роутера (ADSL,WiFi,NAT,VoIP,какого угодно) без веб-интерфеса, 
например. В Технофортовых железках тоже Ethernet,IP и веб-серверы работают.

ygrek:
Ещё локальный веб-интерфейс - возможно. Но до сих пор пробовал
несколько раз и ни разу субьективно не понравилось - нативные
приложения-аналоги гораздо удобнее.
Ты можешь не замечать, что работаешь с HTML-интерфейсом. Уже много раз приводил
пример: MSN Messenger и Windows Messenger - это на самом деле веб-интерфейсы
(я это давно случайно заметил, когда из-за какой-то проблемы html-файл интерфейса побился
и в окне вылезли html-тэги).

Или вот (стилизация под инсталятор NSIS, но это HTA+acWEB):
aag
Пример складской программы (её спользуют как через веб, так и локально в hta):
sklad

Или вот eChat:
echat
(заказчик просил клонировать iChat, но с XMPP).

Чем не обычные GUI? Но это все HTML.



Илья Абдрахимов

Re: Fw: Re: wfl grid

Reply Threaded More More options
Print post
Permalink
Some javascript/style in this post has been disabled (why?)

Hello Andrey,


Monday, June 11, 2007, 10:12:26 PM, you wrote:


>

Добрый день!




Или вот (стилизация под инсталятор NSIS, но это HTA+acWEB):


Пример складской программы (её спользуют как через веб, так и локально в hta):



Или вот eChat:


(заказчик просил клонировать iChat, но с XMPP).


Чем не обычные GUI? Но это все HTML.

Андрей, а можно в "студию" simple (в составе button, editbox+реакция на нажатие кнопки) пример HTML-интерфейса?




-- 

Best regards,

 Илья                            [hidden email]

Andrey Cherezov

Re: Fw: Re: wfl grid

Reply Threaded More More options
Print post
Permalink
Some javascript/style in this post has been disabled (why?)
Добрый день, Илья Абдрахимов!

Ваше сообщение от 12.06.2007 13:06:

Андрей, а можно в "студию" simple (в составе button, editbox+реакция на нажатие кнопки) пример HTML-интерфейса?

Вот исходник конкретно той страницы мастера настройки, скриншот которой был в предыдущем письме,
там как раз button и editbox (input). Реакция в onclick.

<!-- ------------------------------------------------------- -->
<div class="mainh">
<h4 class="header">Доменное имя сервера</h4>
Введите полное доменное имя вашего сервера. Оно будет использоваться
в SMTP-командах HELO, полях Received в заголовках писем, а также в
ответах на SMTP-команду DATA в тех случаях, когда письма классифицированы
как спам (для "проталкивания" отправителем).

<fieldset style="margin-top: 7px"><legend>Доменное имя:</legend>
<input id="domain" name="Server[HostName]"/>
&nbsp;
<button onclick="ahah('http://www.delosoft.com/acfp/domain/','domain');"
id="btn_auto"
title="Нажмите на эту кнопку для автоматического определения домена.
Если вместо домена появится IP, значит для него не настроен rDNS.">Авто...</button>
</fieldset>

Если вы не уверены, что записать в это поле, то нажмите кнопку "Авто..."
выше - для определения <a href="#" onclick="ahah('http://www.delosoft.com/acfp/iplist/','ip');"
title="Нажмите на эту кнопку для автоматического определения IP">
реального внешнего IP</a> <b id="ip"></b> и соответствующего ему доменного имени
будет выполнен HTTP-запрос к внешнему серверу. Вам нужно будет разрешить
этот запрос в брандмауэре (если он у вас установлен).
<!-- , иначе автоматическое
определение не сработает. -->
<SPAN class="pre">loadIni(setFormValues);</SPAN>
<SPAN class="post">saveIni(nextFormDo);</SPAN>
</div>

<!-- ------------------------------------------------------- -->

Илья Абдрахимов

Re: Fw: Re: wfl grid

Reply Threaded More More options
Print post
Permalink
Some javascript/style in this post has been disabled (why?)

Hello Andrey,


Tuesday, June 12, 2007, 7:23:11 PM, you wrote:


Андрей, а можно в "студию" simple (в составе button, editbox+реакция на нажатие кнопки) пример HTML-интерфейса?

Вот исходник конкретно той страницы мастера настройки, скриншот которой был в предыдущем письме,

там как раз button и editbox (input). Реакция в onclick.


По вопросу и ответ! :-)

Я имел в виду смесь SPF4+HTML ...





-- 

Best regards,

 Илья                            [hidden email]

ygrek-3

Re: Fw: Re: wfl grid

Reply Threaded More More options
Print post
Permalink
In reply to this post by ygrek-3

> > Что-то мне не нравится делать grid отдельным контролом.
>
> В том то и дело что хочется сделать wfl так чтобы можно было легко
> инкапсулировать сущности друг от друга.

Такая печальная история. Реализовываю табы. Помещаю на одну вкладку GL
контрол. Не отображается - хотя процедура рисовки работает и все хэндлы
контекстов корректные. При создании контрола делал 0 SELF CGLControl
create, т.е. родителем выступает главное окно. Если же поставить вместо
SELF обьект TabControl'а, то GL отрисовывается. Отсюда мораль - надо
либо делать grid полноценным окном и всё его содержимое форсировать в
child-контролы этого grid'а (можно например SetParent'ом после
создания), либо для всех контролов-контейнеров предусматривать
исключения, либо всегда требовать кадый табконтрол отедльным классом
наследованным от стандартного (тогда SELF будет указывать то что
надо), либо найти способ отображать GL-окно как есть во вкладке...
Смотрел winlib - там нигде похоже таких заморочек нет и все контролы
принадлежат главному окну.

> Но и здесь неудобно! У нас нет множественного наследования как в c++.
> Например у нас есть grid. Допустим для того чтобы контрол сел в нее
> надо его унаследовать от объекта класса CGridCell. Но мы не можем
> вклинить CGridCell в уже написанную иерархию.

А почему нет множественного наследования - обьединить списки
методов/переменных двух классов - возможно такое? Уже несколько раз
просто просилось.

> Вопрос - если запоминать только классы - как проще всего
> инициализировать контролы после создания? Например заполнить список
> или дерево значениями, задача встречающаяся в каждой программе.

Я опять в раздумьях. Если делать откладываемое создание то вот такая
запись уже проблематична

    CEventButton put -yspan 100 -ymin! S" Min height: 100" -text!
     LAMBDA{ S" button pressed!" ROT => showMessage } -command!

т.к. в момент вызова WinAPI для установки текста контрола само окно
(кнопки) ещё не создано. Можно конечно попытаться отложить этот код, но
стоит ли игра свеч?

--
ygrek


attachment0 (187 bytes) Download Attachment
Andrey Cherezov

Re: Fw: Re: wfl grid

Reply Threaded More More options
Print post
Permalink
In reply to this post by Илья Абдрахимов
Some javascript/style in this post has been disabled (why?)
Добрый день, Илья Абдрахимов!

Ваше сообщение от 12.06.2007 19:03:

Андрей, а можно в "студию" simple (в составе button, editbox+реакция на нажатие кнопки) пример HTML-интерфейса?

Вот исходник конкретно той страницы мастера настройки, скриншот которой был в предыдущем письме,

там как раз button и editbox (input). Реакция в onclick.


По вопросу и ответ! :-)

Я имел в виду смесь SPF4+HTML ...

А там никакой смеси нет. HTML, который я показал, и который собственно и является
интерфейсом, выполняется на клиенте (в браузере), а "реакции" - это вызовы серверного
кода. В данном случае при нажатии на кнопку "Авто" вызывается моя самодельная
AJAX-функция "ahah" (25 строк на JavaScript).
Вызов ahah('http://www.delosoft.com/acfp/domain/','domain') - это получение
страницы http://www.delosoft.com/acfp/domain/ (посмотри, что там :) и вставка в
поле 'domain'. Понятно, что "реакция" на серверной стороне может быть написана
на чем угодно - хоть {CLIENT_NAME} на встроенном в acWEB форте, хоть
<? echo gethostbyaddr($_SERVER['REMOTE_ADDR']); ?> на PHP, в зависимости от
хостинга (в данном случае нужен именно внешний сервер, т.к. детектируется внешний
сетевой интерфейс машины, на которую ставится программа AAG, чей инсталлятор мы
рассматриваем).

При нажатии на кнопку "Дальше" выполняется другой обработчик - saveIni(nextFormDo).
Это тоже самодельная JavaScript-функция, выполняемая в браузере:
function saveIni(fn) {
  postForm('http://localhost:50080/saveIni.e',fn);
}
postForm внутри вызывает все тот же ahah.
В данном случае обращение идет уже в локальному серверу acWEB (который и является
генератором интерфейса как инсталлятора, так и собственно программы).
Внутри saveIni.e форт-программа {GetParams saveIni}.
saveIni - функция определена внутри acWEB (в его OnStartup.rules.txt в данном случае):
: SaveIni ( na nu va vu -- )
  2SWAP IniS!
;
: saveIni
  ['] SaveIni ForEachParam
;
(а IniS! - библиотечная функция из ini.f)

В общем, из "прикладной логики" здесь только одна строка ahah('http://www.delosoft.com/acfp/domain/','domain'),
и HTML-markup формы, а всё остальное встроено во все аналогичные программы, т.е. считай это вариантом wfl :)

ahah() - это фактически RPC между браузером (интерфейсом) и основным кодом.
В eChat используется другой механизм - там форт выдает браузеру непосредственно команды рисования
интерфейса (в одном бесконечно живущем HTTP-потоке) - браузер становится чем-то типа X-Window-сервера :)
Если интересно, расскажу в другом письме.


Dmitry Yakimov-2

Re: Fw: Re: wfl grid

Reply Threaded More More options
Print post
Permalink
In reply to this post by ygrek-3
Привет,

ygrek wrote:

>>> Что-то мне не нравится делать grid отдельным контролом.
>>>      
>> В том то и дело что хочется сделать wfl так чтобы можно было легко
>> инкапсулировать сущности друг от друга.
>>    
>
> Такая печальная история. Реализовываю табы. Помещаю на одну вкладку GL
> контрол. Не отображается - хотя процедура рисовки работает и все хэндлы
> контекстов корректные. При создании контрола делал 0 SELF CGLControl
> create, т.е. родителем выступает главное окно. Если же поставить вместо
> SELF обьект TabControl'а, то GL отрисовывается.
Вроде логично, нужно родителем делать окно которым управляет tab
control, а не главное окно.

> Отсюда мораль - надо
> либо делать grid полноценным окном и всё его содержимое форсировать в
> child-контролы этого grid'а (можно например SetParent'ом после
> создания), либо для всех контролов-контейнеров предусматривать
> исключения, либо всегда требовать кадый табконтрол отедльным классом
> наследованным от стандартного (тогда SELF будет указывать то что
> надо), либо найти способ отображать GL-окно как есть во вкладке...
> Смотрел winlib - там нигде похоже таких заморочек нет и все контролы
> принадлежат главному окну.
>  

Я сейчас делаю рефакторинг wfl - можно будет легально без хаков
регистрироваться для получений сообщений определенного окна.
Таким образом Grid вообще будет не окном, но будет получает сообщения
главного.

Есть какие-либо пожелания на рефакторинг кроме унификации create?

>  
>> Но и здесь неудобно! У нас нет множественного наследования как в c++.
>> Например у нас есть grid. Допустим для того чтобы контрол сел в нее
>> надо его унаследовать от объекта класса CGridCell. Но мы не можем
>> вклинить CGridCell в уже написанную иерархию.
>>    
>
> А почему нет множественного наследования - обьединить списки
> методов/переменных двух классов - возможно такое? Уже несколько раз
> просто просилось.
>  
Сложность hype3 прилично возрастет. Сейчас все в 10 килобайтах.
Хочется сделать проще. Например в object pascal, smalltalk нет
множественного наследия.

А объединять словари можно. Ведь класс это словарь. Хотя бы просто
насоздавать алиасы слов в новом словаре. Так можно хоть 10 словарей
объединить.

>> Вопрос - если запоминать только классы - как проще всего
>> инициализировать контролы после создания? Например заполнить список
>> или дерево значениями, задача встречающаяся в каждой программе.
>>    
>
> Я опять в раздумьях. Если делать откладываемое создание то вот такая
> запись уже проблематична
>
>     CEventButton put -yspan 100 -ymin! S" Min height: 100" -text!
>      LAMBDA{ S" button pressed!" ROT => showMessage } -command!
>
> т.к. в момент вызова WinAPI для установки текста контрола само окно
> (кнопки) ещё не создано. Можно конечно попытаться отложить этот код, но
> стоит ли игра свеч?
>  

А нужно ли делать в стиле winlib? Может будет эффектнее что-то новое
придумать?

Дмитрий.


ygrek-3

Re: Fw: Re: wfl grid

Reply Threaded More More options
Print post
Permalink
 
> Есть какие-либо пожелания на рефакторинг кроме унификации create?

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

> А нужно ли делать в стиле winlib? Может будет эффектнее что-то новое
> придумать?

Основа - обьектная модель wfl. Поверх неё делаются макросы а-ляя
winlib - просто синтаксический сахар. Это сейчас так. Если придумается
более удобные схемы задания интерфейса - её можно будет реализовать на
той же основе.

--
ygrek


attachment0 (187 bytes) Download Attachment
Hard Wisdom-2

Re: Fw: Re: wfl grid

Reply Threaded More More options
Print post
Permalink
In reply to this post by Andrey Cherezov
Hello Andrey,

Wednesday, June 13, 2007, 8:01:16 PM, you wrote:

[skip]
AC> В eChat используется другой механизм - там форт выдает браузеру
AC> непосредственно команды рисования
AC> интерфейса (в одном бесконечно живущем HTTP-потоке) - браузер становится
AC> чем-то типа X-Window-сервера :)
хм, я натыкался на подобного рода реализации... вот симпатичная
система: PicoLisp v2.2.5 - PIco Lisp is not COmmon Lisp
[http://www.software-lab.biz/1024/?download&picoLisp-2.2.5.tgz]
A Succinctness Challenge [http://www.software-lab.de/succ.html]

у автора своеобразный взгляд на окружающее, думаю, он будет интересен
подписчикам (хоть это и не форт). графические библиотеки интерфейса у него
примерно, как ты описываешь, и реализованы, а именно: на страничке
запускается "хост" в ява-апплете и между сервером и клиентом "гуляет"
лисп-код (а не js+html)...... получается действительно что-то вроде интеллектуальной
терминальной системы. имхо, интереснее, чем возня с нативным html и, более того,
допускает несложное портирование под любую другую "платформу".

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

--
Best regards,
 Vladimir                            mailto:[hidden email]



Yuriy Zhilovets

Re: Fw: Re: wfl grid

Reply Threaded More More options
Print post
Permalink
Добрый  день!

>на страничке
>запускается "хост" в ява-апплете и между сервером и клиентом "гуляет"
>лисп-код (а не js+html)...... получается действительно что-то вроде интеллектуальной
>терминальной системы. имхо, интереснее, чем возня с нативным html и, более того,
>допускает несложное портирование под любую другую "платформу".
>  
>
Такие вещи очень удобно писать на Реболе. Язык специально заточен под
формирование ограниченных диалектов (автор пишет, что взял это свойство
из Форта).

Ю. Жиловец