Что не хватает Форту?

 
1 6 7 8 9 10 15
+
-
edit
 

Gudleifr

втянувшийся

Veden12> интерпретатор попросту непрошибаем (рассчитываю на это).
Это не случай FORTH.

Veden12> Лексический анализатор - да, но не обработка поступающих и поддерживаемых данных.
Почему же? Либо мы можем как-то формализовать закон, управляющий поведением внешних данных, либо ни о какой их обработке речь идти не может.

Veden12> Я правильно понял?
Нет, не "интерпретатор самого форта", а просто FORTH.
 27.027.0
+
-
edit
 

Veden12

втянувшийся
Gudleifr> Это не случай FORTH.
Если интерпретатор/компилятор Форта и интерпретатор проблемно-ориентированного языка (быть может, компилятор в промежуточный байт-код) присутствуют, ничем не ограничены и активно используются на этапе разработки, но начисто отсутствуют в конечном продукте, будет ли использование механизмов Форта неудачным решением?
Veden12>> Лексический анализатор - да, но не обработка поступающих и поддерживаемых данных.
Gudleifr> Почему же? Либо мы можем как-то формализовать закон, управляющий поведением внешних данных, либо ни о какой их обработке речь идти не может.
Структуру, в ячейки которой лексический анализатор (парсер) раскладывает поступающие данных, формализовать можно и нужно. Но вот с их поведением он уже ничего поделать не сможет. Это уже, как я понимаю, задача обработки. Ради неё, собственно, и нужна программа.
 33.0.1750.11733.0.1750.117
+
-
edit
 

Gudleifr

втянувшийся

Veden12> Если интерпретатор/компилятор Форта и интерпретатор проблемно-ориентированного языка... начисто отсутствуют в конечном продукте, будет ли использование механизмов Форта неудачным решением?
Мне кажется, что FORTH гораздо полезнее для задач, где такое удаление просто невозможно.

Veden12> Но вот с их поведением он уже ничего поделать не сможет.
FORTH как раз и позволяет программисту писать только те куски, с которыми можно "что-то поделать". А как их комбинировать с целью обработки - пусть решает пользователь.
 27.027.0
RU Gudleifr #04.03.2014 11:40  @Gudleifr#04.03.2014 00:49
+
-
edit
 

Gudleifr

втянувшийся

P.S.
Gudleifr> Мне кажется, что FORTH гораздо полезнее для задач, где такое удаление просто невозможно.
Видел на днях перевод программы консольного Тетриса с Win32Forth на SPF. Честно "один в один" (правда, diff на эти два 450-строчных файла выдал 700 строк различий).

Встретил кусок описания блоков:
code text
  1. def-brick brick1        S"         "
  2.                         S" ######  "
  3.                         S"   ##    "
  4.                         S"         "

и мое "чувство прекрасного" оскорбилось.
Почему не:
code text
  1. \ Рисование от точки 2,2
  2. 7 bricks: LBDBR LBRR DBRR LBRD RDL LBDR RBDL

Так, ведь, будет по-FORTH-овски! Мини-спец-лексикон! С изящной интерпретацией!

А, нафига?!
Работает? Работает!
Входной язык "законченного продукта" и языком-то назвать трудно.
Так зачем "фортить" внутри?
Для собственного удовлетворения?
Заниматься только такими сложными задачами, осмысление которых требует столь глубоких внутренних диалогов, что приходится изобретать новые языки?
ИМХО, да.
 27.027.0

mak44

новичок
mak44> Был BASIC под SPF. Куда-то пропал.
Нашел
 32.0.1700.10732.0.1700.107
+
-
edit
 

Gudleifr

втянувшийся

mak44>> BASIC под SPF
Да... Это точно в тему: "Что совершенно не нужно Форту?"

Как-то Вас кидает. То FORTH в ОС, то ОС на FORTH, то из BASIC вызвать FORTH, то, опять наоборот...
Переписать все на всем, и будет счастье?
 27.027.0
Это сообщение редактировалось 04.03.2014 в 13:05
RU Gudleifr #04.03.2014 13:03  @Gudleifr#04.03.2014 12:38
+
-
edit
 
+
-
edit
 

mak44

новичок
Gudleifr> То FORTH в ОС, то ОС на FORTH, то из BASIC вызвать FORTH, то, опять наоборот...
Рациональнее сделать ForthOS, а через нее все остальное.
Лично мне BASIC тоже не особо нужен. Для инфиксной записи я использую _INF_. Но тем кто предпочитает синтаксис BASIC, тоже
смогут воспользоваться средствами форт-системы.
Расширение Форта до традиционных языков демонстрирует то, что Форт
принципиально все перекрывает.

Gudleifr> Переписать все на всем, и будет счастье?
В условиях развитой системы микроплатежей, тем кто ничего не хочет знать
кроме BASIC-а , будет предоставлена BasicOS и им не нужно будет знать,
что под ней ForthOS. Все требуемые процедуры будут представлены в basic-виде.
Но энтузиасты это реализовывать не будут.
 32.0.1700.10732.0.1700.107
Это сообщение редактировалось 04.03.2014 в 15:17
+
-
edit
 

Gudleifr

втянувшийся

mak44> В условиях развитой системы микроплатежей, тем кто ничего не хочет знать кроме BASIC-а , будет предоставлена BasicOS и им не нужно будет знать,
Разберитесь, пожалуйста, в определениях: ОС, среда разработки, эмулятор... Это все разные вещи.
 27.027.0
+
-
edit
 

Veden12

втянувшийся
Gudleifr> FORTH как раз и позволяет программисту писать только те куски, с которыми можно "что-то поделать". А как их комбинировать с целью обработки - пусть решает пользователь.
То есть, модули обработки данных нецелесообразно писать на Форте? На чём же тогда?
Сейчас я ещё далёк от реализации интерпретатора проблемно-ориентированного языка. Быть может поэтому главной изюминкой Форта мне видится полностью контролируемая компиляция - возможность точно представлять себе что получится до компиляции, а не пытаться что-то изменить после неё. Это позволяет оптимизировать вручную Форт-программу любого уровня. Я верю, что компилятор Си способен породить в высшей степени оптимальный код если это кросс-компилятор, работающий на суперкомпьютере, но лишь в этом случае. Эффективная оптимизация на Форте этого не требует. И Вы совершенно правы, "FORTH-система послушна и понятна Вам только в том случае, если Вы сами ее написали."
 33.0.1750.14633.0.1750.146

Veden12

втянувшийся
mak44> В условиях развитой системы микроплатежей, тем кто ничего не хочет знать кроме BASIC-а, будет предоставлена BasicOS и им не нужно будет знать, что под ней ForthOS.
Если на Форте написать не BASIC, а Java (не забыв при этом Swing/AWT), тогда может это кого и заинтересует. Особенно, если обойти по быстродействию JVM.
Что касается "микроплатежей", то за деньги люди быстрее всего учатся одному - люто ненавидеть друг друга.
 33.0.1750.14633.0.1750.146
+
-
edit
 

Gudleifr

втянувшийся

Veden12> То есть, модули обработки данных нецелесообразно писать на Форте? На чём же тогда?

Байка. Как-то пришли к программистам бухгалтеры. Принесли цифры для собрания акционеров. Нужна, говорят, красивая компьютерная обертка. Программист запускает модную тогда новинку - Excel - и вбивает цифири. Во весь экран красивая сеточка и жирная красная линия по нулям.
- А где прибыль акционеров?!
- Согласно вашим цифрам - вот! Нулевая.
- Дура ваша машина!

Здесь, тоже самое. Конечно, на FORTH можно написать экспертную систему. И самый главный плюс будет в том, что пользователь сможет управлять процессом: менять логику, подставлять коэффициенты, пробовать новые методы... Программист же выиграет в том, что ему не надо будет предвосхищать все ситуации, в которых пользователь может оказаться.

(Вообще же, я уже где-то писал, что работа программиста (по времени): 10% применения своих знаний и опыта на написание чего-то; и 90% углубления знаний и получения нового опыта, чтобы заставить это что-то работать. Так, что FORTH, прекрасно себя показывающий на этих 90%, полезен почти всегда).

Veden12> Быть может поэтому главной изюминкой Форта мне видится полностью контролируемая компиляция - возможность точно представлять себе что получится до компиляции, а не пытаться что-то изменить после неё.
А при чем тут FORTH? Никогда не смотрел на его с этой стороны.

Veden12> Это позволяет оптимизировать вручную Форт-программу любого уровня.
Ну, как бы, по определению, FORTH очень медленная и избыточная штука. Какой процент от кода составляют кодовые слова (которые только и делают всю работу) по сравнению с шитыми (которые - лишь макросы, переключающие первые)? Компактность FORTH - только от его простоты и отсутствия необходимости включать в код всю ту фигню, без которой многие парадигмы и языки жить не могут.
Еще одна цитата из меня: "Оптимизация, она, все-таки, не в машине, а в желании избегать NP-полных задач".
Я пытаюсь делиться опытом оптимизации на Кошачьем Форуме.
 27.027.0

mak44

новичок
Veden12> Если на Форте написать не BASIC, а Java (не забыв при этом Swing/AWT), тогда может это кого и заинтересует.
Можно и Java. Тем более, что писать необязательно. Есть открытые исходники Java
на Си. Открытые исходники компилятора Си тоже есть. Делаем из компилятора Си конвертер
в постфиксную запись. Постфиксная запись является промежуточным представлением
компилируемой информации. Ну и конвертируем Java на Си в Java на Форте.


Veden12> Что касается "микроплатежей", то за деньги люди быстрее всего учатся одному - люто ненавидеть друг друга.
По этому я и предлагаю коммерческую деятельность переложить на плечи автомата.
В коммунизм не верю. Если ты не будешь зарабатывать тем чем хочешь заниматься,
будешь вынужден зарабатывать тем чем заниматься не хочешь.
Не думаю, что микроплатежные копейки могут повлиять на чьи-нибудь отношения.

Veden12> FORTH-система послушна и понятна Вам только в том случае, если Вы сами ее написали
По сути, я не одной FORTH-системы не написал. Только модифицировал чужие.

Gudleifr> по определению, FORTH очень медленная и избыточная штука
по какому определению? Тест проводили? Чем избыточная?
 2828
+
-
edit
 

Gudleifr

втянувшийся

Gudleifr>> по определению, FORTH очень медленная и избыточная штука
mak44> по какому определению? Тест проводили? Чем избыточная?
Доказательство теоремы Пифагора приводится в книге "Венец астрономического учения" индийского математика XIIв. Бхаскары. Собственно, все доказательство состоит из чертежа. В качестве пояснения фигурирует лишь слово "Смотри!". (В программировании вместо чертежей обычно используются исходники).
 27.027.0
+
-
edit
 

Veden12

втянувшийся
Gudleifr> Конечно, на FORTH можно написать экспертную систему.
Пожалуй, я бы не рискнул делать это на Форте. Разве что предварительно превратив его в LISP. Неужели такую задачу целесообразно решать 100% на Форте?
Gudleifr> Ну, как бы, по определению, FORTH очень медленная и избыточная штука.
IMHO, уже нет. Другие, популярные и активно используемые языки давно обогнали Форт в этом. Даже ассемблер (пример тому - современные прошивки BIOS'ов). Впрочем, если накормить Форт такими же ставшими традиционными толстыми PUSH-POP-бургерами, то он вконец опухнет и ещё сможет взять пальму первенства. :)
Gudleifr> Какой процент от кода составляют кодовые слова (которые только и делают всю работу) по сравнению с шитыми (которые - лишь макросы, переключающие первые)?
Переменный. Форт позволяет программисту самому решать, какие слова будут кодовыми, а какие - шитыми, не накладывая никаких ограничений на принятие решения. Впрочем, одно ограничение всё же есть: если время отладки резко пошло вверх, а прозрачность текста программы - вниз, значит это решение было неверным.
Gudleifr> Компактность FORTH - только от его простоты и отсутствия необходимости включать в код всю ту фигню, без которой многие парадигмы и языки жить не могут.
Это правда.
Gudleifr> Еще одна цитата из меня: "Оптимизация, она, все-таки, не в машине, а в желании избегать NP-полных задач".
То, что оптимизация не в машине - это точно. Человек способен написать "MOV word[L1+1],AX ... L1: MOV AX,0". Даже кросс-компилятор на суперкомпьютере никогда не выйдет за рамки "PUSH ... POP", упустив массу возможностей.
Gudleifr> Я пытаюсь делиться опытом оптимизации на Кошачьем Форуме.
Он ещё жив? Я читал его. Интересно и поучительно.
 33.0.1750.14633.0.1750.146
+
-
edit
 

Gudleifr

втянувшийся

Veden12> Пожалуй, я бы не рискнул делать это на Форте. Разве что предварительно превратив его в LISP. Неужели такую задачу целесообразно решать 100% на Форте?
После 92-го года (свертывание японцами работы над машинами 5-го поколения, т.е. последних экспериментов по обработке знаний) вопрос чисто риторический.

Хотя, есть забавная книжка Таунсенда и Фохта "Проектирование и программная реализация экспертных систем на персональных ЭВМ".
У меня кратко изложены ее FORTH-хитрости: Там, в середине...
 27.027.0

Veden12

втянувшийся
mak44> Тем более, что писать необязательно.
Увы, нет. Иначе сама JVM окажется не Фортом, а интерпретатором того же байт-кода, но более высокого уровня. И будет намного медленнее любых существующих JVM. Это уж точно никому не надо.
mak44> По сути, я не одной FORTH-системы не написал. Только модифицировал чужие.
Кстати, о чужих. К сожалению, я не смог разобраться с SPF. Признаться, меня коробят CATCH-THROW, но всё не так плохо. Всё гораздо хуже. Я не нашёл в исходниках SPF ни строчки ассемблерного кода ядра. Как я понял, примитивы генерируются автоматом с помощью XSLT. Не знаю, что и думать про пакет с исходниками, который, согласно документации в нём же, содержит "полные исходники с комментариями и скриптом для сборки". Ложь. И это самая популярная реализация Форта? Печально.
 33.0.1750.14633.0.1750.146

Kopa

новичок

Veden12> Я не нашёл в исходниках SPF ни строчки ассемблерного кода ядра.
?Может это не тот SPF4 или ... :)
Ассемблерного кода там предостаточно в словах CODE ... END-CODE (в каталоге SRC) а сам Форт код SPF4 "размечен" служебными словами для макро-оптимизатора. Самосборка официальной версии всегда работает. С добавлением поддержки Linux структура SPF4 несколько усложнилась.

P.S. Есть ещё и форк SPF4 (автор mOleg) где оптимизатор отключен и есть ещё концептуальные отличия. Так что не всё так печально, если не захотите разбираться с макро-оптимизатором где
от шитого кода "одни воспоминания"
 
Это сообщение редактировалось 05.03.2014 в 23:43

Veden12

втянувшийся
Veden12>> Я не нашёл в исходниках SPF ни строчки ассемблерного кода ядра.
Kopa> ?Может это не тот SPF4 или ... :)
Kopa> Ассемблерного кода там предостаточно в словах CODE ... END-CODE (в каталоге SRC) а сам Форт код SPF4 "размечен" служебными словами для макро-оптимизатора. Самосборка официальной версии всегда работает. С добавлением поддержки Linux структура SPF4 несколько усложнилась.
spf-4.20.tar.gz (761984 байт)
Все исходники - на Форте (*.f). Скажите, пожалуйста, кто их будет интерпретировать/компилировать?
Как я понимаю, ядро (зародыш Форт-системы) - тот elf, что лежит в корне дистрибутива.
Корректно ли в таком случае называть это "полными исходниками"?
 33.0.1750.14633.0.1750.146

Kopa

новичок

Veden12> Все исходники - на Форте (*.f). Скажите, пожалуйста, кто их будет интерпретировать/компилировать?
А в чём засада? Что Форт сабирает свои исходники и в них может включаться ассемблерный код для используемого процессора согласно стандартных возможностей Форт систем? Есть и сборки SPF когда на выходе получается ассемблерный файл (например для FASM в Kolibri OS), но тут уже могут возникать разные трудности при использовании разных версий SpF4 для получения ассемблерного кода. (в силу особенностей построения SPF4)

Veden12> Как я понимаю, ядро (зародыш Форт-системы) - тот elf, что лежит в корне дистрибутива.
Veden12> Корректно ли в таком случае называть это "полными исходниками"?
А какой исполняемый файл должен быть "зародышем" системы? Не руками же их пересобирать :)
если после пересборки получается необходимый Форт функционал после пересборки.
mak44 пробовал и довольно успешно собирать Win32Forth c помощью SPF4

P.S. С SPF4 работаю в Windows. Какое то "древнее' у Вас понимания возможных схем построения и сборки Форт систем :) Исходники amForth, например, на ассемблере AVR, но есть предположение что "шитые" слова генерирутся отдельной тулзой для генерации "обёрточного" кода используемого ассемблера. А если Форт система "расширена", например от Win32Forth для компиляции Форт для разных контроллеров? А далее уже она генерирует целевые прошивки-программы Форт. (ff303)
 
Это сообщение редактировалось 06.03.2014 в 00:38

Veden12

втянувшийся
Kopa> P.S. С SPF4 работаю в Windows. Какое то "древнее' у Вас понимания возможных схем построения и сборки Форт систем :) Исходники amForth, например, на ассемблере AVR, но есть предположение что "шитые" слова генерирутся отдельной тулзой для генерации "обёрточного" кода используемого ассемблера.
Если предлагаемый дистрибутив не содержит действительно полных прокомментированных исходников ядра Форт-системы на ассемблере (под заявленный процессор или процессоры), а всего лишь бинарник и расширяющие его тексты на Форте, то он совершенно не пригоден для какой-либо разумной оптимизации со стороны программиста и может представлять исключительно академический интерес.

Автоматическая оптимизация, препятствующая ручной, напрочь убивает особенности Форта, делающие его привлекательным для тех, кто программирует железо.
 33.0.1750.14633.0.1750.146
+
-
edit
 

Gudleifr

втянувшийся

Veden12> не пригоден для какой-либо разумной оптимизации со стороны программиста и может представлять исключительно академический интерес.
Эта вечная проблема сводит на нет все мои надежды на то, что фортеры могут договорится на уровне "основных понятий". Либо "основные понятия" все понимают по-своему, либо считают ноу-хау, либо, вообще, отрицают их существование...
- DUP, SWAP работают? Так в чем проблема?
 27.027.0
Это сообщение редактировалось 06.03.2014 в 11:52

mak44

новичок
Veden12> Увы, нет. Иначе сама JVM окажется не Фортом, а интерпретатором того же байт-кода, но более высокого уровня. И будет намного медленнее любых существующих JVM.
Само по себе расположение JVM в области Форта к быстродействию отношение не имеет.
Можно всю Java с JVM представить в ассемблерном виде и скормить Форту.
Мой оптимизатор относительно легко настраивается не конкретную программу.
В качестве JVM может выступать форт-машина (тем самым мы избавились от лишней сущности). Своего рода JIT - компиляция.
Критические по быстродействию процедуры для Жабы могут быть написаны на Форте.
Veden12> Это уж точно никому не надо.
Не надо зарекаться. Форт окружение мажет проявить себя с неожиданной стороны.
Например, словарь форта или шитый код можно использовать в качестве прикладной базы данных.

Veden12> Признаться, меня коробят CATCH-THROW
Это перехват исключительных ситуаций. Например, если надо восстановить
перенаправленный ввод/вывод при возникшей ошибки. Или игнорировать теплый
рестарт системы, если он нежелателен. CATCH отмечает точку перехвата исключительных
ситуаций занося статус точки на стек возвратов и занося уровень стека возвратов в
переменную HANDLER. THROW производить условный переход к точке перехвата исключений.
 32.0.1700.10732.0.1700.107
Это сообщение редактировалось 06.03.2014 в 12:06
+
-
edit
 

Gudleifr

втянувшийся

mak44> Можно всю Java с JVM представить в ассемблерном виде и скормить Форту.
Сколько можно наступать на одни и те же грабли. Если "совместимость" реализуется на уровне наличия полных бинарников, то речь идет не о встраивании, а просто о наличии двух интерпретаторов рядом. С тем же успехом их может быть и десять, и сто... Берешь диск с (ОС-зависимым) инсталлятором и ставишь, ни разу не задав себе вопрос, на каком языке написана ОС... Не Java-ОС, и не BASIC-ОС, и не FORTH-ОС, а просто ОС, на которую (в силу наличия у нее свойств ОС) можно хоть Питон, хоть Эрланг ставить...

mak44> Например, словарь форта или шитый код можно использовать в качестве прикладной базы данных.
С тем же успехом можно использовать и наскальные рисунки.

mak44> Это перехват исключительных ситуаций.
Претензии не заумности реализации, а о плебейском понимании структурного подхода (требующем структуризации обработки ошибок). Кстати, противоречащем идеям Мура.
 27.027.0
+
-
edit
 

Veden12

втянувшийся
Gudleifr> Либо "основные понятия" все понимают по-своему, либо считают ноу-хау, либо, вообще, отрицают их существование...
Gudleifr> - DUP, SWAP работают? Так в чем проблема?
Могу предложить два ответа ответа на этот вопрос:
1. Для одних Форт - язык исключительно высокого уровня, к которому можно свести все наработки на других языках высокого уровня (C++, Java) и вообще всё что ползает по диску. Для других (как для меня) Форт - язык вне уровней, то есть проходящий через все уровни, начиная с уровня ниже ассемблера (неожиданный эффект более прозрачного кода) и заканчивая уровнем выше LISP'а (всего одно слово "СделайЭто!" - куда уж выше).
2. Одни изучают Форт по Семёнову, Броуди (вводная) и решают все задачи одним способом - повышая уровень кода, активно используя шаблоны. Для других (и для меня) Форт - в первую очередь Лёлигер, Родригес, затем Баранов и Ноздрунов. Думаю, тут комментарии излишни. Какие после этого могут быть ограничения?..
Кто прав? Все и никто. Как известно, если истина верна, то верна и истина, ей противоположная.

P.S. Я бы перевёл "Threaded Interpretive Languages" (TIL) на русский язык, но, мне кажется, читать будет некому...
 33.0.1750.14633.0.1750.146
1 6 7 8 9 10 15

в начало страницы | новое
 
Поиск
Настройки
Твиттер сайта
Статистика
Рейтинг@Mail.ru