Forth
http://fforum.winglion.ru/

ПЕРЛ против ФОРТ
http://fforum.winglion.ru/viewtopic.php?f=34&t=1959
Страница 11 из 11

Автор:  mOleg [ Вт фев 24, 2009 19:41 ]
Заголовок сообщения: 

Wlad писал(а):
chess писал(а):Попробуйте написать мажоритар хотя бы для пяти параметров на стеке и поймете, что решение для трех параметров уже ни с какого боку полезным не будет. Вот может когда напишете для пяти, то станет понятно как написать мажоритар для 7, 9 и т.д. небольшого количества параметров.

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

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

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

Автор:  mOleg [ Вт фев 24, 2009 19:47 ]
Заголовок сообщения: 

Wlad писал(а):
Mihail писал(а):И чем можификация частного решения не настройка общего?

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

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

Автор:  forther [ Вт фев 24, 2009 22:59 ]
Заголовок сообщения: 

Wlad писал(а):
Да я лучше общую задачу решу один раз, а решения её частных будут просто достигаться её "настройкой", "параметризацией"


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

Автор:  chess [ Ср фев 25, 2009 08:59 ]
Заголовок сообщения: 

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 один и тот же.
Бывают конечно задачи с линейным ростом сложности - вообщем, да, интерфейс определяется задачей, но все-таки не программистом.

Автор:  mOleg [ Ср фев 25, 2009 20:25 ]
Заголовок сообщения: 

chess писал(а):
Как видно уже при 5-ти параметрах встает вопрос об общем алгоритме и интерфейс для всех решений кроме
maj3 один и тот же.

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

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

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

Автор:  chess [ Ср фев 25, 2009 20:58 ]
Заголовок сообщения: 

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

Ну это да. :D

Автор:  Kopa [ Чт мар 11, 2010 01:38 ]
Заголовок сообщения: 

Добавлю ссылку по интеграции Форта в Perl PGForth1.3

Автор:  MrYuran [ Пн мар 15, 2010 12:48 ]
Заголовок сообщения: 

mOleg писал(а):
Хищник писал(а):
Класс! Для сравнения можно посмотреть на современные претензии к Форту...

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

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

Автор:  KPG [ Чт мар 25, 2021 06:28 ]
Заголовок сообщения:  Re:

Wlad писал(а):
А сейчас одно из последствий кризиса будет ужесточение торговых войн. И ещё не известно с чем нам придётся столкнуться...

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

Автор:  Hishnik [ Сб мар 27, 2021 01:00 ]
Заголовок сообщения:  Re: ПЕРЛ против ФОРТ

Современная ситуация вполне располагает к тому, чтобы делать собственные ИТ-проекты. Тут и административный ресурс в виде всяких фондов и программ, и общий настрой, уходящий в сторону "нам бы подстраховаться российским разработчиком".

Автор:  KPG [ Сб мар 27, 2021 12:31 ]
Заголовок сообщения:  Re: ПЕРЛ против ФОРТ

На форуме игроделов, в треде одного обсуждения (делегатов в 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 в помощь)

Автор:  KPG [ Сб апр 03, 2021 16:48 ]
Заголовок сообщения:  Re: ПЕРЛ против ФОРТ

Статья из серии Открывая Форт на Хабре Численный FORTH

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

Автор:  KPG [ Ср ноя 09, 2022 04:59 ]
Заголовок сообщения:  Re: ПЕРЛ против ФОРТ

Forth в Perl (базис Forth83)

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

Автор:  KPG [ Ср ноя 23, 2022 06:34 ]
Заголовок сообщения:  Re: ПЕРЛ против ФОРТ

В репозитории проекта perlweeklychallenge-club

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

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

Страница 11 из 11 Часовой пояс: UTC + 3 часа [ Летнее время ]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/