Re[15]: Ссылки по Форту
От: Gaperton http://gaperton.livejournal.com
Дата: 14.03.05 16:09
Оценка:
Здравствуйте, DJ KARIES, Вы писали:

DK>Здравствуйте, Gaperton, Вы писали:


G>>Здравствуйте, DJ KARIES, Вы писали:


DK>>>Но, по-моему, Форты никогда не были "взрослыми" компиляторами. Они оригинальны, мощны, но ПРИМИТИВНЫ.

DK>>>И в этом их сила. Всё даётся с трудом, никто за тебя ничего не сделает и не соптимизирует, т.е. так-сказать "НЕ НРАВИТСЯ — НЕ ЮЗАЙ!".
G>>Это так... Но хочется-то чуда
DK>Хочется чуда — используй MSIL. Тот же форт, но вид с попы.
Не получится чуда. Гранульрность загрузки кода — сборка, и сборку нельзя выгружать. Только домен целиком — сразу налетаешь на маршалинг данных (~10x penalty), плюс выгрузка домена дает мемори лик, в случае, если каждый раз при загрузке используются разные сборки (что при нашем скриптинге — типичный сценарий). Вывод — #$%#@^ неюзабельное.

Для скриптинга форева у нас JVM, там гранулярность загрузки — класс, определение которого автоматом подбирается сборщиком мусора, и он выгружается сам, когда не нужен. Но тогда все должно быть написано на Java, а то опять будет попандос на маршалинг. Вот такие дела.
Re[16]: Ссылки по Форту
От: Sinclair Россия https://github.com/evilguest/
Дата: 17.03.05 07:38
Оценка: 8 (3)
Здравствуйте, Gaperton, Вы писали:
DK>>Хочется чуда — используй MSIL. Тот же форт, но вид с попы.
G>Не получится чуда. Гранульрность загрузки кода — сборка, и сборку нельзя выгружать.
G>Только домен целиком — сразу налетаешь на маршалинг данных (~10x penalty), плюс выгрузка домена дает мемори лик, в случае, если каждый раз при загрузке используются разные сборки (что при нашем скриптинге — типичный сценарий). Вывод — #$%#@^ неюзабельное.

G>Для скриптинга форева у нас JVM, там гранулярность загрузки — класс, определение которого автоматом подбирается сборщиком мусора, и он выгружается сам, когда не нужен. Но тогда все должно быть написано на Java, а то опять будет попандос на маршалинг. Вот такие дела.

Ничего. Во втором дотнете появилась специальная возможность емиттить темпорари статик методы. Они, в отличие от сборок, подвергаются GC. Ну и сам емит упрощен — не надо обкладывать емит кода "инкремент параметра" всякими ассемблибилдерами, классбилдерами и методбилдерами.
Так что чудо не за горами.
... << RSDN@Home 1.1.4 beta 4 rev. 347>>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[5]: Ссылки по Форту (веб-сервер на Форте)
От: otrad  
Дата: 02.05.06 20:45
Оценка:
Здравствуйте, DJ KARIES, Вы писали:

DK>Кстати, по моей (Alexey Abramov) наводке, автор (Chris Childers) взялся делать новый проект TetraForth (хе-хе, я придумал бренд ), более комплексный, чем RetroForth.


Взяться-то взялся, а выпустит ли?

DK>А. Ещё ретрофорт юзается как мультиплатформенный веб-сервер (forth-wiki)

DK>Нехилая штучка, сервер в 8 кб, да притом, что в standalone exe-шнике (или dll-ке) видны его же исходники.

А где взять посмотреть? Сам сайт РетроФорта на апачах работает, и его wiki написан на PHP:

>>> GET /wiki/ HTTP/1.1

>>> Host: retroforth.org:80
HTTP/1.1 206 Partial Content
Date: Tue, 02 May 2006 20:22:43 GMT
Server: Apache/2.0.54 (Debian GNU/Linux) PHP/4.3.10-16 mod_perl/1.999.21 Perl/v5.8.4
X-Powered-By: PHP/4.3.10-16

Сравнить:

>>> GET / HTTP/1.1

>>> Host: www.forth.org.ru:80
HTTP/1.1 200 OK (add to script headers)
Server: Eserv/3.6854
Connection: close
Content-Type: text/html
X-Powered-By: ForthScripter/$Id: cgi.f,v 1.25 2004/12/02 02:08:29 spf Exp $

И этот Eserv/3, и ForthScripter — написаны на Форте. Но не на Ретро, конечно, а на русском SP-Forth.
Re[17]: Ссылки по Форту
От: VladGalkin Украина  
Дата: 03.05.06 12:28
Оценка:
Здравствуйте, Sinclair, Вы писали:

S>Ничего. Во втором дотнете появилась специальная возможность емиттить темпорари статик методы. Они, в отличие от сборок, подвергаются GC. Ну и сам емит упрощен — не надо обкладывать емит кода "инкремент параметра" всякими ассемблибилдерами, классбилдерами и методбилдерами.


А можно про это поподробнее и линков кинуть?
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
ДЭ!
Re[5]: Ссылки по Форту
От: VladGalkin Украина  
Дата: 03.05.06 12:31
Оценка:
Здравствуйте, DJ KARIES, Вы писали:

DK>Хотя, Форт — язык для создания прикладных языков...

...Вы не находите господа, что о чём бы ни начали разговор в этом форуме, всё в итоге сводится к DSL.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
ДЭ!
Re[6]: Ссылки по Форту
От: FR  
Дата: 03.05.06 14:30
Оценка:
Здравствуйте, VladGalkin, Вы писали:

VG>Здравствуйте, DJ KARIES, Вы писали:


DK>>Хотя, Форт — язык для создания прикладных языков...

VG>...Вы не находите господа, что о чём бы ни начали разговор в этом форуме, всё в итоге сводится к DSL.

Дык мода
Хотя форт это совсем другая философия, ее современные любители DSL обычно не признают
Re[18]: Ссылки по Форту
От: WolfHound  
Дата: 03.05.06 19:28
Оценка: 4 (1)
Здравствуйте, VladGalkin, Вы писали:

S>>Ничего. Во втором дотнете появилась специальная возможность емиттить темпорари статик методы. Они, в отличие от сборок, подвергаются GC. Ну и сам емит упрощен — не надо обкладывать емит кода "инкремент параметра" всякими ассемблибилдерами, классбилдерами и методбилдерами.


VG>А можно про это поподробнее и линков кинуть?

Смотри System.Reflection.Emit.DynamicMethod
... << RSDN@Home 1.1.4 beta 6a rev. 436>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[6]: Ссылки по Форту (веб-сервер на Форте)
От: DJ KARIES Россия  
Дата: 06.05.06 16:17
Оценка:
Здравствуйте, otrad, Вы писали:

DK>>Кстати, по моей (Alexey Abramov) наводке, автор (Chris Childers) взялся делать новый проект TetraForth (хе-хе, я придумал бренд ), более комплексный, чем RetroForth.


O>Взяться-то взялся, а выпустит ли?

Товарищ RON перехватил идею и сделал "reva" http://ronware.org

O>И этот Eserv/3, и ForthScripter — написаны на Форте. Но не на Ретро, конечно, а на русском SP-Forth.

SP-Forth громоздкий, и из-за стандарта ANSI страдает CAPS-шифтами

...

см. мою поделку http://giref.forthworks.com , зачатки OpenGL-приблуды на основе "ref" — моего потомка RetroForth.
http://dkdens.narod.ru http://giref.forthworks.com
Re[7]: Ссылки по Форту
От: DJ KARIES Россия  
Дата: 06.05.06 16:24
Оценка: 2 (1)
Здравствуйте, FR, Вы писали:

DK>>>Хотя, Форт — язык для создания прикладных языков...

VG>>...Вы не находите господа, что о чём бы ни начали разговор в этом форуме, всё в итоге сводится к DSL.

FR>Дык мода

FR>Хотя форт это совсем другая философия, ее современные любители DSL обычно не признают

Я вот сейчас ваяю конструктор со своим скриптом, редактором формочек, всё это в мскульной БД.

Пример:

Редактор записи вьюшки:
'ViewEditor.rec' uses

'ScriptList_VIEW.rec.form' form

'Form::Show' :
  'Name' dataset.getfield 'text' 'edName' setprop
  'Title' dataset.getfield 'text' 'edTitle' setprop
  'Text' dataset.getfield 'text' 'mText' setprop
;

'btnOK::Click' :
  dataset.edit
  'text' 'edName' getprop 'Name' dataset.setfield
  'text' 'edTitle' getprop 'Title' dataset.setfield
  'text' 'mText' getprop 'Text' dataset.setfield
  dataset.post
  'close' 'Form' call
;

'btnCancel::Click' :
  dataset.newcancel
  'close' 'Form' call
;

'btnDesigner::Click' :
  'text' 'mText' getprop designer.show
  'text' 'mText' setprop
;

'btnTest::Click' :
  'text' 'mText' getprop eval
  'showmodal' 'Form' call drop
;

'edName::Change' :
  'text' 'edName' getprop script.isform
  dup 'enabled' 'btnDesigner' setprop
  'enabled' 'btnTest' setprop
;

'show' 'Form' call


Форма редактора записи вьюшки:
'form' ctrl:
    'Form' 'name' :prop
    'Скрипт' 'text' :prop
    8 'border' :prop
    241 'left' :prop
    107 'top' :prop
    542 'width' :prop
    553 'height' :prop

'label' ctrl:
    '&Имя:' 'text' :prop
    0 'left' :prop
    0 'top' :prop
    520 'width' :prop
    16 'height' :prop
;ctrl

'label' ctrl:
    '&Название:' 'text' :prop
    0 'left' :prop
    40 'top' :prop
    520 'width' :prop
    16 'height' :prop
;ctrl

'label' ctrl:
    '&Текст:' 'text' :prop
    0 'left' :prop
    80 'top' :prop
    520 'width' :prop
    16 'height' :prop
;ctrl

'edit' ctrl:
    'edName' 'name' :prop
    'edName' 'text' :prop
    0 'left' :prop
    16 'top' :prop
    520 'width' :prop
    24 'height' :prop
;ctrl

'edit' ctrl:
    'edTitle' 'name' :prop
    'edTitle' 'text' :prop
    0 'left' :prop
    56 'top' :prop
    520 'width' :prop
    24 'height' :prop
;ctrl

'memo' ctrl:
    'mText' 'name' :prop
    'mText' 'text' :prop
    3 'scrollbars' :prop
    true 'fixedfont' :prop
    0 'left' :prop
    96 'top' :prop
    520 'width' :prop
    376 'height' :prop
;ctrl

'button' ctrl:
    'btnOK' 'name' :prop
    'OK' 'text' :prop
    true 'default' :prop
    352 'left' :prop
    480 'top' :prop
    80 'width' :prop
    24 'height' :prop
;ctrl

'button' ctrl:
    'btnCancel' 'name' :prop
    'Отмена' 'text' :prop
    true 'cancel' :prop
    440 'left' :prop
    480 'top' :prop
    80 'width' :prop
    24 'height' :prop
;ctrl

'button' ctrl:
    'btnDesigner' 'name' :prop
    'Дизайнер' 'text' :prop
    0 'left' :prop
    480 'top' :prop
    64 'width' :prop
    24 'height' :prop
;ctrl

'button' ctrl:
    'btnTest' 'name' :prop
    'Тест' 'text' :prop
    72 'left' :prop
    480 'top' :prop
    64 'width' :prop
    24 'height' :prop
;ctrl

;ctrl


Стековая машина на дельфях.
Пара тысяч строк кода.
Как основной тип данных Variant.
Удобно.
И скорость не особо низкая, т.к. компиляция + вызов не опкодов, а реальных процедур в виде методов объектов.
http://dkdens.narod.ru http://giref.forthworks.com
Re[15]: Ссылки по Форту
От: profiT  
Дата: 04.04.07 14:10
Оценка: 15 (2) +1
Retroforth, Retroforth... Удивительно мне смотреть на его восхваления. Не то чтобы я ошущал какие-то к нему личные неприязни, но, но, но...

Цель я понял так -- "разрушить всё до основанья и новый, лучший, мир построить". То есть те вещи которые они не понимали (принимали), ребята решили выкинуть. Прийти к истокам. Отсюда, видимо и название.

При этом и без того исключительная распылённость фортеров только не снижается а только ещё больше растёт. Ведь даже семейство Retroforth уже довольно обширно: Reva, HelFORTH (с недо-оптимизатором, кстати), 4p, QuickForth, и т.д. и т.п.

И насчёт "идей". Ничего нового там нет. Большинство идей в системах и в их реализациях взяты из концептуальных MachineForth и ColorForth Чака Мура (словари forth и macro, раскладка по регистрам и применение lodsd как drop, ; как EXIT, включение видимости слова во время его определения).

При этом всё богатство всё ещё так и остаётся инструментом не работы, но сублимации и самореализации (хотя и не без исключений в виде иглоточечных внедрений энтузиастов).

По сути, есть только одна форт-система (буду рад узнать что ошибаюсь), применяемая на промышленной основе для программ "из этой жизни" -- SPF. Программы с десяткотысячными аудиториями, соответственно: nnCron и eServ. При этом система больше чем за десятилетие медленно но верно заточилась под нужды программ которые писали на SPF (например, для HTTP/FTP/SNMP/IMAP/ЧЁЕЩЁТАМ-сервера eServ написаны/промышленно-отлажены были доселе не существовавшие в природе Форта средства для работы с протоколами интернета). Это кстати и не очень хорошо, но вот например SPF_DEVEL должен давать некоторое представление.

И для желающих концептуально-пальцы-веером идей, например есть bac4th, ForthML (хотя у этого-то как раз перспективы более чем вдохновляющие для полезных применений за счёт представления исходников в виде XML). Или вот, на днях например, сляпал подключаемой библиотекой к SPF ещё один вариант colorForth'а, нечто среднее между Питоном и Фортом (чисто прикола для). Пример кода для факториала:

fact ( n -- fact(n)
    1 SWAP                \ Ставим аккумулятор на стек внутренней функции
$0 ( acc n )                  \ Метка
    ?DUP 0= if            \ Краевой случай "рекурсии" (он же условие выхода из цикла)
        return
    TUCK * SWAP 1-
    $0 return             \ Это GOTO $0 , по-сути


Генерируемый код (заодно и на результат работы оптимизатора SPF'а посмотрите):

565470 C745FC01000000   MOV     FC [EBP] , # 1
565477 8D6DFC           LEA     EBP , FC [EBP]
56547A 0BC0             OR      EAX , EAX
56547C 7406             JE      565484
56547E 8945FC           MOV     FC [EBP] , EAX
565481 8D6DFC           LEA     EBP , FC [EBP]
565484 0BC0             OR      EAX , EAX
565486 8B4500           MOV     EAX , 0 [EBP]
565489 8D6D04           LEA     EBP , 4 [EBP]
56548C 0F8501000000     JNE     565493 
565492 C3               RET     NEAR
565493 8B5500           MOV     EDX , 0 [EBP]
565496 894500           MOV     0 [EBP] , EAX
565499 8955FC           MOV     FC [EBP] , EDX
56549C F76DFC           IMUL    FC [EBP]
56549F 8B5500           MOV     EDX , 0 [EBP]
5654A2 894500           MOV     0 [EBP] , EAX
5654A5 8D42FF           LEA     EAX , FF [EDX]
5654A8 E9CDFFFFFF       JMP     56547A
Re[17]: Ссылки по Форту
От: Cyberax Марс  
Дата: 04.04.07 23:58
Оценка:
Здравствуйте, Sinclair, Вы писали:

S>Ничего. Во втором дотнете появилась специальная возможность емиттить темпорари статик методы. Они, в отличие от сборок, подвергаются GC.

Маловато будет

Хотя... Для прикладных языков уже можно будет эмулировать ООП, используя те же паттерны, что и для С.
Sapienti sat!
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.