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
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.