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

...
Google Search
Forth-FAQ Spy Grafic

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




Начать новую тему Ответить на тему  [ Сообщений: 164 ]  На страницу Пред.  1 ... 7, 8, 9, 10, 11
Автор Сообщение
 Заголовок сообщения:
СообщениеДобавлено: Вт фев 24, 2009 19:41 
Не в сети
Moderator
Moderator
Аватара пользователя

Зарегистрирован: Чт май 04, 2006 00:53
Сообщения: 5062
Откуда: был Крым, теперь Новосибирск
Благодарил (а): 23 раз.
Поблагодарили: 63 раз.
Wlad писал(а):
chess писал(а):Попробуйте написать мажоритар хотя бы для пяти параметров на стеке и поймете, что решение для трех параметров уже ни с какого боку полезным не будет. Вот может когда напишете для пяти, то станет понятно как написать мажоритар для 7, 9 и т.д. небольшого количества параметров.

Так вот и я из-за этого как-то умственно плечами пожимал, когда читал высказывания Броуди про преимущество частных решений...

Да я лучше общую задачу решу один раз, а решения её частных будут просто достигаться её "настройкой", "параметризацией", а не переписыванием кода каждый раз заново... Буде общая задача успешно решена у меня будет меньше шансов "зевнуть" при очередном переписывании и перерешении очередной разновидности поставленной задачи. Дело ведь не только в ошибках типа количества параметров на стеке! Всё может быть гораздо серьёзней, когда стековый "приход/расход" в ажуре, а сам вычислительный алгоритм - с ошибкой...

и именно из-за таких в НАСА решили не использовать старый код в проектах (считается что он не менее глючный, чем новый).
Меняются условия - меняются решения. Никто вам не мешает делать более медленные и громоздкие решения на форте, которые будут учитывать изменения количества и качества данных, но так делать не удобно и не принято (не более того).
Вы ведь прекрасно понимаете, что часть кода для, к примеру, 8 разрядного микропроцессора становится просто ненужной при переходе на 16 разрядный.
Вобщем проблема опять же не частная (Форта) а общая для всего программирования: грамотное проектирование интерфейсов!

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


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Вт фев 24, 2009 19:47 
Не в сети
Moderator
Moderator
Аватара пользователя

Зарегистрирован: Чт май 04, 2006 00:53
Сообщения: 5062
Откуда: был Крым, теперь Новосибирск
Благодарил (а): 23 раз.
Поблагодарили: 63 раз.
Wlad писал(а):
Mihail писал(а):И чем можификация частного решения не настройка общего?

Тем, что в этом случае это именно изменение алгоритма, это будет уже ДРУГОЕ решение, а параметризуемый алгоритм уже - ГОТОВОЕ ОБЩЕЕ решение.

но вы ведь прекрасно знаете, что такие общие решения часто избыточны, громоздки, неторопливы и сложны для анализа.
на самом деле такие решения спасают где-нить в matcad-е или еще где нужно быстрое прототипирование, то есть сборка из уже готовых кирпичиков - ничего что оно будет тормозить и много "весить", главное быстро можно прикинуть, что оно такое получается.

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


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Вт фев 24, 2009 22:59 
Не в сети

Зарегистрирован: Сб май 13, 2006 23:37
Сообщения: 380
Благодарил (а): 1 раз.
Поблагодарили: 10 раз.
Wlad писал(а):
Да я лучше общую задачу решу один раз, а решения её частных будут просто достигаться её "настройкой", "параметризацией"


Если б, скажем, IDCT считалось алгоритмом общего вида (умножениями и транспозициями матриц) то цифрового телевидения до сих пор бы не было.


Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Ср фев 25, 2009 08:59 
Не в сети
Аватара пользователя

Зарегистрирован: Чт июл 20, 2006 11:31
Сообщения: 2168
Откуда: Екб
Благодарил (а): 0 раз.
Поблагодарили: 41 раз.
mOleg писал(а):
Если заранее известно, что количество входных параметров будет меняться, я выберу другой интерфейс - буду передавать не значения на стеке данных, а адрес на массив значений, и так далее.

Бывают задачи, в которых сложность растет комбинаторно от количества параметров(maj именно такой случай).
В основе получения мажоритара комбинаторика, а именно сочетания.
Там нужно произвести сравнения групп параметров и число таких групп это число сочетаний:

n!/((n/2+1)!*(n-n/2-1)!)
3!/2!*1!=3 011 101 110
5!/(3!*2!)=10 00111 01011 01101 01110 10011 10101 10110 11001 11010 11100
7!/(4!*3!)=35 0001111 ... 1111000
9!/(5!*4!)=126
11!/(6!*5!)=462
Как видно уже при 5-ти параметрах встает вопрос об общем алгоритме и интерфейс для всех решений кроме
maj3 один и тот же.
Бывают конечно задачи с линейным ростом сложности - вообщем, да, интерфейс определяется задачей, но все-таки не программистом.

_________________
С уважением, chess


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Ср фев 25, 2009 20:25 
Не в сети
Moderator
Moderator
Аватара пользователя

Зарегистрирован: Чт май 04, 2006 00:53
Сообщения: 5062
Откуда: был Крым, теперь Новосибирск
Благодарил (а): 23 раз.
Поблагодарили: 63 раз.
chess писал(а):
Как видно уже при 5-ти параметрах встает вопрос об общем алгоритме и интерфейс для всех решений кроме
maj3 один и тот же.

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

chess писал(а):
вообщем, да, интерфейс определяется задачей, но все-таки не программистом.

не так,
интерфейс определяется программистом под задачу. (программист может ошибаться при этом)

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


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Ср фев 25, 2009 20:58 
Не в сети
Аватара пользователя

Зарегистрирован: Чт июл 20, 2006 11:31
Сообщения: 2168
Откуда: Екб
Благодарил (а): 0 раз.
Поблагодарили: 41 раз.
mOleg писал(а):
не так,
интерфейс определяется программистом под задачу. (программист может ошибаться при этом)

Ну это да. :D

_________________
С уважением, chess


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Чт мар 11, 2010 01:38 
Не в сети
Moderator
Moderator

Зарегистрирован: Ср май 10, 2006 15:37
Сообщения: 1132
Откуда: Chelyabinsk ( Ural)
Благодарил (а): 0 раз.
Поблагодарили: 9 раз.
Добавлю ссылку по интеграции Форта в Perl PGForth1.3


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Пн мар 15, 2010 12:48 
Не в сети

Зарегистрирован: Вс июн 21, 2009 19:11
Сообщения: 81
Откуда: Н.Новгород
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
mOleg писал(а):
Хищник писал(а):
Класс! Для сравнения можно посмотреть на современные претензии к Форту...

Получается, что Форт занимает одновременно много ниш и уровней, при этом целиком не находясь ни в одной(одном) из них :)

Ну да, как в известной картинке от Броуди...
А может, как-то систематизировать эти уровни наподобие 7-уровневой модели ISO OSI и стандартизировать пограничные интерфейсы?
Именно интерфейсы, а не отдельные слова. Пишите внутри модуля что хотите, но наружу выводите стандартные (а главное, документированные) интерфейсы.
А вообще, полезно взглянуть на опыт сообщества GNU.


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

Зарегистрирован: Пн янв 07, 2013 22:40
Сообщения: 2141
Благодарил (а): 8 раз.
Поблагодарили: 74 раз.
Wlad писал(а):
А сейчас одно из последствий кризиса будет ужесточение торговых войн. И ещё не известно с чем нам придётся столкнуться...

:) Прошло 12 лет (+- 2года) на виток движения по спирали.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: ПЕРЛ против ФОРТ
СообщениеДобавлено: Сб мар 27, 2021 01:00 
Не в сети
Administrator
Administrator
Аватара пользователя

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


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: ПЕРЛ против ФОРТ
СообщениеДобавлено: Сб мар 27, 2021 12:31 
Не в сети

Зарегистрирован: Пн янв 07, 2013 22:40
Сообщения: 2141
Благодарил (а): 8 раз.
Поблагодарили: 74 раз.
На форуме игроделов, в треде одного обсуждения (делегатов в C++ и попутная статья по ним Указатели на функции-члены и реализация самых быстрых делегатов на С++.)
gudleifr
предложил нижеследующее решение, как можно получить, применительно к Форт, адрес поля имени слова.
(рабочее для Win32Forth, код и имена хранятся в разных пространствах и требуется >NAME.)
Код:
: СИМВОЛ HERE CREATE >NAME , DOES> @ ;

СИМВОЛ One СИМВОЛ Two СИМВОЛ Three


Проверка этого кода Online (для gForth) показало, что он для gForth не приводит к решению озвученной задачи.

Опытным путём был создан такой код для gForth и проверен по выводимому результату тестового выполнеия.
Код:
: СИМВОЛ  HERE CREATE , DOES> POSTPONE >NAME @ CELL + ;

СИМВОЛ One  СИМВОЛ Two  СИМВОЛ Three

One   DUP 1 CELLS + SWAP C@  TYPE CR
Two   DUP 1 CELLS + SWAP C@  TYPE CR
Three DUP 1 CELLS + SWAP C@  TYPE CR


P.S. Разница в коде, как видно, первого и второго решения существенна в реализации на конкретной Форт системе.
Какое решение будет работоспособно, например, в SPF4 не выяснял, но, вероятно, там есть и подходящее слово такой функциональности, впрочем и как наверное для gForth. :) (слово SEE <words> для просмотра реализации тех или иных слов в gForth в помощь)


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: ПЕРЛ против ФОРТ
СообщениеДобавлено: Сб апр 03, 2021 16:48 
Не в сети

Зарегистрирован: Пн янв 07, 2013 22:40
Сообщения: 2141
Благодарил (а): 8 раз.
Поблагодарили: 74 раз.
Статья из серии Открывая Форт на Хабре Численный FORTH

P.S. Упомянутый в статье F-PC есть и на Github


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: ПЕРЛ против ФОРТ
СообщениеДобавлено: Ср ноя 09, 2022 04:59 
Не в сети

Зарегистрирован: Пн янв 07, 2013 22:40
Сообщения: 2141
Благодарил (а): 8 раз.
Поблагодарили: 74 раз.
Forth в Perl (базис Forth83)

P.S. Кстати, наиболее адекватно отработал поисковик DuckDuckGo при поиске тем со словом Perl по форуму


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: ПЕРЛ против ФОРТ
СообщениеДобавлено: Ср ноя 23, 2022 06:34 
Не в сети

Зарегистрирован: Пн янв 07, 2013 22:40
Сообщения: 2141
Благодарил (а): 8 раз.
Поблагодарили: 74 раз.
В репозитории проекта perlweeklychallenge-club

находится и некоторое число решений задач на Форт языке от пользователя paulo-custodio на gForth.

P.S. Решения по предлагаемым задачам можно представлять на любых языках в рамках конкурса на площадке https://theweeklychallenge.org/challenges/
(каждую неделю 2-e новые задачи для решения)


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

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


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

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


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

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