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

...
Google Search
Forth-FAQ Spy Grafic

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




Начать новую тему Ответить на тему  [ Сообщений: 152 ]  На страницу Пред.  1 ... 6, 7, 8, 9, 10, 11  След.
Автор Сообщение
 Заголовок сообщения: Re: Багрепорты Quark
СообщениеДобавлено: Сб апр 21, 2012 20:12 
Хищник писал(а):
Лучше иметь одно и то же слово для действий с одинаковым алгоритмическим смыслом. Если в Форте уже есть несколько представлений строк, то для COUNT ожидаемым действием является "из представления строки в виде начального адреса некоей структуры дать представление вида АдресПервогоСимвола, ДлинаСтроки".

Исторически сложилось, что за словом COUNT стоит другое действие, и именно оно является ожидаемым для людей, знающих форт.


Хищник писал(а):
Переносимое решение - это отдельный серьезный разговор. За переносимость нужно чем-то платить, в том числе и менее удобным синтаксисом, который вынужден учитывать варианты "а вдруг где-нибудь что-нибудь..."

Согласен. Но и за непереносимость тоже приходится чем-то платить: временем на выявление багов из-за "непереносимости", временем на адаптацию известных или готовых решений, на адаптацию программистов..
Пожалуй, стоит явно очерчивать этот круг, в рамках которого предполагается какой-то известный уровень переносимости. Один из способов такого очерчивания: декларация (и реализация) совместимости с какими либо известными спецификациями. Например: форт-система поддерживает набор слов доступа к файлам DPANS94 (File-Access word set).


Хищник писал(а):
spf писал(а):
Но, до каких пор систему оправдано называть форт-системой, если давать известным словам другую семантику?
Мне тут интересен, во первых, теоретический аспект.
Представим, к примеру, систему, в которой слово TYPE имеет семантику ( addr-asciiz -- ), слово COUNT имеет семантику ( addr-asciiz -- addr-asciiz u ), слово DUP дублирует хэндл файла ( h1 -- h1 h2 ), и т.д. Оправдано ли называть такую систему форт-системой?


Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения: Re: Багрепорты Quark
СообщениеДобавлено: Сб апр 21, 2012 20:53 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7960
Благодарил (а): 25 раз.
Поблагодарили: 144 раз.
spf писал(а):
Хищник писал(а):
Лучше иметь одно и то же слово для действий с одинаковым алгоритмическим смыслом. Если в Форте уже есть несколько представлений строк, то для COUNT ожидаемым действием является "из представления строки в виде начального адреса некоей структуры дать представление вида АдресПервогоСимвола, ДлинаСтроки".

Исторически сложилось, что за словом COUNT стоит другое действие, и именно оно является ожидаемым для людей, знающих форт.


Достаточно легко убедиться, что никакое другое действие за COUNT не стоит:

6.1.0980 COUNT
CORE

( c-addr1 -- c-addr2 u )

Return the character string specification for the counted string stored at c-addr1. c-addr2 is the address of the first character after c-addr1. u is the contents of the character at c-addr1, which is the length in characters of the string at c-addr2.

Это именно преобразование адреса c-addr1 в c-addr2 u.

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

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

А кому нужен DPANS94? :) Что с него можно хорошего заиметь, и где можно посмотреть на success stories авторов DPANS94? Я пока вижу только то, что распространенность Форта с 94 года не увеличилась, и четко просматриваемой связи между "такая-то версия Форта стала поддерживать DPANS94" и "дела у автора/пользователей пошли лучше" не наблюдается.
spf писал(а):
Представим, к примеру, систему, в которой слово TYPE имеет семантику ( addr-asciiz -- ), слово COUNT имеет семантику ( addr-asciiz -- addr-asciiz u ),

Такие COUNT и TYPE не смогут работать вместе.
spf писал(а):
слово DUP дублирует хэндл файла ( h1 -- h1 h2

Боюсь спросить... а хэндл файла не на стеке данных? А то я вот так смотрю - DUP и так без проблем продублирует хэндл файла. Равно как и указатель на структуру описания контроллера плазменно-ионного имплантатора, да и вообще любое число :)
spf писал(а):
Оправдано ли называть такую систему форт-системой?

Если замены делаются из вредности, то это плохая форт-система. Если совпадение имен слов является следствием адаптации к предметной области со сходной/пересекающейся терминологией, то почему нет? Оценка "Форт - не Форт" лежит где-то в области нечеткой логики.

Встречный вопрос: а если в языке скобки обозначают комментарий, а точка не является однозначным признаком числа с плавающей точкой (а не с плавающей буквой E), что можно сказать про такой язык? Можно ли предположить, что одной из целей было эпатировать окружающих? Нужно ли продолжать в таком стиле?


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Багрепорты Quark
СообщениеДобавлено: Сб апр 21, 2012 21:17 
Хищник писал(а):
spf писал(а):
слово DUP дублирует хэндл файла ( h1 -- h1 h2

Боюсь спросить... а хэндл файла не на стеке данных?

На стеке данных. Но h2 отличается от h1. Про дублирование (клонирование?) хэндлов — см. MSDN DuplicateHandle


Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения: Re: Багрепорты Quark
СообщениеДобавлено: Сб апр 21, 2012 21:24 
Хищник писал(а):
spf писал(а):
Хищник писал(а):
Лучше иметь одно и то же слово для действий с одинаковым алгоритмическим смыслом. Если в Форте уже есть несколько представлений строк, то для COUNT ожидаемым действием является "из представления строки в виде начального адреса некоей структуры дать представление вида АдресПервогоСимвола, ДлинаСтроки".

Исторически сложилось, что за словом COUNT стоит другое действие, и именно оно является ожидаемым для людей, знающих форт.

Исправление: прошу вместо "стоит другое действие" читать "стоит более конкретное действие".

Хищник писал(а):
Достаточно легко убедиться, что никакое другое действие за COUNT не стоит:


Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения: Re: Багрепорты Quark
СообщениеДобавлено: Сб апр 21, 2012 21:51 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7960
Благодарил (а): 25 раз.
Поблагодарили: 144 раз.
spf писал(а):
На стеке данных. Но h2 отличается от h1. Про дублирование (клонирование?) хэндлов — см. MSDN DuplicateHandle

В другом контексте - почему бы и нет. Было бы странно оставлять за Фортом монополию на мнемонику DUP. Другое дело, если это делается не потому, что DUP часто используется именно для дублирования хэндлов, а так, из вредности. Чтобы наткнулись на глюки и начали разбираться.
spf писал(а):
Исправление: прошу вместо "стоит другое действие" читать "стоит более конкретное действие".

Ну берем пресловутый ANS

3.1.2 Character types
Characters shall be at least one address unit wide, contain at least eight bits, and have a size less than or equal to cell size.

3.1.3.4 Counted strings
A counted string in memory is identified by the address (c-addr) of its length character.
The length character of a counted string shall contain a binary representation of the number of data characters, between zero and the implementation-defined maximum length for a counted string. The maximum length of a counted string shall be at least 255.

Обращаю внимание на следующие моменты:
1) Символ должен быть "как минимум из одного адресного элемента". То есть можно из двух.
2) Максимальная длина - implementation defined, но как минимум 255.

Из этих двух пунктов не следует прямого указания, что максимальная длина строки должна занимать в памяти ровно столько же места, сколько и каждый символ.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Багрепорты Quark
СообщениеДобавлено: Сб апр 21, 2012 21:54 
Хищник писал(а):
spf писал(а):
Один из способов такого очерчивания: декларация (и реализация) совместимости с какими либо известными спецификациями. Например: форт-система поддерживает набор слов доступа к файлам DPANS94

А кому нужен DPANS94? :) Что с него можно хорошего заиметь, и где можно посмотреть на success stories авторов DPANS94?


1. DPANS94 хорош в роли общеизвестной спецификации. Я бы сказал, что это лучший вирант из широко известных. Этой спецификацией могут пользоваться как создатели форт-систем, так и пользователи форт-систем (в рамках очерченой области совместимости конкретной форт-системы).

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


Хищник писал(а):
Встречный вопрос: а если в языке скобки обозначают комментарий, а точка не является однозначным признаком числа с плавающей точкой (а не с плавающей буквой E), что можно сказать про такой язык? Можно ли предположить, что одной из целей было эпатировать окружающих? Нужно ли продолжать в таком стиле?

В таком стиле можно и не продолжать: допустимо принять другую семантику точки в числовых литералах, принять другое обозначение комментариев. Если это единственное отличие форт-системы от некоторой спецификации, то в документации прямо и очертить, что поддерживается такая-то спецификация, но с такими-то исключениями.


Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения: Re: Багрепорты Quark
СообщениеДобавлено: Сб апр 21, 2012 22:08 
Хищник писал(а):
spf писал(а):
Исправление: прошу вместо "стоит другое действие" читать "стоит более конкретное действие".

Ну берем пресловутый ANS
[...]
Хищник писал(а):
Обращаю внимание на следующие моменты:
1) Символ должен быть "как минимум из одного адресного элемента". То есть можно из двух.
2) Максимальная длина - implementation defined, но как минимум 255.

Из этих двух пунктов не следует прямого указания, что максимальная длина строки должна занимать в памяти ровно столько же места, сколько и каждый символ.

Верно. (хотя, "length character" намекает)

Но, слово COUNT полагает именно вариант "ровно столько же места [на счетчик], сколько и каждый символ", цитирую: "u is the contents of the character at c-addr1"

Хотя, к Кварку это все отношения не имеет, там COUNT работает как ASCIIZ> ("Определить количество символов в строке, заданной адресом первого символа. Конец строки определяется по байту-ограничителю 0" — Quark-Forth 1.0.11 build 30).


Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения: Re: Багрепорты Quark
СообщениеДобавлено: Сб апр 21, 2012 23:12 
Не в сети
Administrator
Administrator
Аватара пользователя

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

"Широко известной в узких кругах"? :)
spf писал(а):
Вполне допустимо делать совместимость лишь с произвольными частями общеизвестных спецификаций. Т.е., не обязательно поддерживать совместимость целиком с какой-либо спецификацией; принцип "или все или ничего" здесь совершенно неуместен. Частичная совместимость тоже приносит пользу: автору достаточно сослаться на спецификации (и их части), и незачем описывать то, что уже описано; пользователю форт-системы проще начать ее использовать, если он уже знаком с теми спецификациями, которые поддерживает форт-система.

Это имеет смысл делать только в том случае, если с документом, на который делается ссылка, ассоциируются широко известные примеры достижения положительных результатов. Есть две основные стратегии разработки: делаем сами или берем готовое. В сочетании, естественно. Если делаем сами, то начинаем с обзора вариантов реализации и достигнутых результатов, продолжаем через принятие решения о том, что же будем делать, и чем это будет лучше существующего. Если берем готовое, нужно оттолкнуться от того, чего достигли те, кто этим готовым пользовался. Ну и чего достигли те, кто использовал DPANS94? И они достигли этого именно благодаря DPANS94?
spf писал(а):
Верно. (хотя, "length character" намекает)

Да не так чтобы намекает. Это "символ длины", если дословно. В сочетании с другими частями описания получается, что это как раз не тот же самый символ, что и "символ в строке".
spf писал(а):
Но, слово COUNT полагает именно вариант "ровно столько же места [на счетчик], сколько и каждый символ", цитирую: "u is the contents of the character at c-addr1"

Ничего подобного тут не предполагается в явном виде. "U это содержание символа по c-addr1". Смотрим выше - там лежит lenght character. Дальше берем спецификацию, в которой написано, что строка имеет implementation-defined максимальный размер. И что, для однобайтовых символов это не больше 255? Написано-то как раз "не меньше". А для двухбайтовых это должно быть 65535? То есть иметь 64К символов по одному байту такая спецификация запрещает? Я этого в тексте не вижу, вижу ровным счетом наоборот - там разрешено....
spf писал(а):
Хотя, к Кварку это все отношения не имеет, там COUNT работает как ASCIIZ> ("Определить количество символов в строке, заданной адресом первого символа. Конец строки определяется по байту-ограничителю 0" — Quark-Forth 1.0.11 build 30).

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

А вот что делать с функциями API, которые могут, к примеру, вернуть указатель на ASCIIZ? Писать в Microsoft, чтобы WinAPI перед строкой клало счетчик символов? Причем однобайтовый для ASCII и двухбайтовый для Unicode - там строковые функции в двух версиях.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Багрепорты Quark
СообщениеДобавлено: Вс апр 22, 2012 00:41 
Хищник писал(а):
А вот что делать с функциями API, которые могут, к примеру, вернуть указатель на ASCIIZ?

В обертках к таким функциям преобразовывать возвращаемую строку к виду ( addr u ). Преобразовывать из ASCIIZ в counted-строку обычно совершенно незачем.


Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения: Re: Багрепорты Quark
СообщениеДобавлено: Вс апр 22, 2012 01:08 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7960
Благодарил (а): 25 раз.
Поблагодарили: 144 раз.
spf писал(а):
В обертках к таким функциям преобразовывать возвращаемую строку к виду ( addr u ). Преобразовывать из ASCIIZ в counted-строку обычно совершенно незачем.

Соответственно, возникает вопрос. Проще преобразовывать форматы повсеместно используемой MS Windows к DPANS94 (ойахтойто?), или сразу основать продукт для MS Windows на его форматах, вежливо раскланяться с людьми, которые 20 лет назад сделали документ, и не обижать их предположением, что этот документ окончательный?


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Багрепорты Quark
СообщениеДобавлено: Вс апр 22, 2012 04:02 
Хищник писал(а):
spf писал(а):
DPANS94 хорош в роли общеизвестной спецификации. Я бы сказал, что это лучший вирант из широко известных.

"Широко известной в узких кругах"? :)

Все варианты спецификаций форт-систем известны лишь в "узких кругах". Но, одни известны больше, а другие меньше. Среди наиболее известных (которых "раз, два и обчелся" ;) DPANS94 мне кажется лучшим.


Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения: Re: Багрепорты Quark
СообщениеДобавлено: Вс апр 22, 2012 04:04 
Хищник писал(а):
spf писал(а):
Частичная совместимость тоже приносит пользу: автору достаточно сослаться на спецификации (и их части), и незачем описывать то, что уже описано; пользователю форт-системы проще начать ее использовать, если он уже знаком с теми спецификациями, которые поддерживает форт-система.

Это имеет смысл делать только в том случае, если с документом, на который делается ссылка, ассоциируются широко известные примеры достижения положительных результатов.

Почему это не имеет смысла в других случаях?


Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения: Re: Багрепорты Quark
СообщениеДобавлено: Вс апр 22, 2012 04:12 
Хищник писал(а):
spf писал(а):
В обертках к таким функциям преобразовывать возвращаемую строку к виду ( addr u ). Преобразовывать из ASCIIZ в counted-строку обычно совершенно незачем.

Соответственно, возникает вопрос. Проще преобразовывать форматы повсеместно используемой MS Windows к DPANS94 (ойахтойто?), или сразу основать продукт для MS Windows на его форматах

Преобразовывать к виду ( addr u ) удобно для использования. Но, если иначе, то допустимо оставлять в виде ASCIIZ; и может быть оправдано иметь набор слов, работающи с ASCIIZ-строками. — Это все не имеет никакого отношения к DPANS94.


Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения: Re: Багрепорты Quark
СообщениеДобавлено: Вс апр 22, 2012 14:41 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7960
Благодарил (а): 25 раз.
Поблагодарили: 144 раз.
spf писал(а):
Все варианты спецификаций форт-систем известны лишь в "узких кругах". Но, одни известны больше, а другие меньше. Среди наиболее известных (которых "раз, два и обчелся" ;) DPANS94 мне кажется лучшим.

А раз они все известны в узких кругах, то вопрос "бренд или не бренд?" отпадает сам собой.
spf писал(а):
spf писал(а):
Частичная совместимость тоже приносит пользу: автору достаточно сослаться на спецификации (и их части), и незачем описывать то, что уже описано; пользователю форт-системы проще начать ее использовать, если он уже знаком с теми спецификациями, которые поддерживает форт-система.

Это имеет смысл делать только в том случае, если с документом, на который делается ссылка, ассоциируются широко известные примеры достижения положительных результатов.

Почему это не имеет смысла в других случаях?


А откуда берется доверие к существующим спецификациям? Можно порассуждать. Вот разработчик приступает к сложному проекту и у него сразу масса вопросов. На первый взгляд все может выглядеть неплохо, но наверняка где-то разбросаны подводные камни. Тогда можно начать такую цепочку. "Вот есть спецификация, выпущенная крупной и известной компанией. Она делает много успешных продуктов, в том числе и на базе этой спецификации. По ходу разработки они явно решали задачи, подобные моим, и если там и были проблемы, они их явно поправили. Поэтому предполагаю, что если я тоже возьму за основу именно эту спецификацию, то смогу получить результаты, аналогичные тем, которые мне уже по факту кажутся успешными". В этом случае спецификация работает на разработчика, позволяя сослаться на существующие успешные реализации.

Если разработчик берет нечто, с чем успешные результаты не ассоциируются, никакого бэкграунда нет. Разработчик по сути превращается в бета-тестера, вынужденного своими силами выгребать баги, да еще при этом интенсивно "совмещаться", при всем этом не забывая благодарить авторов спецификации за оказанное высокое доверие.
spf писал(а):
Преобразовывать к виду ( addr u ) удобно для использования. Но, если иначе, то допустимо оставлять в виде ASCIIZ; и может быть оправдано иметь набор слов, работающи с ASCIIZ-строками.

Допустимо, оправданно, и уже есть.
spf писал(а):
Это все не имеет никакого отношения к DPANS94.

А DPANS94 не имеет никакого отношения к реалиям разработки.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Багрепорты Quark
СообщениеДобавлено: Вс апр 22, 2012 17:16 
Хищник писал(а):
spf писал(а):
Это все не имеет никакого отношения к DPANS94.

А DPANS94 не имеет никакого отношения к реалиям разработки.

Позволю себе не согласиться.
1. в разработке DPANS94 принимали участие многие заинтересованные "фирмы"
2. встречается упоминание использования Форт систем, основанных на DPANS94,
для (в) или как то ещё в изделиях известных и малоизвестных "фирм" (например Textronix - pForth,
другие примеры тоже можно найти)
3. другие варианты Форт стандартов, очень сильно пересекаются с DPANS94

P.S. Ограниченность (неполнота, не всеобщность) стандарта не повод говорить что
он "нафик" не нужен и лучше я, например буду использовать Forth-83, что вполне в стиле Форт.


Вернуться к началу
  
Ответить с цитатой  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 152 ]  На страницу Пред.  1 ... 6, 7, 8, 9, 10, 11  След.

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


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

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


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

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