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

...
Google Search
Forth-FAQ Spy Grafic

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




Начать новую тему Ответить на тему  [ Сообщений: 120 ]  На страницу Пред.  1, 2, 3, 4, 5, 6, 7, 8  След.
Автор Сообщение
 Заголовок сообщения: Re: Straight Forth
СообщениеДобавлено: Сб июл 01, 2017 17:16 
Не в сети
Аватара пользователя

Зарегистрирован: Ср фев 23, 2011 20:42
Сообщения: 600
Откуда: Карелия
Благодарил (а): 3 раз.
Поблагодарили: 24 раз.
Hishnik писал(а):
Можно увидеть конкретное место, где я домыслил преподавательство? :)
Цитируя Лема про профессора Меринуса, что имел ввиду ?
Hishnik писал(а):
А что там показывать-то?
Сложение двух дробных чисел с числителем и знаменателем. Вот это я тебя просил когда-то показать. А не лапидарное сложение двух целых по add+adc.

Вот таких :
HughAguilar писал(а):
C.) A number is a pair of 64-bit integers, which are the numerator and denominator of a ratio (the numerator is signed and the denominator is positive).


Последний раз редактировалось Ethereal Сб июл 01, 2017 17:33, всего редактировалось 1 раз.

Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Straight Forth
СообщениеДобавлено: Сб июл 01, 2017 17:33 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7958
Благодарил (а): 25 раз.
Поблагодарили: 144 раз.
Ethereal писал(а):
Арифметику дробных чисел с числителем и знаменателем. Вот это я тебя просил когда-то показать. А не лапидарное сложение двух целых по add+adc.

Пошел и перечитал тред, уж сколько времени прошло. Если рациональных, то так и надо написать. А раз в тексте последняя фраза про двойную разрядность, то я автоматически на это и ответил. К слову, при операциях с рациональными числами первым делом мы как раз и столкнемся с увеличением разрядности в процессе приведения к общему знаменателю.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Straight Forth
СообщениеДобавлено: Сб июл 01, 2017 17:38 
Не в сети
Аватара пользователя

Зарегистрирован: Ср фев 23, 2011 20:42
Сообщения: 600
Откуда: Карелия
Благодарил (а): 3 раз.
Поблагодарили: 24 раз.
Так я тогда обиделся и ушел. А тут перечитал и понял, что ты тогда не понял вопроса. Американец предлагал базовыми числами в своем стандарте
C.) A number is a pair of 64-bit integers, which are the numerator and denominator of a ratio (the numerator is signed and the denominator is positive).
Но пока не показано как хотя бы мыслится сложение таких чисел, его предложение выглядит странным. Я об этом ему по английски что-то писал, об этом была одна из нитей разговора, а ты в треде тогда неожиданно сказал, что это "элементарно, Ватсон". А это ни фига не элементарно. Это вопрос вопросов, какую практическую реализацию арифметики таких чисел американец имел ввиду. Ну, например шито делать, если общий знаменатель не влезает в 64 бита ? Ну не эратосфенить же на лету.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Straight Forth
СообщениеДобавлено: Сб июл 01, 2017 18:12 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7958
Благодарил (а): 25 раз.
Поблагодарили: 144 раз.
Ethereal писал(а):
Так я тогда обиделся и ушел. А тут перечитал и понял, что ты тогда не понял вопроса. Американец предлагал базовыми числами в своем стандарте
C.) A number is a pair of 64-bit integers, which are the numerator and denominator of a ratio (the numerator is signed and the denominator is positive).
Но пока не показано как хотя бы мыслится сложение таких чисел, его предложение выглядит странным. Я об этом ему по английски что-то писал, об этом была одна из нитей разговора, а ты в треде тогда неожиданно сказал, что это "элементарно, Ватсон". А это ни фига не элементарно. Это вопрос вопросов, какую практическую реализацию арифметики таких чисел американец имел ввиду. Ну, например шито делать, если общий знаменатель не влезает в 64 бита ? Ну не эратосфенить же на лету.

А, вон как. Я с ним как раз долго обсуждал это дело, причем не в плане реализации, а в плане "и зачем?". Вокруг плавающей точки в Форте имеется не вполне понятная мне возня. Формально ведь все ожидаемо - пока FPU не было, были определенные заменители - fixed point, rational. Но когда FPU стал просто частью ядра, стало как-то странно не просто не давать плавающую точку, а давать заменитель. По рациональным числам именно эти вопросы и возникают. Даже если мы постоянно находим НОД и сокращаем, после некоторого количества операций разрядной сетки не хватит. И мы приходим обратно после большого круга - "а давайте разложим дробь в ряд!" А давайте... а можно по степеням двойки? ;) Ну и получили опять целое число, можно с двоичной точкой.

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


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Straight Forth
СообщениеДобавлено: Сб июл 01, 2017 20:33 
Не в сети
Аватара пользователя

Зарегистрирован: Ср фев 23, 2011 20:42
Сообщения: 600
Откуда: Карелия
Благодарил (а): 3 раз.
Поблагодарили: 24 раз.
HughAguilar писал(а):
Can I assume that English is well enough known in Russia for an English-only Straight Forth to be used?
There is a common requirement in Russian higher education - you must be able to read a technical documentation of your speciality in one of foreign languages (in most cases it is English). For example me - I can't talk in English, it is too quickly for me, I can't read a works of literature in English, too many unknown lexics for me, but I can easily read a technical texts in English, even with a certain part of unknown lexics in them. I simply guess the meaning of one or two unknown words in a sentence. And the vast majority of Russian programmers can.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Straight Forth
СообщениеДобавлено: Сб июл 01, 2017 21:11 
Не в сети
Аватара пользователя

Зарегистрирован: Ср фев 23, 2011 20:42
Сообщения: 600
Откуда: Карелия
Благодарил (а): 3 раз.
Поблагодарили: 24 раз.
Hishnik писал(а):
Так что рациональные числа можно добавить при наличии понимания, что с их помощью считать.
Наверное то же, что и с помощью чисел с плавающей запятой.
Надо попробовать, как предлагает HughAguilar, хранить не целые числа в виде дроби пока это возможно. А когда уже не возможно - автоматом преобразовывать к плавающей запятой. Реализовать такое и посмотреть насколько хорошо вышло. Вдруг и в самом деле хорошо ?


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Straight Forth
СообщениеДобавлено: Вс июл 02, 2017 01:32 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7958
Благодарил (а): 25 раз.
Поблагодарили: 144 раз.
Ethereal писал(а):
Наверное то же, что и с помощью чисел с плавающей запятой.

Тут есть важный момент. Возьмем, например, энергию E=h*f (обозначим частоту через f, чтобы с символами не путаться). И частота может быть 1E14 и выше, а постоянная Планка порядка E-34. Разница в 48 десятичных порядков. Считая, что 10^3 ~= 2^10, получаем приблизительно 160 разрядов, на которые эти числа различаются. Без экспоненциальной записи здесь будет необходимо именно столько и иметь, чтобы опуститься до постоянной Планка в "машинном нуле" (а там же нужно еще какую-то точность иметь, так что порядок будет еще меньше). Поэтому для вычислений, основанных на связках умножений-делений (множество формул физики, численное решение дифференциальных уравнений) удобнее иметь плавающую точку именно из-за большого динамического диапазона представляемых значений.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Straight Forth
СообщениеДобавлено: Сб июл 08, 2017 21:27 
Не в сети

Зарегистрирован: Сб май 13, 2006 23:37
Сообщения: 380
Благодарил (а): 1 раз.
Поблагодарили: 10 раз.
Перевести в логарифмы и складывать/вычитать


Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: Straight Forth
СообщениеДобавлено: Сб июл 08, 2017 21:57 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7958
Благодарил (а): 25 раз.
Поблагодарили: 144 раз.
forther писал(а):
Перевести в логарифмы и складывать/вычитать

Ну это к Интелу предложение, чтобы они FPU не ставили, а переводили в логарифмы и складывали/вычитали :D
К слову, именно по такому принципу FPU и работает, так что перевод в логарифмы руками означает попросту копирование работы FPU. Из упрямства?


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Straight Forth
СообщениеДобавлено: Вс июл 09, 2017 04:52 
Не в сети
Аватара пользователя

Зарегистрирован: Ср фев 23, 2011 20:42
Сообщения: 600
Откуда: Карелия
Благодарил (а): 3 раз.
Поблагодарили: 24 раз.
Hishnik писал(а):
forther писал(а):
Перевести в логарифмы и складывать/вычитать

Ну это к Интелу предложение, чтобы они FPU не ставили, а переводили в логарифмы
Нет к Микрочипу. Чтобы в свою систему команд добавила хотя бы целочисленное деление.
Какие еще нахрен FPU ? :shock: Там столбик и еще раз столбик.

Вот Атмел - молодец. Внямши стенаниям добавила в свою систему команд команды FMUL FMULS FMULSU ... с фиксированной запятой. Т.е. те самые команды, которые ты называл эрзац-заменителем плавающей запятой в Форте.
Hishnik писал(а):
Но когда FPU стал просто частью ядра, стало как-то странно не просто не давать плавающую точку, а давать заменитель.
Надо-же ... произошло движение в сторону заменителя. И, чувствую, за Атмелом и Микрочип подтянется в том-же направлении. Вот что Атмел при этом пишет: Формат (1.7) широко используется как входные числа для сигнальной обработки. Т.е. один бит слева от запятой и 7 бит справа, а всего байт. Что есть представление дробных чисел целым. А после умножения 2 бита слева от запятой и 14 справа, а всего слово. Ну чисто переменная DPL из Фиг-форта, хранящая сколько же бит справа от запятой в целом.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Straight Forth
СообщениеДобавлено: Вс июл 09, 2017 11:36 
Не в сети

Зарегистрирован: Чт янв 07, 2016 19:14
Сообщения: 1285
Благодарил (а): 3 раз.
Поблагодарили: 18 раз.
А зачем вообще нужна двойная арифметика?
Правильно, для больших и/или точных расчётов.
Так что двойная арифметика д.б. и на 64-ричных фортах.
Моя позиция: быть должна в виде библиотеки.
К тому же 64-бит или 128-бит арифметику можно организовать с помощью mm и xmm регистров в интеле.

Цитата:
Но записи типичных алгоритмов (таких как определение слова # ) становятся длиннее. Не выходит пока красоты без пестроты.

А не легче ли раскидать определения по словарям?
пусть будут два #, но одно для одинарных, другое для двойных. Проверку перед печатью легче ж устроить, верно?

_________________
Цель: сделать 64-битную Нову под Винду


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Straight Forth
СообщениеДобавлено: Вс июл 09, 2017 20:26 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7958
Благодарил (а): 25 раз.
Поблагодарили: 144 раз.
Ethereal писал(а):
Надо-же ... произошло движение в сторону заменителя. И, чувствую, за Атмелом и Микрочип подтянется в том-же направлении. Вот что Атмел при этом пишет: Формат (1.7) широко используется как входные числа для сигнальной обработки. Т.е. один бит слева от запятой и 7 бит справа, а всего байт. Что есть представление дробных чисел целым. А после умножения 2 бита слева от запятой и 14 справа, а всего слово. Ну чисто переменная DPL из Фиг-форта, хранящая сколько же бит справа от запятой в целом.


Цифровая обработка сигналов и плавающая точка как таковая - это довольно сложная тема. Если еще раз обратиться к различиям - плавающая точка берется не для разрешающей способности, а для динамического диапазона. В цифровой обработке сигналов динамический диапазон как раз не всегда большой, а если точнее - от широкого диапазона стараются избавиться. В любом случае 14-16 бит с АЦП - это уже много. Вопрос может быть в коэффициентах фильтра, и здесь переход к плавающей точке не только не состоялся, но и не считается обязательным. Конечно, если идет тонкая подстройка, то может быть коэффициент 12,6, который потом превращается в 12,634.... и все равно округляется до 13? Однако это можно выправить соответствующим выбором разрядности коэффициента.

Другое дело, например, численное решение дифференциальных уравнений. Тут при выборе слишком крупного шага легко можно попасть в неустойчивое решение. К тому же даже при маленьких значениях переменных необходимо сохранять достаточное количество разрядов мантиссы.

Ethereal писал(а):
И, чувствую, за Атмелом и Микрочип подтянется в том-же направлении.

Так Микрочип вроде бы уже купил Атмел?


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Straight Forth
СообщениеДобавлено: Вс июл 09, 2017 22:04 
Не в сети
Аватара пользователя

Зарегистрирован: Ср фев 23, 2011 20:42
Сообщения: 600
Откуда: Карелия
Благодарил (а): 3 раз.
Поблагодарили: 24 раз.
Hishnik писал(а):
Так Микрочип вроде бы уже купил Атмел?
Не к добру это, не к добру.

А вообще смысл моего пассажа был прост - если ты имеешь ввиду Форт только для ПК, ну так и оговаривай это. А то получается, что ты говоришь про Форт вообще, но при этом в твоих словах сквозит по умолчанию, что нет процессоров кроме Интеля и нет их применений кроме ПК.
Просто это как бы две разные проблемы - хороший Форт для ПК и хороший Форт вообще, годный и для ПК и для микроконтроллеров, где и FPU нету и памяти кот наплакал. Для второго случая набор слов FLOAT неизбежно пока будет опциональным и заменитель плавающей точки будет выглядеть вполне кстати. Пока микроконтроллеры такие, какие они есть.
Мне вот сильно не нравится стандарт 200x. Он как-то тихой сапой ползет под ПК. А я бы в нем разнес отдельно и явно универсальное ядро и расширение этого ядра под ПК. Ибо нужно и то и то. И с таким явным разнесением в ядро незаметно не пролезет то, что в случае микроконтроллеров будет бесполезно усложнять реализацию.

З.Ы. У меня вот привычка - любой свой код полировать пока не смогу сократить его ни на байт (при этом сокращения за счет грубого понижения быстродействия не рассматриваю). Я удовольствие получаю не от написания самой программы, а от ее оптимизации. Вот при этом меня прет. Так вот из всех ассемблеров Микрочиповский отличается тем, что в нем никак не можно сразу написать хотя бы близко к кратчайшемму варианту. Любой код для него уминается и уминается, его можно неделями уминать и все никак не кончить. А под другие системы команд получается сразу писать так, что только чуть-чуть еще за пару вечерков умять и все. От сего не люблю Микрочиповскую архитектуру. Привычна она, но не люблю. Корявая, слов нет. Атмеловская в этом отношении была куда лучше. Вот посему и пишу, что не к добру это, не к добру.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Straight Forth
СообщениеДобавлено: Пн июл 10, 2017 03:08 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7958
Благодарил (а): 25 раз.
Поблагодарили: 144 раз.
Ethereal писал(а):
Не к добру это, не к добру.

Atmel ведь и не имел большой доли рынка. Это в России он считался "немного выше PIC". А так линейка AVR пока сохраняется.

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

Ну, ПК/embedded у меня наверное в соотношении примерно 30/70. Да и то на ПК много моделирования и кросс-трансляции для embedded. Но тут есть такой момент, что аппаратная платформа должна в целом соответствовать задаче. Если мы работаем на МК, то и задача должна быть на этом МК решаема. В верхнем сегменте МК плавающая точка вполне применяется. Это мало относится к задачам простого управления и DSP, но тогда и не надо так уж игнорировать плавающую точку как таковую.
Ethereal писал(а):
хороший Форт вообще, годный и для ПК и для микроконтроллеров, где и FPU нету и памяти кот наплакал. Для второго случая набор слов FLOAT неизбежно пока будет опциональным и заменитель плавающей точки будет выглядеть вполне кстати. Пока микроконтроллеры такие, какие они есть.

Вот как раз не стоит использовать заменитель плавающей точки, если напрашивается плавающая точка. Библиотеку FLOAT я делал еще для 580ВМ80 (для ассемблера) - именно потому, что задача требовала (ну а процессор тогда был практически единственный). А сейчас МК лучше сразу выбирать такой, какой нужен для задачи, при необходимости с программной эмуляцией float. Настроения в Форте, что, дескать, Мур когда-то придумал двойные числа и это решение навсегда, "потому что Мур" - это в конечном итоге самообман. Можно говорить о неэффективной эмуляции, потере производительности и т.п., но аргумент "в Форте доказано, что плавающая точка не нужна" я полагаю несостоятельным. Наоборот, Форт как раз силен тем, что может адаптировать разные типы данных, форматы вызова, программные интерфейсы и проч. Навязывать какие-то религиозные моменты вроде двойной точности, блочного доступа к данным, означает снизить привлекательность языка в практическом плане. Придет, допустим, практик и скажет "слышал, что Форт очень прост, вот хочу плавающую точку на нем считать". А ему "не-не-не, нельзя, еще Мур сказал, что обойдетесь, так что надо обходиться". И что будет при таком подходе?

Ethereal писал(а):
Мне вот сильно не нравится стандарт 200x. Он как-то тихой сапой ползет под ПК. А я бы в нем разнес отдельно и явно универсальное ядро и расширение этого ядра под ПК. Ибо нужно и то и то. И с таким явным разнесением в ядро незаметно не пролезет то, что в случае микроконтроллеров будет бесполезно усложнять реализацию.

Ну тут можно ругаться с ANS-комитетом. Это если есть желание пообщаться с малоадекватными лузерами :D Там уже засилье Forth Inc с Единственно Правильным Фортом. И Антон Эртл как главный защитник, он же организатор Еврофорт. Которая скатилась до уровня местечкового семинара. На широкие массы выходить попросту боятся, и правильно делают, поскольку у не-фортеров наверняка того пиетета не окажется. А совершенно честный вопрос "не расскажете ли, что вы делаете на Форте" в комитете считают провокационным. Так что ситуация в Форте в целом соответствует мировой - США пытается доминировать, Европа послушно кивает и ничего сделать не может, Россия предлагает равноправное партнерство, но попадает под ругань от бессилия как-то повлиять. :))

Ethereal писал(а):
У меня вот привычка - любой свой код полировать пока не смогу сократить его ни на байт

Интересно сразу создавать оптимально взаимодействующие компилятор и процессорную архитектуру.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Straight Forth
СообщениеДобавлено: Пн июл 10, 2017 08:36 
Не в сети
Аватара пользователя

Зарегистрирован: Ср фев 23, 2011 20:42
Сообщения: 600
Откуда: Карелия
Благодарил (а): 3 раз.
Поблагодарили: 24 раз.
Hishnik писал(а):
но аргумент "в Форте доказано, что плавающая точка не нужна" я полагаю несостоятельным.
Так ведь никто и не говорил, что плавающая точка не нужна. Я например говорил, что она должна быть опциональна. Т.е. не обязательна. Ядро CORE без нее и стандартизованное опциональное расширение FLOAT.
Hishnik писал(а):
Мур когда-то придумал двойные числа и это решение навсегда, "потому что Мур" - это в конечном итоге самообман.
Двойные числа не потому, что Мур, а потому-что должно же быть в конце концов целочисленное умножение, которое всегда считает правильно. А считать правильно всегда оно будет только тогда, когда произведение будет иметь в два раза больще разрядов, чем множители. Аналогично двойные числа для делимого требует целочисленное деление. Если такое деление есть, то и деление целых любой разрядности организуется просто и красиво. Короче, двойные целые для умножения и деления это примерно то же, что перенос и заем для сложения и вычитания - способ перехода к целым операндам любой разрядности.


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

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


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

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


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

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