Forth и другие саморасширяющиеся системы программирования Locations of visitors to this page
Текущее время: Пн авг 29, 2016 23:47

...
Google Search
Forth-FAQ Spy Grafic

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




Ответить
Имя пользователя:
Заголовок:
Текст сообщения:
Введите текст вашего сообщения. Длина сообщения в символах не более: 60000

Размер шрифта:
Цвет шрифта
Настройки:
BBCode ВКЛЮЧЕН
[img] ВЫКЛЮЧЕН
[flash] ВЫКЛЮЧЕН
[url] ВКЛЮЧЕН
Смайлики ВЫКЛЮЧЕНЫ
Отключить в этом сообщении BBCode
Не преобразовывать адреса URL в ссылки
Вопрос
Теперь гостю придется вводить здесь пароль. Не от своей учетной записи, а ПАРОЛЬ ДЛЯ ГОСТЯ, получить который можно после регистрации на форуме через ЛС.:
Этот вопрос предназначен для выявления и предотвращения автоматических регистраций.
   

Обзор темы - Преимущества Форта: Самодокументированность кода
Автор Сообщение
  Заголовок сообщения:  Re: Преимущества Форта: Самодокументированность кода  Ответить с цитатой
Victor__v писал(а):
Чтобы понять форт надо быть джедаем :)

Добро пожаловать в кротовую нору :)
Сообщение Добавлено: Сб янв 09, 2016 17:10
  Заголовок сообщения:  Re: Преимущества Форта: Самодокументированность кода  Ответить с цитатой
Чтобы понять форт надо быть джедаем :)
Сообщение Добавлено: Сб янв 09, 2016 16:32
  Заголовок сообщения:  Re: Преимущества Форта: Самодокументированность кода  Ответить с цитатой
KPG писал(а):
P.S. Или так
Код:
10 и 2 сравни больше? ТО ... ИНАЧЕ ... ПРОДОЛЖАЕМ ....

и здесь возникает неоднозначность ситуации что с чем сравниваем (предположение что 10 больше 2-ух)

Код:
10 с 2 сравни больше? тогда ... иначе ... вот:) ....
Сообщение Добавлено: Ср ноя 25, 2015 19:09
  Заголовок сообщения:  Re: Преимущества Форта: Самодокументированность кода  Ответить с цитатой
Пример демонстрирует, что Форт позволяет формировать произвольные контекстные грамматики. :shuffle;
Сообщение Добавлено: Пн ноя 02, 2015 06:33
  Заголовок сообщения:  Re: Преимущества Форта: Самодокументированность кода  Ответить с цитатой
Пример: Рецепт из статьи "Forth is readable"

Статья "Forth is readable" ("Форт читаемый") -- своеобразный ответ на типичную жалобу на Usenet "Форт не читаемый". В ней есть пример самодокументированного кода в виде рецепта.

Оригинал:
Код:
: obatzter
  camembert 250 gramm melt
  limburger 250 gramm squash add
  cream-cheese 125 gramm squash add
  cream 50 ml add
  mustard 1 spoons add
  egg 1 piece chop add
  2 0 DO  onion chop chop chop add  LOOP
  paprika 1 small-spoons add
  beer 4 spoons add
  salt dash add pepper dash add mince ;

Перевод:
Код:
: Обацда \ типичная баварская закуска
  камамбер 250 грамм растопить
  лимбургер 250 грамм раздавить добавить
  сливочный сыр 125 грамм раздавить добавить
  сливки 50 мл добавить
  горчица 1 ложек добавить
  яйцо 1 штук нарезать добавить
  2 0 DO лук нарезать нарезать нарезать добавить LOOP
  паприка 1 маленьких-ложек добавить
  пиво 4 ложки добавить
  соль щепотку добавить перец щепотку добавить взбить ;

Ссылки:
Сообщение Добавлено: Вс ноя 01, 2015 10:54
  Заголовок сообщения:  Re: Преимущества Форта: Самодокументированность кода  Ответить с цитатой
kzagradskiy писал(а):
«Йоду магистра картинкою новостною поставить если, пропущена небудет тема тогда»
Может быть у вас есть свои исправления к исходной фразе?

Правильнее будет:
Код:
Йоду магистра картинкою новостною поставить если, тема пропущена небудет тогда

Действие - это глагол. Соответственно прилагатетельное и существительное - перед ним. Т.е., существительное - это некий объект со свойствами, прилагательное - меняет эти свойства объекта либо кладет константу на стек и объект с константой передаются глаголу.
Сообщение Добавлено: Пн сен 28, 2015 10:57
  Заголовок сообщения:  Re: Преимущества Форта: Самодокументированность кода  Ответить с цитатой
Пример разбора на стеке предложения в обратной польской записи. Из комментариев к статье "Разомнем мозг при помощи Forth?" [ссылка]

«Йоду магистра картинкою новостною поставить если, тема пропущена небудет тогда»

Код:
Йоду            "Йода"
магистра        "магистр Йода"
картинкой       "магистр Йода" "картинка"
новостной       "магистр Йода" "новостная картинка"
поставить       "новостная картинка с магистром Йодой"
если            (bang!) "факт наличия новостной картинки с магистром Йодой"
тема            "тема"
пропущена       "пропущенная тема"
небудет         "не пропущенная тема"
тогда           (bang!) "факт наличия новостной картинки с магистром Йодой" -> "не пропущенная тема"


  1. Смысл выражения понятен сразу (значит не требует комментария)
  2. Выражение разбирается на стеке (может быть реализовано в форт-системе)

P.S. Кстати, этот код можно использовать как задание: "Кто напишет наиболее самодокументированную реализацию лексикона к этому выражению"? Код должен запускаться на любом ANS Форте.

P.P.S. Мне кажется фраза "тема пропущена небудет" не совсем правильна сначала идет слово ("тема"), а потом параметры для него ("пропущена небудет") это не постфикс. Правильнее было бы "пропущена небудет тема". И результат:

«Йоду магистра картинкою новостною поставить если, пропущена небудет тема тогда»

Может быть у вас есть свои исправления к исходной фразе?
Сообщение Добавлено: Вс сен 27, 2015 08:03
  Заголовок сообщения:  Re: Преимущества Форта: Самодокументированность кода  Ответить с цитатой
KPG писал(а):
kzagradskiy писал(а):
P.S. Или так
Код:
10 и 2 сравни больше? ТО ... ИНАЧЕ ... ПРОДОЛЖАЕМ ....

и здесь возникает неоднозначность ситуации что с чем сравниваем (предположение что 10 больше 2-ух)

Так лучше читается. Вместо "ТО" можно написать "ТОГДА". Получится:
Код:
: завтрак
    спешим? 
        ТОГДА   
            овсянка
        ИНАЧЕ   
            яйца
        ЗАТЕМ 
    мытье
;

А если использовать стиль mOlega то можно продолжить в следующем духе.
Код:
ПЕРЕМЕННАЯ посуда
: мытье
    вода включить          ( ...TRUE )
    ОТСЮДА                 ( BEGIN )
        посуда взять       ( ...@ )
        его-же протереть   ( DUP... )
        его-же ополоснуть  ( DUP... )
        блестит?
    СНОВА                  ( UNTIL )
    вода выключить         ( ...FALSE )
;
ПЕРЕМЕННАЯ яйца            ( VARIABLE... )
: яйца
    ОТСЮДА                 ( BEGIN )
        яйца взять         ( ...@ )
        вареные не-равно   ( ...<> )
    ПОКА                   ( WHILE )
        яйца взять жарить  ( ...@... )
    ПОВТОРЯТЬ              ( REPEAT )
;

В реальном коде получится не так красиво.
Сообщение Добавлено: Сб сен 19, 2015 21:16
  Заголовок сообщения:  Re: Преимущества Форта: Самодокументированность кода  Ответить с цитатой
kzagradskiy писал(а):
Интересно, но не до конца понятно, как будет употребляться. Можешь написать пример реального кода? Если IF --> ТО какое слово заменить на "СРАВНИ"?

Код:
Если 10 больше 2 ТО .... ИНАЧЕ ... ПРОДОЛЖАЕМ ...

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

P.S. Или так
Код:
10 и 2 сравни больше? ТО ... ИНАЧЕ ... ПРОДОЛЖАЕМ ....

и здесь возникает неоднозначность ситуации что с чем сравниваем (предположение что 10 больше 2-ух)
Сообщение Добавлено: Сб сен 19, 2015 19:25
  Заголовок сообщения:  Re: Преимущества Форта: Самодокументированность кода  Ответить с цитатой
KPG писал(а):
Ещё "связок" типа И не хватает :)
Код:
10 и 2 сравни

После сравни ещё потребуется конкретизация условия сравнения.

P.S. Мне вместо IF больше нравится русское слово ТО, а IF тогда становится "пустым" словом-маркёром.
Но со всеми этими словными построениями Форт становится достаточно многословным, увы.
Но, может для объяснения "вычислительным роботам" вполне нормально.

Интересно, но не до конца понятно, как будет употребляться. Можешь написать пример реального кода? Если IF --> ТО какое слово заменить на "СРАВНИ"?
Сообщение Добавлено: Сб сен 19, 2015 19:19
  Заголовок сообщения:  Re: Преимущества Форта: Самодокументированность кода  Ответить с цитатой
Ещё "связок" типа И не хватает :)
Код:
10 и 2 сравни

После сравни ещё потребуется конкретизация условия сравнения.

P.S. Мне вместо IF больше нравится русское слово ТО, а IF тогда становится "пустым" словом-маркёром.
Но со всеми этими словными построениями Форт становится достаточно многословным, увы.
Но, может для объяснения "вычислительным роботам" вполне нормально.
Сообщение Добавлено: Сб сен 19, 2015 18:55
  Заголовок сообщения:  Re: Преимущества Форта: Самодокументированность кода  Ответить с цитатой
kzagradskiy писал(а):
Вот пример:Код:\ \ Стек: его-же DUP ;: другой SWAP

Интересно с точки зрения создания русского диалекта форта,
у меня было:

Код:
: Если  ( flag --> ) [COMPILE] IF ; IMMEDIATE
: Иначе ( --> ) [COMPILE] ELSE ; IMMEDIATE
: Затем ( --> ) [COMPILE] THEN ; IMMEDIATE

: Отсюда ( --> ) [COMPILE] BEGIN ; IMMEDIATE
: Пока ( flag --> ) [COMPILE] WHILE ; IMMEDIATE
: Повторяй ( --> ) [COMPILE] REPEAT ; IMMEDIATE
: Снова ( --> ) [COMPILE] UNTIL ; IMMEDIATE

: Цикл ( up low --> ) [COMPILE] DO ; IMMEDIATE
: Опять ( --> ) [COMPILE] LOOP ; IMMEDIATE
: Покинуть ( --> ) COMPILE LEAVE ; IMMEDIATE

ALIAS TO B
ALIAS FROM ИЗ

ALIAS IS ЭТО   \ ['] обработчик ЭТО Вектор


можно попробовать собрать воедино.
а вот со сложением и прочим, имхо, перебор
значки запоминаются таки на раз
Сообщение Добавлено: Сб сен 19, 2015 18:47
  Заголовок сообщения:  Re: Преимущества Форта: Самодокументированность кода  Ответить с цитатой
<Удалил, т.к. в теме появился mOleg>
Сообщение Добавлено: Сб сен 19, 2015 17:17
  Заголовок сообщения:  Re: Преимущества Форта: Самодокументированность кода  Ответить с цитатой
gudleifr писал(а):
Далась Вам эта постфиксная запись. Она уже десятки лет используется в калькуляторах и никто не жалуется.

На калькуляторах весь алфавит на клавиатуру не вынесешь -- вот и используют то что есть "+ - / *". А если использовать в место них слова, которые в литературной речи, естественным образом, употребляются постфиксно, то программа на Форте станет проще и даже понятнее чем аналогичная на традиционном структурном/объектном языке.

Если с каждым этапом написания кода форт становится "более проблемно-ориентированным" и меньше похожим на исходный форт с его манипулированием со стеком, то почему бы на самом первом этапе не переопределить основные слова форта? Фортом он от этого быть не станет. А потребность в комментариях (которые и так ни кто не делает -- посмотрите исходники SP-Forth и его библиотек).

Хочу попробовать переопределить основные слова -- в основном состоящие из символов и знаков препинания, заменить эти слова во всех исходниках SP-Forth и посмотреть что получится. Может быть и без комментариев станет все понятно.
Сообщение Добавлено: Сб сен 19, 2015 17:00
  Заголовок сообщения:  Re: Преимущества Форта: Самодокументированность кода  Ответить с цитатой
<Удалил, т.к. в теме появился mOleg>
Сообщение Добавлено: Сб сен 19, 2015 16:18

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


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