Сколько раз программисты радостно открывали Forth... и с омерзением закрывали...
Давно назрела необходимость ответить на вопрос, почему это происходит.
Без всяких модных манифестов, соплей и слюней...
Чисто по понятиям.
1. Для чего Forth предназначен?
Изначально (автором) - для написания проблемно-ориентированных языков, на которых можно будет легко описать решение задачи (желательно, самим юзером).
Все эти обратные польские записи, стеки, словари и шитые коды - следствие простоты языка и его ориентированности не на вычисления, а на "языкотворчество".
Т.е. имеем A (язык машины), пишем на коленке за неделю F (Forth), затем на нем - P (проблемно-ориентированный язык), отдаем юзеру и тот решает на P свои задачи.
Очевидно: F должен быть максимально прост (если он сравним по сложности с P, то проще сразу P реализовать) и настолько универсален, что его можно создать для любого A. Что и имеем.
Итак - Forth предназначен для сложных задач.
2. Почему его не любят программисты?
А программисты вообще не любят сложных задач.
Они любят простые задачи, которые выглядят сложными для пользователя.
Слложные - тот же геморрой - ни самому посмотреть (взглядом не окинешь), ни другим показать (не поймут).
3. Куда нужно засунуть Forth-процессоры?
Что мы выиграем от того, что A=F? Практически ничего. Вот от A, ориентированного на конкретный P, мы выиграем много.
Часто, наоборот, подходящий F (для конкретного P) проще написать на обычном, а не на Forth-процессоре.
Почему же делают Forth-процессоры? Потому, что это легко. F прост, почему же не сделать-то?
Основная хитрость - Forth не существует в окончательной форме. Это не язык, а средство написания языков. И увековечивать его в железе - глупость.
Не верите? Посмотрите статьи Дейкстры (оказывается, идею Forth предложил он), Мура (автора Forth) и книги Броуди. Можно у меня на страничке (в разделе FOBOS).
