Forth и другие саморасширяющиеся системы программирования Locations of visitors to this page
Текущее время: Чт авг 22, 2019 13:25

...
Google Search
Forth-FAQ Spy Grafic

Часовой пояс: UTC + 3 часа [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 191 ]  На страницу 1, 2, 3, 4, 5 ... 13  След.
Автор Сообщение
 Заголовок сообщения: Что есть Форт?
СообщениеДобавлено: Вт июл 09, 2019 00:35 
Не в сети
Аватара пользователя

Зарегистрирован: Ср июл 03, 2019 11:10
Сообщения: 69
Откуда: Москва
Благодарил (а): 15 раз.
Поблагодарили: 0 раз.
В природе существует огромное количество диалектов/реализаций Форт, какие-то из его потомков окончательно отпочковались от великого и могучего (CAT, PostScript, Factor и т.д.), на другом полюсе расположились разного рода эзотерические недо-Форты (FALSE, Owl и т.д.).

Хотелось бы понять, что считать Фортом? Где грань между недо-Фортом и Фортом с одной стороны, а также между Фортом и уже-не-Фортом с другой?

Можно по шаблону:
Если диалект языка поддерживает/не поддерживает (нужное вписать), то он недостоин называться Фортом/слишком хорош, чтобы называться Фортом.

Прошу прощения, если вопрос уже где-то звучал, но жутко интересно. Особенно хотелось бы услышать мнение старожилов :)

P.S. Варианты "недостоин, если не поддерживает (79/83/ANSI94 и т.д.)" не предлагать :)


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Что есть Форт?
СообщениеДобавлено: Вт июл 09, 2019 01:44 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 6778
Благодарил (а): 16 раз.
Поблагодарили: 109 раз.
И вовсе это не бесполезные разговоры!

Total Vacuum писал(а):
Хотелось бы понять, что считать Фортом? Где грань между недо-Фортом и Фортом с одной стороны, а также между Фортом и уже-не-Фортом с другой?

Причем понимание - это скорее процесс. Можно давать определения, но... "человек есть существо двуногое и бесперое". Это в некоторой степени иллюстрирует бесполезность определений, если на их основе невозможно делать практические выводы. Поэтому если начать разбирать определения и специально обсуждать недостатки конкретных вариантов - будет очень полезно.

Total Vacuum писал(а):
Прошу прощения, если вопрос уже где-то звучал, но жутко интересно. Особенно хотелось бы услышать мнение старожилов

Постоянно звучит :)
Total Vacuum писал(а):
Варианты "недостоин, если не поддерживает (79/83/ANSI94 и т.д.)" не предлагать

Это правильно! :)


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Что есть Форт?
СообщениеДобавлено: Вт июл 09, 2019 11:16 
Не в сети

Зарегистрирован: Пн янв 07, 2013 22:40
Сообщения: 1097
Благодарил (а): 3 раз.
Поблагодарили: 41 раз.
Total Vacuum писал(а):
P.S. Варианты "недостоин, если не поддерживает (79/83/ANSI94 и т.д.)" не предлагать :)

В большей степени так и есть, т.к. в них (стандартах) зафиксированы основные "идеи" наполнения языка,
но обычно по ним Форт язык не учат, а ньюансы понимания берутся, например, из доступных книг. :)

Неформальное описание языка может быть и как у Черезова Слово о Форте. Попытка формализации сути языка

P.S. Прежде всего в Форте есть механизм определяющих слов CREATE ... DOES> (глава 2.5 в книге Баранова С.Н.)
+ 2а стека, словари и набор базовых слов с признаком или без Immediate ...



За это сообщение автора KPG поблагодарил: Total Vacuum
Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Что есть Форт?
СообщениеДобавлено: Вт июл 09, 2019 11:54 
Не в сети

Зарегистрирован: Чт янв 07, 2016 19:14
Сообщения: 880
Благодарил (а): 1 раз.
Поблагодарили: 8 раз.
Что есть форт в 3 словах:
Философский угар программиста

_________________
Цель: сделать 64-битную Нову под Винду


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Что есть Форт?
СообщениеДобавлено: Ср июл 10, 2019 13:30 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 6778
Благодарил (а): 16 раз.
Поблагодарили: 109 раз.
KPG писал(а):
P.S. Прежде всего в Форте есть механизм определяющих слов CREATE ... DOES>

С этим, кстати, интересный момент. CREATE .. DOES> является принципиальным, или это просто следует из вычислительной модели и способа компиляции?


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Что есть Форт?
СообщениеДобавлено: Ср июл 10, 2019 14:22 
Не в сети

Зарегистрирован: Чт янв 07, 2016 19:14
Сообщения: 880
Благодарил (а): 1 раз.
Поблагодарили: 8 раз.
Hishnik писал(а):
KPG писал(а):
P.S. Прежде всего в Форте есть механизм определяющих слов CREATE ... DOES>

С этим, кстати, интересный момент. CREATE .. DOES> является принципиальным, или это просто следует из вычислительной модели и способа компиляции?

Скорее нет, без этого вполне можно жить

_________________
Цель: сделать 64-битную Нову под Винду


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Что есть Форт?
СообщениеДобавлено: Ср июл 10, 2019 14:53 
Не в сети
Аватара пользователя

Зарегистрирован: Ср июл 03, 2019 11:10
Сообщения: 69
Откуда: Москва
Благодарил (а): 15 раз.
Поблагодарили: 0 раз.
KPG писал(а):
CREATE ... DOES>
Соглашусь, что CREATE ... DOES>, пожалуй, одна из главных "фишек" Форта.

С другой стороны, в eForth, например, DOES> отсутствует, но это не мешает ему называться Фортом и быть при этом портированным на кучу разных платформ.

или другой пример

Рассмотрим экзотический урезанный вариант Форта, где есть одно ограничение:
все слова имеют длину 1 символ. Будем использовать только "видимые" символы из нижней половины ASCII-таблицы (т.е. в диапазоне от '!' до '~').
Полный перечень слов: !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~ 0-9 a-z
Каждому из этих слов поставим в соответствие какое-то слово (или несколько) из традиционного Форта:
- слова : ; @ ! + - * / < = > работают в точности как в Форт
- побитовые операции AND, OR и XOR обозначим & | ^ (как в си)
- числа 0-9 и пользовательские слова a-z работают так же, как в Форт, с той лишь разницей, что в урезанном варианте они односимвольные. Слова a-z по-умолчанию (если не переопределены через : ... ; ) ссылаются на буфер размером 1K, их можно использовать в качестве обычных переменных и массивов, специально объявлять их при помощи VARIABLE или CREATE ... CELLS ALLOT не требуется
- "abc" помещает в стек адрес начала строки, а 'c' (можно и 'c) - ASCII-код символа
- разные виды скобок можно использовать для условного оператора и циклов:
{ ~ } вместо IF ... ELSE ... THEN,
( ) вместо IF BEGIN ... 0= UNTIL THEN, а
[ ] вместо DO ... -1 +LOOP
впрочем, можно сделать и так:
{ ~ } вместо IF BEGIN ... 0= UNTIL ELSE ... THEN
( ) и [ ] оставляем для коментариев и переключения режима (как в Форте)
- чтение/запись байта (C@/C!) обозначим , и .
- % используем вместо INCLUDED, ` ` - ассемблерные вставки
- коментарии будут вида \comment\
- стековые операции DUP, SWAP, DROP и PICK обозначим # $ _ ?
Некрасиво получилось с C@/C!, но если это 8-битная версия или если поддержка операций с байтами не требуется, то , . можно использовать как в традиционном Форте. Другой вариант - ,/. использовать для чтения с клавиатуры и печати символа (как в brainfuck).

Т.к. все слова однобайтовые, их можно не разделять пробелами в тексте программы, т.е., например, слово, уменьшающее значение на вершине стека на 1, можно оформить так:
Код:
:d1-;

или так:
Код:
: d\ecrement\ \ n -- n-1 \
   1 -
;

Таким образом получился байт-код для некой виртуальной машины. Примечательно, что такой голый байт-код будет понятен любому программисту, знакомому с Форт. И еще интересный момент: если реализовать, допустим, на ПЛИС процессор, понимающий этот байт-код, то программист и процессор смогут разговаривать на одном языке без посредников в лице компилятора/интерпретатора :)

В теории, т.к. есть ассемблерные вставки, даже на таком чудовищно урезанном диалекте можно реализовать все, вплоть до CREATE ... DOES>

Но можно ли это назвать Фортом?


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Что есть Форт?
СообщениеДобавлено: Ср июл 10, 2019 15:10 
Не в сети

Зарегистрирован: Чт янв 07, 2016 19:14
Сообщения: 880
Благодарил (а): 1 раз.
Поблагодарили: 8 раз.
Chess, перелогинтесь)

_________________
Цель: сделать 64-битную Нову под Винду


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Что есть Форт?
СообщениеДобавлено: Ср июл 10, 2019 15:35 
Не в сети
Аватара пользователя

Зарегистрирован: Ср июл 03, 2019 11:10
Сообщения: 69
Откуда: Москва
Благодарил (а): 15 раз.
Поблагодарили: 0 раз.
Victor__v писал(а):
Chess, перелогинтесь)

Я не Chess, чесслово :D


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Что есть Форт?
СообщениеДобавлено: Ср июл 10, 2019 16:03 
Не в сети

Зарегистрирован: Пн янв 07, 2013 22:40
Сообщения: 1097
Благодарил (а): 3 раз.
Поблагодарили: 41 раз.
Total Vacuum писал(а):
- разные виды скобок можно использовать для условного оператора и циклов:
{ ~ } вместо IF ... ELSE ... THEN,
( ) вместо IF BEGIN ... 0= UNTIL THEN, а
[ ] вместо DO ... -1 +LOOP
впрочем, можно сделать и так:
{ ~ } вместо IF BEGIN ... 0= UNTIL ELSE ... THEN
( ) и [ ] оставляем для коментариев и переключения режима (как в Форте)
- чтение/запись байта (C@/C!) обозначим , и .
- % используем вместо INCLUDED, ` ` - ассемблерные вставки
- коментарии будут вида \comment\

Но можно ли это назвать Фортом?

Нет, нельзя - это Форт подобные языки коих есть достаточное количество Подобно Reda4 или Конканетивные языки
и базовая понимаемость Форт слов человеком должна присутствовать за счёт более привычных слов из программистких реалий (в комбинации из нескольких букв сложнее запутаться ), но и короткие слова Форта тоже вполне приемлемы для соответствуюющих операций, как и например в Си ++ -- @ * ? %
При этом вся база Форт кода сделана именно в базисе приближённом к стандартам языка.
Но, если IDE будет поддерживать автоматическое переключение между разными предпочтениями просмотра и набора вида кода, то почему бы и нет.

P.S. А для общения машин вполне допустимо.
Но, на местном форуме, есть и стэксы (от chess) :)


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Что есть Форт?
СообщениеДобавлено: Ср июл 10, 2019 16:54 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 6778
Благодарил (а): 16 раз.
Поблагодарили: 109 раз.
Total Vacuum писал(а):
Рассмотрим экзотический урезанный вариант Форта, где есть одно ограничение:
все слова имеют длину 1 символ.

Вот что уже хорошо - Форт способствует размышлениям на тему подобных языков.

Скорее это можно именно так и рассматривать - язык, созданный "после вдохновления" Фортом.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Что есть Форт?
СообщениеДобавлено: Чт июл 11, 2019 10:53 
Не в сети

Зарегистрирован: Пн янв 28, 2019 03:10
Сообщения: 53
Благодарил (а): 7 раз.
Поблагодарили: 4 раз.
Цитата:
Таким образом получился байт-код для некой виртуальной машины. Примечательно, что такой голый байт-код будет понятен любому программисту, знакомому с Форт. И еще интересный момент: если реализовать, допустим, на ПЛИС процессор, понимающий этот байт-код, то программист и процессор смогут разговаривать на одном языке без посредников в лице компилятора/интерпретатора :)

Вы, похоже, впечатлились лаконичностью FALSE :)
Формально язык является одновременно и байт-кодом виртуальной машины. На практике, он будет неэффективен хотя бы из-за необходимости во время выполнения разбираться с адресами переходов для условных и циклических операторов. Но такой язык хорош в качестве промежуточного представления при компиляции во что-то менее читаемое человеком, но более пригодное для исполнения машиной (Ой, кажется, мы изобрели LLVM)


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Что есть Форт?
СообщениеДобавлено: Чт июл 11, 2019 19:58 
Не в сети
Аватара пользователя

Зарегистрирован: Ср июл 03, 2019 11:10
Сообщения: 69
Откуда: Москва
Благодарил (а): 15 раз.
Поблагодарили: 0 раз.
KPG писал(а):
Но, на местном форуме, есть и стэксы (от chess) :)


Ткните, пожалуйста, меня носом. Я тут новенький. :D

KPG писал(а):
Нет, нельзя - это Форт подобные языки коих есть достаточное количество Подобно Reda4


Спасибо за интересную ссылку. Радует, что автор использует свое творение в каких-то проектах, а не просто очередной "Форт ради Форта". А вот насчет того, что Reda4 - не Форт, я не уверен. Разве Форт автоматически перестает быть Фортом в тот момент, когда начинает понимать слитное написание вида :name в начале объявлений? Или некоторые другие вещи (#data, нестандартные управляющие конструкции)? Скорее, все это можно отнести к "особенностям реализации". Да и сам автор тут пишет, что ":r4 is a Forth but simpler although not less powerful" (это Форт, просто больной и слабенький). :D Да, это, безусловно, не ANS Forth, но все же... Кстати, интересно, перестали ли одномоментно (сразу после выхода стандарта 94) считаться Фортом многочисленные реализации, которые, естественно, этот стандарт не поддерживали? А, например, новая система, которая поддерживает любой из старых стандартов, может считаться Фортом?

Кстати, в определении слова
Код:
:d1-;
слова разделены пробелами. Просто они маленькие, почти невидимые, но все-таки есть. :D Ведь мы используем только младшую половину ASCII-таблицы, старший бит у нас всегда 0, вот там-то как раз и притаился однобитный пробел. :D Но это, опять же, особенность реализации. :D


Последний раз редактировалось Total Vacuum Чт июл 11, 2019 20:30, всего редактировалось 1 раз.

Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Что есть Форт?
СообщениеДобавлено: Чт июл 11, 2019 20:27 
Не в сети
Аватара пользователя

Зарегистрирован: Ср июл 03, 2019 11:10
Сообщения: 69
Откуда: Москва
Благодарил (а): 15 раз.
Поблагодарили: 0 раз.
zma писал(а):
Вы, похоже, впечатлились лаконичностью FALSE :)


Да, так и есть. Вообще мне нравятся лаконичные языки. Форт тоже можно отнести к таковым, но некоторые вещи угнетают. Например,
Код:
BEGIN ... WHILE ... REPEAT
в сравнении с Си-шным
Код:
while(...){...}

Или
Код:
CREATE ... CELLS ALLOT
вместо
Код:
int s[...];

Такие конструкции в Форте мне почему-то напоминают Паскаль, впрочем, это не мешает мне любить Форт, т.к. любое (даже самое непереопределимое :)) ) слово можно переопределить в любой момент. Вообще, хотелось бы, чтобы наиболее часто используемые конструкции языка записывались предельно кратко.

zma писал(а):
На практике, он будет неэффективен хотя бы из-за необходимости во время выполнения разбираться с адресами переходов для условных и циклических операторов. Но такой язык хорош в качестве промежуточного представления при компиляции во что-то менее читаемое человеком, но более пригодное для исполнения машиной (Ой, кажется, мы изобрели LLVM)
Да, команды перехода вперед, пропуск строк и коментариев, тут много такого, что будет либо медленно работать, либо потребует каких-то нестандартных решений. Конвейейр тут не поможет, т.к. программа на Форте скачет как ошпаренная, она по сути из одних переходов и состоит. Тем интереснее :)


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Что есть Форт?
СообщениеДобавлено: Чт июл 11, 2019 20:35 
Не в сети
Аватара пользователя

Зарегистрирован: Ср июл 03, 2019 11:10
Сообщения: 69
Откуда: Москва
Благодарил (а): 15 раз.
Поблагодарили: 0 раз.
Hishnik писал(а):
Total Vacuum писал(а):
Рассмотрим экзотический урезанный вариант Форта, где есть одно ограничение:
все слова имеют длину 1 символ.

Форт способствует размышлениям...


Не время размышлять, время - действовать! :))


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 191 ]  На страницу 1, 2, 3, 4, 5 ... 13  След.

Часовой пояс: UTC + 3 часа [ Летнее время ]


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2


Вы не можете начинать темы
Вы можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
phpBB сборка от FladeX // Русская поддержка phpBB