Автор |
Сообщение |
|
|
Заголовок сообщения: |
Re: Преимущества Форта: Самодокументированность кода |
|
|
Victor__v писал(а): Чтобы понять форт надо быть джедаем Добро пожаловать в кротовую нору
[quote="Victor__v"]Чтобы понять форт надо быть джедаем :)[/quote] Добро пожаловать в кротовую нору :)
|
|
|
|
Добавлено: Сб янв 09, 2016 17:10 |
|
|
|
|
|
Заголовок сообщения: |
Re: Преимущества Форта: Самодокументированность кода |
|
|
Чтобы понять форт надо быть джедаем
Чтобы понять форт надо быть джедаем :)
|
|
|
|
Добавлено: Сб янв 09, 2016 16:32 |
|
|
|
|
|
Заголовок сообщения: |
Re: Преимущества Форта: Самодокументированность кода |
|
|
KPG писал(а): P.S. Или так Код: 10 и 2 сравни больше? ТО ... ИНАЧЕ ... ПРОДОЛЖАЕМ ....
и здесь возникает неоднозначность ситуации что с чем сравниваем (предположение что 10 больше 2-ух) Код: 10 с 2 сравни больше? тогда ... иначе ... вот:) ....
[quote="KPG"]P.S. Или так Код: 10 и 2 сравни больше? ТО ... ИНАЧЕ ... ПРОДОЛЖАЕМ ....
и здесь возникает неоднозначность ситуации что с чем сравниваем (предположение что 10 больше 2-ух)[/quote] [code]10 с 2 сравни больше? тогда ... иначе ... вот:) ....[/code]
|
|
|
|
Добавлено: Ср ноя 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 ложки добавить соль щепотку добавить перец щепотку добавить взбить ; Ссылки: "Forth is readable" на forth-ev.de: [ссылка]
[b]Пример:[/b] Рецепт из статьи "Forth is readable"
Статья "Forth is readable" ("Форт читаемый") -- своеобразный ответ на типичную жалобу на Usenet "Форт не читаемый". В ней есть пример самодокументированного кода в виде рецепта.
Оригинал: [code]: 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 ; [/code] Перевод: [code]: Обацда \ типичная баварская закуска камамбер 250 грамм растопить лимбургер 250 грамм раздавить добавить сливочный сыр 125 грамм раздавить добавить сливки 50 мл добавить горчица 1 ложек добавить яйцо 1 штук нарезать добавить 2 0 DO лук нарезать нарезать нарезать добавить LOOP паприка 1 маленьких-ложек добавить пиво 4 ложки добавить соль щепотку добавить перец щепотку добавить взбить ;[/code] Ссылки: [list]"Forth is readable" на forth-ev.de: [url=http://www.forth-ev.de/wiki/doku.php/en:various:forth_is_readable][ссылка][/url][/list]
|
|
|
|
Добавлено: Вс ноя 01, 2015 10:54 |
|
|
|
|
|
Заголовок сообщения: |
Re: Преимущества Форта: Самодокументированность кода |
|
|
kzagradskiy писал(а): «Йоду магистра картинкою новостною поставить если, пропущена небудет тема тогда» Может быть у вас есть свои исправления к исходной фразе? Правильнее будет: Код: Йоду магистра картинкою новостною поставить если, тема пропущена небудет тогда Действие - это глагол. Соответственно прилагатетельное и существительное - перед ним. Т.е., существительное - это некий объект со свойствами, прилагательное - меняет эти свойства объекта либо кладет константу на стек и объект с константой передаются глаголу.
[quote="kzagradskiy"]«Йоду магистра картинкою новостною поставить если, пропущена небудет тема тогда» Может быть у вас есть свои исправления к исходной фразе?[/quote] Правильнее будет: [code]Йоду магистра картинкою новостною поставить если, тема пропущена небудет тогда[/code] Действие - это глагол. Соответственно прилагатетельное и существительное - перед ним. Т.е., существительное - это некий объект со свойствами, прилагательное - меняет эти свойства объекта либо кладет константу на стек и объект с константой передаются глаголу.
|
|
|
|
Добавлено: Пн сен 28, 2015 10:57 |
|
|
|
|
|
Заголовок сообщения: |
Re: Преимущества Форта: Самодокументированность кода |
|
|
Пример разбора на стеке предложения в обратной польской записи. Из комментариев к статье "Разомнем мозг при помощи Forth?" [ссылка]«Йоду магистра картинкою новостною поставить если, тема пропущена небудет тогда» Код: Йоду "Йода" магистра "магистр Йода" картинкой "магистр Йода" "картинка" новостной "магистр Йода" "новостная картинка" поставить "новостная картинка с магистром Йодой" если (bang!) "факт наличия новостной картинки с магистром Йодой" тема "тема" пропущена "пропущенная тема" небудет "не пропущенная тема" тогда (bang!) "факт наличия новостной картинки с магистром Йодой" -> "не пропущенная тема" - Смысл выражения понятен сразу (значит не требует комментария)
- Выражение разбирается на стеке (может быть реализовано в форт-системе)
P.S. Кстати, этот код можно использовать как задание: "Кто напишет наиболее самодокументированную реализацию лексикона к этому выражению"? Код должен запускаться на любом ANS Форте. P.P.S. Мне кажется фраза "тема пропущена небудет" не совсем правильна сначала идет слово ("тема"), а потом параметры для него ("пропущена небудет") это не постфикс. Правильнее было бы "пропущена небудет тема". И результат: «Йоду магистра картинкою новостною поставить если, пропущена небудет тема тогда» Может быть у вас есть свои исправления к исходной фразе?
Пример разбора на стеке предложения в обратной польской записи. Из комментариев к статье "Разомнем мозг при помощи Forth?" [url=http://habrahabr.ru/post/159351][ссылка][/url]
«Йоду магистра картинкою новостною поставить если, тема пропущена небудет тогда»
[code]Йоду "Йода" магистра "магистр Йода" картинкой "магистр Йода" "картинка" новостной "магистр Йода" "новостная картинка" поставить "новостная картинка с магистром Йодой" если (bang!) "факт наличия новостной картинки с магистром Йодой" тема "тема" пропущена "пропущенная тема" небудет "не пропущенная тема" тогда (bang!) "факт наличия новостной картинки с магистром Йодой" -> "не пропущенная тема"[/code]
[list=1] [*]Смысл выражения понятен сразу (значит не требует комментария) [*]Выражение разбирается на стеке (может быть реализовано в форт-системе)[/list]
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 ) ;
В реальном коде получится не так красиво.
[quote="KPG"][quote="kzagradskiy"] P.S. Или так [code] 10 и 2 сравни больше? ТО ... ИНАЧЕ ... ПРОДОЛЖАЕМ .... [/code] и здесь возникает неоднозначность ситуации что с чем сравниваем (предположение что 10 больше 2-ух)[/quote][/quote] Так лучше читается. Вместо "ТО" можно написать "ТОГДА". Получится: [code] : завтрак спешим? ТОГДА овсянка ИНАЧЕ яйца ЗАТЕМ мытье ; [/code] А если использовать стиль mOlega то можно продолжить в следующем духе. [code] ПЕРЕМЕННАЯ посуда : мытье вода включить ( ...TRUE ) ОТСЮДА ( BEGIN ) посуда взять ( ...@ ) его-же протереть ( DUP... ) его-же ополоснуть ( DUP... ) блестит? СНОВА ( UNTIL ) вода выключить ( ...FALSE ) ; ПЕРЕМЕННАЯ яйца ( VARIABLE... ) : яйца ОТСЮДА ( BEGIN ) яйца взять ( ...@ ) вареные не-равно ( ...<> ) ПОКА ( WHILE ) яйца взять жарить ( ...@... ) ПОВТОРЯТЬ ( REPEAT ) ; [/code] В реальном коде получится не так красиво.
|
|
|
|
Добавлено: Сб сен 19, 2015 21:16 |
|
|
|
|
|
Заголовок сообщения: |
Re: Преимущества Форта: Самодокументированность кода |
|
|
kzagradskiy писал(а): Интересно, но не до конца понятно, как будет употребляться. Можешь написать пример реального кода? Если IF --> ТО какое слово заменить на "СРАВНИ"? Код: Если 10 больше 2 ТО .... ИНАЧЕ ... ПРОДОЛЖАЕМ ... Тогда приходим к усложнению семантической нагрузки, например, на слово больше т.к. оно становится "активным' слово ТО завершает неопределённость(недозаконченность) слова больше в данном случае. P.S. Или так Код: 10 и 2 сравни больше? ТО ... ИНАЧЕ ... ПРОДОЛЖАЕМ .... и здесь возникает неоднозначность ситуации что с чем сравниваем (предположение что 10 больше 2-ух)
[quote="kzagradskiy"] Интересно, но не до конца понятно, как будет употребляться. Можешь написать пример реального кода? Если IF --> ТО какое слово заменить на "СРАВНИ"?[/quote] [code] Если 10 больше 2 ТО .... ИНАЧЕ ... ПРОДОЛЖАЕМ ... [/code] Тогда приходим к усложнению семантической нагрузки, например, на слово больше т.к. оно становится "активным' :) слово ТО завершает неопределённость(недозаконченность) слова больше в данном случае.
P.S. Или так [code] 10 и 2 сравни больше? ТО ... ИНАЧЕ ... ПРОДОЛЖАЕМ .... [/code] и здесь возникает неоднозначность ситуации что с чем сравниваем (предположение что 10 больше 2-ух)
|
|
|
|
Добавлено: Сб сен 19, 2015 19:25 |
|
|
|
|
|
Заголовок сообщения: |
Re: Преимущества Форта: Самодокументированность кода |
|
|
KPG писал(а): Ещё "связок" типа И не хватает Код: 10 и 2 сравни После сравни ещё потребуется конкретизация условия сравнения. P.S. Мне вместо IF больше нравится русское слово ТО, а IF тогда становится "пустым" словом-маркёром. Но со всеми этими словными построениями Форт становится достаточно многословным, увы. Но, может для объяснения "вычислительным роботам" вполне нормально. Интересно, но не до конца понятно, как будет употребляться. Можешь написать пример реального кода? Если IF --> ТО какое слово заменить на "СРАВНИ"?
[quote="KPG"]Ещё "связок" типа И не хватает :) [code] 10 и 2 сравни [/code] После сравни ещё потребуется конкретизация условия сравнения.
P.S. Мне вместо IF больше нравится русское слово ТО, а IF тогда становится "пустым" словом-маркёром. Но со всеми этими словными построениями Форт становится достаточно многословным, увы. Но, может для объяснения "вычислительным роботам" вполне нормально.[/quote] Интересно, но не до конца понятно, как будет употребляться. Можешь написать пример реального кода? Если IF --> ТО какое слово заменить на "СРАВНИ"?
|
|
|
|
Добавлено: Сб сен 19, 2015 19:19 |
|
|
|
|
|
Заголовок сообщения: |
Re: Преимущества Форта: Самодокументированность кода |
|
|
Ещё "связок" типа И не хватает Код: 10 и 2 сравни После сравни ещё потребуется конкретизация условия сравнения. P.S. Мне вместо IF больше нравится русское слово ТО, а IF тогда становится "пустым" словом-маркёром. Но со всеми этими словными построениями Форт становится достаточно многословным, увы. Но, может для объяснения "вычислительным роботам" вполне нормально.
Ещё "связок" типа И не хватает :) [code] 10 и 2 сравни [/code] После сравни ещё потребуется конкретизация условия сравнения.
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 ЭТО \ ['] обработчик ЭТО Вектор
можно попробовать собрать воедино. а вот со сложением и прочим, имхо, перебор значки запоминаются таки на раз
[quote="kzagradskiy"]Вот пример:Код:\ \ Стек: его-же DUP ;: другой SWAP[/quote] Интересно с точки зрения создания русского диалекта форта, у меня было:
[code]: Если ( 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 ЭТО \ ['] обработчик ЭТО Вектор [/code]
можно попробовать собрать воедино. а вот со сложением и прочим, имхо, перебор значки запоминаются таки на раз
|
|
|
|
Добавлено: Сб сен 19, 2015 18:47 |
|
|
|
|
|
Заголовок сообщения: |
Re: Преимущества Форта: Самодокументированность кода |
|
|
<Удалил, т.к. в теме появился mOleg>
<Удалил, т.к. в теме появился [b]mOleg[/b]>
|
|
|
|
Добавлено: Сб сен 19, 2015 17:17 |
|
|
|
|
|
Заголовок сообщения: |
Re: Преимущества Форта: Самодокументированность кода |
|
|
gudleifr писал(а): Далась Вам эта постфиксная запись. Она уже десятки лет используется в калькуляторах и никто не жалуется.
На калькуляторах весь алфавит на клавиатуру не вынесешь -- вот и используют то что есть "+ - / *". А если использовать в место них слова, которые в литературной речи, естественным образом, употребляются постфиксно, то программа на Форте станет проще и даже понятнее чем аналогичная на традиционном структурном/объектном языке. Если с каждым этапом написания кода форт становится "более проблемно-ориентированным" и меньше похожим на исходный форт с его манипулированием со стеком, то почему бы на самом первом этапе не переопределить основные слова форта? Фортом он от этого быть не станет. А потребность в комментариях (которые и так ни кто не делает -- посмотрите исходники SP-Forth и его библиотек). Хочу попробовать переопределить основные слова -- в основном состоящие из символов и знаков препинания, заменить эти слова во всех исходниках SP-Forth и посмотреть что получится. Может быть и без комментариев станет все понятно.
[quote="gudleifr"] Далась Вам эта постфиксная запись. Она уже десятки лет используется в калькуляторах и никто не жалуется. [/quote] На калькуляторах весь алфавит на клавиатуру не вынесешь -- вот и используют то что есть "+ - / *". А если использовать в место них слова, которые в литературной речи, естественным образом, употребляются постфиксно, то программа на Форте станет проще и даже понятнее чем аналогичная на традиционном структурном/объектном языке.
Если с каждым этапом написания кода форт становится "более проблемно-ориентированным" и меньше похожим на исходный форт с его манипулированием со стеком, то почему бы на самом первом этапе не переопределить основные слова форта? Фортом он от этого быть не станет. А потребность в комментариях (которые и так ни кто не делает -- посмотрите исходники SP-Forth и его библиотек).
Хочу попробовать переопределить основные слова -- в основном состоящие из символов и знаков препинания, заменить эти слова во всех исходниках SP-Forth и посмотреть что получится. Может быть и без комментариев станет все понятно.
|
|
|
|
Добавлено: Сб сен 19, 2015 17:00 |
|
|
|
|
|
Заголовок сообщения: |
Re: Преимущества Форта: Самодокументированность кода |
|
|
<Удалил, т.к. в теме появился mOleg>
<Удалил, т.к. в теме появился [b]mOleg[/b]>
|
|
|
|
Добавлено: Сб сен 19, 2015 16:18 |
|
|
|