Forth и другие саморасширяющиеся системы программирования Locations of visitors to this page
Текущее время: Чт мар 28, 2024 23:54

...
Google Search
Forth-FAQ Spy Grafic

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




Начать новую тему Ответить на тему  [ Сообщений: 23 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: Преимущества Форта: Самодокументированность кода
СообщениеДобавлено: Вс дек 29, 2013 09:43 
Не в сети
Аватара пользователя

Зарегистрирован: Вт фев 17, 2009 19:58
Сообщения: 112
Откуда: Барнаул
Благодарил (а): 21 раз.
Поблагодарили: 16 раз.
Предлагаю создать серию веток на форуме начинающихся на "Преимущества Форта:", каждая из которых будет посвящена определенным преимуществам. Например: самодокументированность, переносимость, возможность написания проблемно-ориентированного языка, мощность. Пишем пример кода который иллюстрирует один из аспектов, и небольшое пояснение. В результате, наберется множество наглядных примеров. В данной ветке предлагаю размещать самодокументированный код. Сам код должен быть максимально нагляден и понятен. Желательно совсем обходиться без комменариев. Интересные примеры могут пригодиться для более наглядного оформления кода посетителей форума. Все кто вспомнил свои находки в области именования форт-слов, напишите их пожалуйста сюда. Примеры задач, самые разные. Как вариант можно писать самодокументированные части кода из активных реализаций (SP-Forth, Quark, SP-Fork...), тем самым вы поможете разработчикам, у которых не всегда есть возможность улучшить читабельность. Вот примеры хорошо читаемого кода из книги "Способ мышления Форт" Глава 5 Разработка: Элементы Форт-Стиля (советую её перечитать):

Быстрая ( установка для лисы; быстро движется)
коричневая ( и имеет цвет шоколада)
лиса ( исполнить лисицу)
прыгает через ( дать действие лисицы)
ленивого ( установка для собаки)
пса ( то, через что лисица перепрыгнула)

: ТОЛКАТЬ ВЗЯТЬСЯ НАЛЕЧЬ ;
: ГЕТТИСБУРГ 4 СЧЕТ 7 ЛЕТ + НАЗАД ;
... ГОТОВО? IF ЗАКРЫТЬ THEN ...

ЛЕВЫЙ МОТОР ПУСК
ПРАВЫЙ МОТОР ПУСК
ЛЕВЫЙ МОТОР СТОП
ПРАВЫЙ МОТОР СТОП
ЛЕВЫЙ МАГНИТ ПУСК
ПРАВЫЙ МАГНИТ ПУСК
ЛЕВЫЙ МАГНИТ СТОП
ПРАВЫЙ МАГНИТ СТОП


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Преимущества Форта: Самодокументированность кода
СообщениеДобавлено: Ср янв 01, 2014 00:50 
Не в сети

Зарегистрирован: Пн янв 07, 2013 22:40
Сообщения: 2141
Благодарил (а): 8 раз.
Поблагодарили: 74 раз.
Упс.
"Проблема" Непонимания от Gudleifr на форуме balancer.ru

P.S. Оказывается "много" полезного можно прочесть о "понимании/непонимании"...


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Преимущества Форта: Самодокументированность кода
СообщениеДобавлено: Ср янв 01, 2014 09:37 
Не в сети
Аватара пользователя

Зарегистрирован: Вт фев 17, 2009 19:58
Сообщения: 112
Откуда: Барнаул
Благодарил (а): 21 раз.
Поблагодарили: 16 раз.
KPG писал(а):
Упс.
"Проблема" Непонимания от Gudleifr на форуме balancer.ru

P.S. Оказывается "много" полезного можно прочесть о "понимании/непонимании"...


Довольно интересное обсуждение, но кажется, немного не по теме.

Вот ещё два чудесных примера из книги "Образ мышления Форт":
20 ПОВЕРНУТЬ ВЛЕВО БАШНЯ-ТАНКА
: ОБНОВИТЬ-ЗАПИСЬ
ЗАПИСЬ ЧИТАТЬ РЕДАКТИРОВАТЬ ЗАПИСЬ ПИСАТЬ ;


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Преимущества Форта: Самодокументированность кода
СообщениеДобавлено: Ср янв 01, 2014 16:14 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7960
Благодарил (а): 25 раз.
Поблагодарили: 144 раз.
Интереснее примеры с CREATE DOES> Показательный синтаксис, имитирующий обычную речь, тоже интересен, но CREATE DOES> позволяют создать новый уровень выразительности, что существенно сложнее достигается на других языках.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Преимущества Форта: Самодокументированность кода
СообщениеДобавлено: Пт янв 03, 2014 08:11 
Не в сети
Аватара пользователя

Зарегистрирован: Вт фев 17, 2009 19:58
Сообщения: 112
Откуда: Барнаул
Благодарил (а): 21 раз.
Поблагодарили: 16 раз.
Хищник писал(а):
Интереснее примеры с CREATE DOES> Показательный синтаксис, имитирующий обычную речь, тоже интересен, но CREATE DOES> позволяют создать новый уровень выразительности, что существенно сложнее достигается на других языках.

CREATE DOES> универсальная и очень интересная конструкция. Позволяет создать практически любой синтаксис. Хорошо о ней написано здесь: http://block32.site88.net/sf/sf/chapter11.htm


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Преимущества Форта: Самодокументированность кода
СообщениеДобавлено: Сб янв 04, 2014 15:34 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7960
Благодарил (а): 25 раз.
Поблагодарили: 144 раз.
О ней уже давно написано. Я про современные примеры эффективного использования, вот их надо.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Преимущества Форта: Самодокументированность кода
СообщениеДобавлено: Сб янв 04, 2014 16:31 
Не в сети

Зарегистрирован: Пн янв 07, 2013 22:40
Сообщения: 2141
Благодарил (а): 8 раз.
Поблагодарили: 74 раз.
Небольшое обсуждение на habrahabr
Разомнём мозг при помощи Forth
опубликована: 19 ноября ? 2012г.

P.S. Например В стратегическом симуляторе битвы роботов Grobots используется Форт ориентированный язык задания поведения роботов в игровой среде. (проектировать AI мозгов дроидов) :D
Online интерпритатор gForth системы


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Преимущества Форта: Самодокументированность кода
СообщениеДобавлено: Сб сен 19, 2015 16:03 
Не в сети
Аватара пользователя

Зарегистрирован: Вт фев 17, 2009 19:58
Сообщения: 112
Откуда: Барнаул
Благодарил (а): 21 раз.
Поблагодарили: 16 раз.
Людям (особенно новичкам) сложно перестраивать восприятие арифметических операндов с обычного инфиксного употребления на постфиксную запись. Но если их переопределить как слова, описывающие их смысл, то все встанет на свои места, а программа станет нагляднее.
Вот пример:
Код:
\ Арифметика
: прибавь + ;
: отними - ;
: умнож * ;
: раздели / ;

\ Стек
: его-же DUP ;
: другой SWAP ;

\ Вывод
: покажи . ;

\ Переменные
: положи ! ;
: возьми @ ;

\ Синтаксический сахар
\ (хотя и без него читабельно)
: к ;
: на ;
: от ;
: в ;

\ Пример №1
к 10 2 прибавь на 6 умнож 3 отними на 4 раздели покажи
\ Здесь для человека, далекого от Форта всё понятно.
\ Слова естественно располагаются в постфиксном виде.

\ обычная запись
10 2 + 6 * 3 - 4 / .
\ Здесь цифры вперемешку с арифметическими операциями.
\ И зачем-то точка.

\ Пример №2
variable яблоки
29 в яблоки положи
яблоки возьми
2 прибавь 7 отними на 20 раздели
в яблоки положи
яблоки возьми покажи
\ Здесь все понятно что-куда

\ обычная запись
29 яблоки !
яблоки @
2 + 7 - 20 /
яблоки !
яблоки @ .
\ Здесь можно сказать что этот блок что-то делает с яблоками не больше.

\ Пример №3
: квадрат   его-же умнож ;
: сумма-квадратов   квадрат другой квадрат прибавь ;
3 4 сумма-квадратов покажи
\ Здесь тоже все понятно

\ обычная запись
: квадрат   DUP * ;
: сумма-квадратов   квадрат SWAP квадрат + ;
3 4 сумма-квадратов .
\ Слова работы со стеком часто ломают логику определения
\ и их нужно комментировать.
\ Если удачно подобрать слова к манипуляциям на стеке,
\ то они будут отражать и суть вопроса и манипуляции на стеке.



Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Преимущества Форта: Самодокументированность кода
СообщениеДобавлено: Сб сен 19, 2015 16:18 
<Удалил, т.к. в теме появился mOleg>


Последний раз редактировалось gudleifr Сб сен 19, 2015 18:50, всего редактировалось 1 раз.

Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения: Re: Преимущества Форта: Самодокументированность кода
СообщениеДобавлено: Сб сен 19, 2015 17:00 
Не в сети
Аватара пользователя

Зарегистрирован: Вт фев 17, 2009 19:58
Сообщения: 112
Откуда: Барнаул
Благодарил (а): 21 раз.
Поблагодарили: 16 раз.
gudleifr писал(а):
Далась Вам эта постфиксная запись. Она уже десятки лет используется в калькуляторах и никто не жалуется.

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

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

Хочу попробовать переопределить основные слова -- в основном состоящие из символов и знаков препинания, заменить эти слова во всех исходниках SP-Forth и посмотреть что получится. Может быть и без комментариев станет все понятно.


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


Последний раз редактировалось gudleifr Сб сен 19, 2015 18:51, всего редактировалось 1 раз.

Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения: Re: Преимущества Форта: Самодокументированность кода
СообщениеДобавлено: Сб сен 19, 2015 18:47 
Не в сети
Moderator
Moderator
Аватара пользователя

Зарегистрирован: Чт май 04, 2006 00:53
Сообщения: 5062
Откуда: был Крым, теперь Новосибирск
Благодарил (а): 23 раз.
Поблагодарили: 63 раз.
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 ЭТО   \ ['] обработчик ЭТО Вектор


можно попробовать собрать воедино.
а вот со сложением и прочим, имхо, перебор
значки запоминаются таки на раз

_________________
Мне бы только мой крошечный вклад внести,
За короткую жизнь сплести
Хотя бы ниточку шёлка.
fleur


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Преимущества Форта: Самодокументированность кода
СообщениеДобавлено: Сб сен 19, 2015 18:55 
Не в сети

Зарегистрирован: Пн янв 07, 2013 22:40
Сообщения: 2141
Благодарил (а): 8 раз.
Поблагодарили: 74 раз.
Ещё "связок" типа И не хватает :)
Код:
10 и 2 сравни

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

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


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

Зарегистрирован: Вт фев 17, 2009 19:58
Сообщения: 112
Откуда: Барнаул
Благодарил (а): 21 раз.
Поблагодарили: 16 раз.
KPG писал(а):
Ещё "связок" типа И не хватает :)
Код:
10 и 2 сравни

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

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

Интересно, но не до конца понятно, как будет употребляться. Можешь написать пример реального кода? Если IF --> ТО какое слово заменить на "СРАВНИ"?


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Преимущества Форта: Самодокументированность кода
СообщениеДобавлено: Сб сен 19, 2015 19:25 
Не в сети

Зарегистрирован: Пн янв 07, 2013 22:40
Сообщения: 2141
Благодарил (а): 8 раз.
Поблагодарили: 74 раз.
kzagradskiy писал(а):
Интересно, но не до конца понятно, как будет употребляться. Можешь написать пример реального кода? Если IF --> ТО какое слово заменить на "СРАВНИ"?

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

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

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

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


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

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


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

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


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

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