chess писал(а):
Мысль очень проста. Не нужно делать транслятор для того, чтобы он стал как можно проще, логичнее что-ли.
Нужно делать такой транслятор, чтобы программы было писать проще. Это две большие разницы.
Ммм.. А что значит "проще писать"? Довольно эфемерная вещь, о которой говорить и говорить.
chess писал(а):
1. Различные сущности для начала должны обозначаться-именоваться по-разному.
Не вполне соглашусь. Возьмите слово set. Сколько сущностей оно обозначает? Как-то нас это не смущает.
chess писал(а):
2. Ну и в программе должен быть виден контекст решаемых программой задач, а состояние, в котором
находится транслятор не должно быть видно. Реализация пункта 2 следует из реализации пункта 1.
Похоже надо определиться с термином "контекст". Правда его значение зависит от контекста, в котором он упоминается. Далее - мое видение. Контекст в форте - тот список, на который указывает переменная CONTEXT. Или тот список, по которому осуществляется поиск. Или контекстом для данного слова могут являться слова, предшествующие ему. В ЕЯ контекстом вообще, грубо говоря, можно назвать тему разговора. В приложении к форту, наверное, наиболее близкое к тому, что Вы имеете ввиду. Тема программы, другими словами, ее назначение. Разные несколько уровни абстракции и смыслы.
Состояние, в котором находится транслятор, определяется словами : ; [ ] Считать ли это явным указанием на состояние транслятора? А если считать, то как тогда его (состояние) прятать? И зачем?
chess писал(а):
Грубо говоря контекст решаемых задач управляет транслятором, а не программист.
Ваш случай. IMMEDIATES отдельный список. Потому, что имя слова исполняемого выглядит как имя слова компилируемого.
Поиском транслятор определит где какое. А если я захочу компилируемое слово исполнить?
Ну не совсем так. IMMEDIATES версии слов у меня записываются по-другому. IF для комплируемого слова, If для немедленного исполнения. Для исполнения компилируемого слова есть квадратные скобки. Всегда можно договориться как-то обозначать слова немедленного исполнения. Главное, чтобы было не громоздко и коряво. Да хотя бы брать имена в квадратные скобки. Этот вопрос, думаю, следует вынести на голосование общественности.
chess писал(а):
Почему один и тот же код нельзя
использовать и так и так?
Не понял, что имеется ввиду.
chess писал(а):
Кроме того глядя на имя слова давно написанной программы нельзя сказать это слово какое. Опять
влезать в состояние транслятора на момент создания слова - куда это слово поместили в IMMEDIATES или куда еще.
Как-то это вообще не беспокоит. Никогда дискомфорта не вызывало. Хотя Ваши опасения понятны. По моему, эта проблема нивелируется организацией текста программы.
chess писал(а):
Если изначально закладываете в транслятор ущербные решения, то потом в ходе самораскрутки транслятора эти решения купировать будет труднее, чем на начальном этапе.
У Вас есть предложения по решению мучающей Вас проблемы?