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

...
Google Search
Forth-FAQ Spy Grafic

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




Начать новую тему Ответить на тему  [ Сообщений: 49 ]  На страницу Пред.  1, 2, 3, 4
Автор Сообщение
 Заголовок сообщения: Re: Начальный курс программирования на языке Форт
СообщениеДобавлено: Пт дек 04, 2015 00:49 
Не в сети

Зарегистрирован: Вс ноя 29, 2015 23:47
Сообщения: 10
Благодарил (а): 2 раз.
Поблагодарили: 0 раз.
gudleifr писал(а):
Раз уж тут все равно чистить, предлагаю (между "Днем знаний" и "Днем Учителя") порассуждать об этой книге.

Извиняюсь что опоздал, но между этими днями меня тут ещё не было. Только что прочёл её и спешу поделиться впечатлениями.
gudleifr писал(а):
1. Признать ее полезной или устарелой?

Книга однозначно полезная. Что касается русского перевода - на твоей странице он реально лучше чем на nncron.ru. На nncron.ru есть опечатки и даже фактические ошибки
Например, в главе 4:
nncron.ru писал(а):
Слово ?DUP дублирует вершину стека только в том случае, если там находится нулевое значение.

На этом месте я начал читать параллельно перевод и английское он-лайн издание, что позволило увидеть некоторые интересные моменты. Но, в оправдание идеи русского перевода, на gudleifr.h1.ru опечатки и ошибки вычищены, за что большое спасибо. Комментарии читателя - тоже интересны.
gudleifr писал(а):
5. В конце концов, может, поделиться друг с другом комментариями и критическими статьями?

Мне показались интересными отличия между русской версией и обновлённым оригиналом.
Часть из них, очевидно, связана с развитием стандарта. Но с некоторыми непонятно, например, в 11 главе в переводе в примерах [COMPILE], а в он-лайн версии - POSTPONE. Кто-нибудь может объяснить разницу?
Решения задачек в 11 главе перевода - понятны. В он-лайн версии, на мой взгляд новичка, непонятно ни рожна:
Код:
: PLURAL  ( compile: xt -- )  ( run: ? #times -- )
   CREATE  ,
      DOES>   @ LOCALS| xt |
      0 ?DO  xt EXECUTE  LOOP ;

Слово LOCALS там не объясняется, палка - тоже.

Но, в оправдание он-лайновой версии - примеры там адаптированы к 32х-битным трансляторам. В переводе (очевидно, как и в первом издании) вместо CELLS используется 2+.

gudleifr писал(а):
3. Если да, то что надо к ней добавить? Учебную FORTH-среду, где 1 в 1 идут все примеры?

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

Такие вот идеи и впечатления.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Начальный курс программирования на языке Форт
СообщениеДобавлено: Пт дек 04, 2015 12:24 
atar писал(а):
,,,
Спасибо за положительную оценку моей "редакции". Опечатки там все хе, наверняка остались (например, практически на днях исправил свеженькую в Баранове&Ноздрунове), та что, если заметите, пожалуйста сообщите.
atar писал(а):
в 11 главе в переводе в примерах [COMPILE], а в он-лайн версии - POSTPONE. Кто-нибудь может объяснить разницу?
ЛИРИЧЕСКОЕ ОТСТУПЛЕНИЕ. Общая идея языков программирования - возможность оптимального описания решения задачи. Если решение удобнее описать как-то иначе, то, значит, вы созрели для создания нового языка. А раз FORTH написан сам на себе, то пускай все эти стандартизаторы со своими "семантиками компиляции" идут лесом. Мы посмотрим код имеющейся под рукой реализации. КОНЕЦ ЛИРИЧЕСКОГО ОТСТУПЛЕНИЯ.

Итак:
Код:
: POSTPONE ( <слово> --) BL WORD FIND ?DUP IF 0< IF
COMPILE COMPILE THEN , ELSE BADWORD THEN ; IMMEDIATE
: [COMPILE] ( <слово> --) BL WORD FIND IF , EXIT THEN BADWORD ; IMMEDIATE

Мы видим, что оба слова во время компиляции (IMMEDIATE) считывают следующее за ними (BL WORD, с матюгами при ненахождении - BADWORD) и зафигачивают его адрес исполнения в код компилируемого слова (,). Только POSTPONЕ делает еще зачем-то условную вставку в код адреса COMPILE. Зачем? Чтобы POSTPONE c не-IMMEDIATE (FIND возвращает -1) словами работало иначе. Но, ведь, использовать [COMPILE] для не-IMMEDIATE-слов не имеет смысла, они и так компилируются! Т.е. слово искусственно подогнано под кривое "стандартное" объяснение "компилирует семантику компиляции", без всякой потребности.
Код:
: EX1 55 . ; IMMEDIATE ___Ok_
: EX2 66 . ; ___Ok_
: EX3 EX1 EX2 ; ___55_Ok_
EX3 ___66_Ok_
: EX4 [COMPILE] EX1 [COMPILE] EX2 ; ___Ok_
EX4 ___55_66_Ok_
: EX5 POSTPONE EX1 POSTPONE EX2 ; IMMEDIATE ___Ok_
EX5 ___55_Ok_
: EX6 EX5 ; ___55_Ok_
EX6 ___66_Ok_

Кстати, "стандартно" в данном случае писать не "запятая", а COMPILE, На случай, если используется подпрограммный шитый код. (Или хочется еще покопаться в нюансах POSTPONE , EXECUTE и EVALUATE - см. стандарт).
Вывод: POSTPONE - для слабаков, которые не хотят вникать в то, что пишут.

P.S. Очень прошу не обращаться ко мне в темах, где участвует mOleg.
Поэтому, почему Броуди вредно дотягивать до уровня "современных" реализаций, обсудим где-нибудь в другом месте.


Последний раз редактировалось gudleifr Чт янв 14, 2016 13:28, всего редактировалось 1 раз.

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

Зарегистрирован: Вс ноя 29, 2015 23:47
Сообщения: 10
Благодарил (а): 2 раз.
Поблагодарили: 0 раз.
gudleifr писал(а):
P.S. Рекорд Форума, связанный с этой книгой:
*** писал(а):
кстати, я сейчас добиваю вторую главу Броуди, там как раз все эти темы освещаются, наверное, когда я доберусь до восьмой, именно с неё начинается более глубокое знакомство с Фортом, то уже смогу считаться более квалифицированным фортером, чем вы


А что-то гугл по этой цитате не находит ничего кроме собственно этой ветки.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Начальный курс программирования на языке Форт
СообщениеДобавлено: Вт дек 08, 2015 20:02 
atar писал(а):
А что-то гугл по этой цитате не находит ничего кроме собственно этой ветки.
И это хорошо. Возможно, у кого-то руки дошли.


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

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


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

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


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

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