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

...
Google Search
Forth-FAQ Spy Grafic

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




Начать новую тему Ответить на тему  [ Сообщений: 255 ]  На страницу Пред.  1, 2, 3, 4, 5 ... 17  След.
Автор Сообщение
 Заголовок сообщения:
СообщениеДобавлено: Пн дек 10, 2007 13:30 
Не в сети

Зарегистрирован: Вс дек 02, 2007 17:31
Сообщения: 442
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
K`[f писал(а):
Нужно возвращаться назад по ходу движения программы и т.п. Кажется, небольшая проблема - все не раз так делали и достаточно успешно - но вспомните - так ли просто всегда определить, что данные на стеке - мусор, не относящийся к делу? Теперь сравните эту ситуацию с обычным "C" - строго заданный набор переменных.
То есть: в С мы имеем, например:

iZink = iFuncx(bBig, bGood, dMass, iQuote);

Типа все ясно. Если вам такой вариант нравится, почему бы не записать это на Форте таким образом:

bBig bGood dMass iQuote iFuncx TO iZink

Или:

bBig @ bGood @ dMass @ iQuote @ iFuncx iZink !

Далеко откатыаваться не придется. Можете так же как и в С держать стек пустым между отдельными выражениями, никто не мешает. :D

_________________
Am I evil? I'm man - yes I am! © James Hatefield


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Пн дек 10, 2007 14:28 
Не в сети

Зарегистрирован: Чт окт 25, 2007 08:01
Сообщения: 154
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Pretorian писал(а):
А что там "насрут" другие языки при компиляции, меня раздражает разбирать.


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

Forthware писал(а):
Если вам такой вариант нравится, почему бы не записать это на Форте таким образом:


Ну - первая причина - мне понадобилось несколько секунд, чтобы сообразить, что вы пытаетесь сделать.

Вторая - если ОБЯЗАТЕЛЬНО пихать вычисленные значения в переменные и заводить для этого переменные (даже локальные) - это уже не Форт будет.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Пн дек 10, 2007 14:28 
Не в сети

Зарегистрирован: Ср май 03, 2006 11:27
Сообщения: 1394
Откуда: St.Petersburg
Благодарил (а): 2 раз.
Поблагодарили: 11 раз.
Kopa писал(а):
Прежде всего теряем гибкость при последующих возможных изменениях
текущего кода из-за фиксации синтаксиса


Для этого, классический Форт остается в доступе.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Пн дек 10, 2007 14:46 
Не в сети

Зарегистрирован: Вс дек 02, 2007 17:31
Сообщения: 442
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
K`[f писал(а):
стек чисел с плавающей точкой,
Он и так везде есть в том числе и в ANSI предусматрен.
K`[f писал(а):
стек структур управления
Предусмотрен ANSI (если я верно понял). Я его еще использовал для локальных переменных.
K`[f писал(а):
стек адресов,
Вот только это что-то новое, собственно. :) Однако его внедрение сделает новый язык не совсем совместимым с Фортом. Если "!" будет брать адрес с AS а данные с DS. Тут или забить на половину общепринятого синтаксиса Форта, либо просто расширить его. То-есть, все слова что есть в ANSI будут работать с DS, как обычно, а мы просто добавим новые, которые будут уже работать с обеими стеками. Пожалуй такой вариант имеет право на существование, поскольку пятый (!!!) стек может оказаться вполне полезным. К тому же, если это расширение, и язык продолжает быть совместимым с другими, то мы ничего не теряем! :D
ЗЫ У х86 как раз есть 4 "индексных" регистра, таким образом все будут использованы в полной мере. :)

Ээээ... Так может стоит взять и написать такое расширение? Для какого нить из существующих Фортов? Для эффективной работы и реального повышения производительности надо это делать в асме, поэтому результат будет совместим только с конкретной реализацией, поскольку регистровое распределение и особенности компиляции у всех свои.
Я вас верно понял? :roll: :D

_________________
Am I evil? I'm man - yes I am! © James Hatefield


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Пн дек 10, 2007 14:55 
Не в сети

Зарегистрирован: Вс дек 02, 2007 17:31
Сообщения: 442
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
K`[f писал(а):
Ну - первая причина - мне понадобилось несколько секунд, чтобы сообразить, что вы пытаетесь сделать.
Что именно вас смутило? Если непонятно что есть переменные а что функция, очень просто решается путем использования венгерской нотации. ;) Я серьезно.
K`[f писал(а):
Вторая - если ОБЯЗАТЕЛЬНО пихать вычисленные значения в переменные и заводить для этого переменные (даже локальные) - это уже не Форт будет.
Вах! А какая разница? Если вам не нравится писать так как пишут все (что вы заявили) пишите по другому! Нигде не сказанно как писать правильно а как нельзя. Если вы не можете держать в стеке инфу, не держите!
Каждый волен пользоваться языком так как это ему удобнее, если вам удобнее так, пожалуйста, думаю Броди не обидится ;).
Кстати, тот же Броди, про те же локальные переменные говорит, что если у вас больше чем 3-4 аргумента, то часто бывает полезно тупо распихать их по переменных на входе и дальше использовать по мере надобности. Где то в "Thinking Forth" есть такое. :D

Кстати, если писать так, что к концу каждой строчки стек пустой, то можно и определения на 200 строк вполне читабельными
делать. И даже не надо Форт до С наращивать! :twisted:
Это, конечно, если кому надо. :roll:

_________________
Am I evil? I'm man - yes I am! © James Hatefield


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Пн дек 10, 2007 20:37 
Не в сети

Зарегистрирован: Чт окт 25, 2007 08:01
Сообщения: 154
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Forthware писал(а):
Он и так везде есть в том числе и в ANSI предусматрен.

Forthware писал(а):
Предусмотрен ANSI (если я верно понял). Я его еще использовал для локальных переменных.


Я говорю про ОТДЕЛЬНЫЕ стеки. И чтобы это было закреплено на уровне стандарта!!!

Forthware писал(а):
Вот только это что-то новое, собственно. Smile Однако его внедрение сделает новый язык не совсем совместимым с Фортом.


Дык, повторяю, моё имхо тут - в нынешнем виде Форт популярности добиться НЕ МОЖЕТ.

Forthware писал(а):
Вах! А какая разница? Если вам не нравится писать так как пишут все (что вы заявили) пишите по другому!


Во-первых - можно цитату, где это я такое заявлял? :) Во-вторых - Форт должен оставаться Фортом, но не формально, а по сути!


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

Зарегистрирован: Вс дек 02, 2007 17:31
Сообщения: 442
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
K`[f писал(а):
Я говорю про ОТДЕЛЬНЫЕ стеки. И чтобы это было закреплено на уровне стандарта!!!
В ANSI сказано что FS и CS предположительно существуют и операции для работы с ними предусмотрены и должны быть реализованы. Так что на уровне стандарта есть просто не является обязательным, поскольку CS может быть продублирован с помощью DS и операции на нем тоже, а FS может быть не реализован, однако в большинстве случаев FS все-таки отделен от DS.
K`[f писал(а):
Дык, повторяю, моё имхо тут - в нынешнем виде Форт популярности добиться НЕ МОЖЕТ.
Не думаю что простое добавление одного (уже пятого) стека каким либо образом повлияет на его популярность. Может даже наоборот, оттолкнет некоторых существующих фортеров. А чем оно особенно более привлекательно за ANSI для новичков?
K`[f писал(а):
Во-первых - можно цитату, где это я такое заявлял?

Вот тут:
K`[f писал(а):
Как мне кажется, в нынешнем Форте мало средств абстракции данных. Сравните - если в Форте на вход слова приходит непонятно что, то мы, в общем случае, не можем даже предположить, откуда оно пришло и что означает. Нужно возвращаться назад по ходу движения программы и т.п. Кажется, небольшая проблема - все не раз так делали и достаточно успешно - но вспомните - так ли просто всегда определить, что данные на стеке - мусор, не относящийся к делу? Теперь сравните эту ситуацию с обычным "C" - строго заданный набор переменных. И если в них что-то лежит, значит - компилятор по какой-то причине вычислил эти значения. Если там мусор - значит, по каким-то соображениям мы применяли "хак" системы (типа сложной адресной арифметики) и копать в первую очередь надо именно туда. Последняя ситуация в Форте является штатной.

:twisted:
K`[f писал(а):
Во-вторых - Форт должен оставаться Фортом, но не формально, а по сути!
А по сути это как? Где эта суть задокументирована? :shuffle; :lol:
К тому же, где и кем сказано что "должен"? :?


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Пн дек 10, 2007 23:00 
Не в сети

Зарегистрирован: Вт май 09, 2006 12:31
Сообщения: 3438
Благодарил (а): 5 раз.
Поблагодарили: 16 раз.
Mihail писал(а):
Kopa писал(а):
Прежде всего теряем гибкость при последующих возможных изменениях
текущего кода из-за фиксации синтаксиса


Для этого, классический Форт остается в доступе.

Само собою, иначе зачем огород городить

_________________
понимаю некоторую бестолковость некоторых вопросов


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Пн дек 10, 2007 23:22 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7960
Благодарил (а): 25 раз.
Поблагодарили: 144 раз.
Ilya писал(а):
По поводу GUI и интерактивности.
Требовалось срочно (дело было в командировке на объекте) выявить ошибку в протоколе обмена (RS-485), проблема была решена макс. за 1/2 часа написанием на SPF-е "шпиёна", который подслушивал (и писал в лог) обмен по магистрали!
И ессно безо всякого GUI.

А я GUI в чисто виндовом стиле как раз обычно и не делаю. Есть плоский графический экран, на него можно выводить в произвольном порядке. Это, по меньшей мере, дает возможность строить график...
K`[f писал(а):
Если у автора с головой всё в порядке, то получается решение не хуже, чем на Форте, к тому же не требующее танцев с бубном "как его прикрутить".

Тогда уж надо, чтобы с головой было все в порядке. То есть настолько все, что проектирование языка с нуля прошло бы на ура и без явных и неявных ошибок. И не только без ошибок, а еще и эффективно. Думается, что знание Форта тут в любом случае не помешает.
K`[f писал(а):
У Форта и сейчас нет никаких проблем с расширяемостью. Однако популярности это ему не добавило.

Определиться бы еще с понятием популярность. Какая-нибудь "муси-пуси" с фабрики звезд популярна? Не получится ли так, что популярность Форт приобретет, когда станет понятен и любим дилетантами за быстрое исчерпание возможностей при освоении?
K`[f писал(а):
стек чисел с плавающей точкой, стек адресов, стек структур управления - и они должны быть ИМЕНННО раздельными.

Они и так раздельные - стек данных, возвратов, управления, вещественных чисел, (опционально - циклов).


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

Зарегистрирован: Чт май 04, 2006 18:18
Сообщения: 456
Благодарил (а): 0 раз.
Поблагодарили: 1 раз.
K`[f писал(а):
Я неоднократно уже на этом форуме предлагал попробовать ввести несколько стеков - в первую очередь, чтобы они ВСЕГДА были под контролем программиста - стек чисел с плавающей точкой, стек адресов, стек структур управления - и они должны быть ИМЕНННО раздельными. Важно - попробовать это решение в деле, я не призываю все всё бросить и заниматься этой идеей. Без опробации не стоит и рассматривать её серъёзно.

И? Дальше призывов к "опробации" сферически-вакуумной идеи дело пойдёт? Хинт : вероятность того что эту идею реализует кто-то кроме вас - почти ноль. Напишите расширение, опробуйте в деле, сделайте доступным для использования. Учитывая просто неисчислимое множество ничем-не-занятых-сидящих-без-дела фортеров ожидающих пока кто-нибудь придёт и подскажет им идею которую можно реализовать - одни только словесные рассуждения ничем не помогут в "опробации" этой идеи.

_________________
http://forth.org.ru/~ygrek


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Вт дек 11, 2007 01:30 
K`[f писал(а):
Я говорю про ОТДЕЛЬНЫЕ стеки. И чтобы это было закреплено на уровне стандарта!!!

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


Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Вт дек 11, 2007 07:02 
Не в сети

Зарегистрирован: Ср сен 13, 2006 10:06
Сообщения: 636
Откуда: Омск
Благодарил (а): 0 раз.
Поблагодарили: 3 раз.
K`[f писал(а):
Pretorian писал(а):
А что там "насрут" другие языки при компиляции, меня раздражает разбирать.

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

Привычка во все вникать, . А что "срут" ну типа STL и прочее.


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

Зарегистрирован: Чт окт 25, 2007 08:01
Сообщения: 154
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Forthware писал(а):
В ANSI сказано что FS и CS предположительно существуют и операции для работы с ними предусмотрены и должны быть реализованы. Так что на уровне стандарта есть просто не является обязательным, поскольку CS может быть продублирован с помощью DS и операции на нем тоже, а FS может быть не реализован, однако в большинстве случаев FS все-таки отделен от DS.


У... Похоже, у меня какие-то проблемы с объяснениями - меня в упор не понимают. :( Я говорю про ФИЗИЧЕСКИ раздельные стеки как средство повышения уровня абстракции данных. И чтобы это было закреплено на уровне стандартов.

Аналогия с "C" - как там это сделано - операция, допустим, "+" для числа и для указателя - совершенно разные вещи. А в Форте - сами значете что (хотя, упаси Боже, я не призываю делать "как там" - явная адресация Форта, имхо, прозрачнее). И если мы признаем, что указатель, с точки зрения программной логики, не есть число - то мы тоже должны выделить и операции с ним и отдельный стек. Чем-то мне это напоминает ситуацию с VALUE и TO - я бы их вообще выкинул...

Forthware писал(а):
А чем оно особенно более привлекательно за ANSI для новичков?


А ничем. Форт и так куда легче чем "С". Тем более - если человек ДЕЙСТВИТЕЛЬНО новичок, а не опытный программист, то порой ему бывает надо долго втолковывать зачем писать комментарии, а не то что там какая-то абстракция данных... Отдельные стеки нужны для разработки сложных систем. Имхо, конечно.

Forthware писал(а):
Вот тут:


А причём тут "не нравится как всем"? Честно - не понимаю. Ситуация такая, что "нравится - не нравится..." - многие, думаю, даже не задумываются.

Forthware писал(а):
А по сути это как? Где эта суть задокументирована? shuffle Laughing
К тому же, где и кем сказано что "должен"? Confused


Всеми. Никем. :) Броуди тот-же... Для меня Форт - это, в первую очередь, слова и управление процессом компиляции с помощью IMMEDIATE-слов. Ну ещё идея стека, как простейшей реализации расширяемости. У каждого, думаю, что-то своё, но, подозреваю, все понимают про что я говорю. А "должен" - это моё имхо...

Хищник писал(а):
Определиться бы еще с понятием популярность. Какая-нибудь "муси-пуси" с фабрики звезд популярна? Не получится ли так, что популярность Форт приобретет, когда станет понятен и любим дилетантами за быстрое исчерпание возможностей при освоении?


Мне в этом плане C++ на многое открыл глаза. Когда отношение затрат на написание к производительности, с учётом "текущего момента" в виде мощности средней машины, становится более привлекательным, чем предыдущий уровень - тогда никакая сложность людей не останавливает. К тому же - Форт гораздо проще тех же плюсов. И он действительно понятен любым дилетантам...

Хищник писал(а):
Они и так раздельные - стек данных, возвратов, управления, вещественных чисел, (опционально - циклов).


Цитаты:

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

"Элементы на стеке возвратов должны состоять из одной или более ячеек. Система
может использовать стек возвратов зависящим от реализации способом в течение
компиляции определений, в течение выполнения do-loops, и для сохранения
вложенной информации во время выполнения."

А вот это - вообще шедевр "сильной связи", имхо:

"Стек с плавающей точкой: По умолчанию стек с плавающей точкой отделен от стеков
данных и возвратов; однако реализация может сохранять числа с плавающей точкой
на стеке данных. Программа может определять, сохраняются ли числа с плавающей
точкой на стеке данных передачей строки FLOATING-STACK в ENVIRONMENT?. Это опыт
нескольких членов Технического Комитета, что с надлежащей практикой
кодирования, возможно написать код с плавающей точкой, который будет работать
тождественно на системах с отдельным стеком с плавающей точкой и с числами с
плавающей точкой сохраняемыми на стеке данных."

ygrek писал(а):
И? Дальше призывов к "опробации" сферически-вакуумной идеи дело пойдёт? Хинт : вероятность того что эту идею реализует кто-то кроме вас - почти ноль


Абсолютно с вами согласен. В этом-то и беда. Если накопилось критическое число людей, считающих, что нужно что-то кардинально изменить - то мы можем попробовать вместе. Один-другой-третий и т.д. вариант. Тестовые примеры, фрагменты существующих РЕАЛЬНЫХ программ - и выбрать что-то реально лучшее. Если нет - то, думаю, усилия одиночки тут бесполезны...

ArtemKAD писал(а):
Но указано, что он в принципе (по желанию реализации) может быть размещен на стеке данных.


О - хоть кто-то понял про что я. :)

Pretorian писал(а):
Привычка во все вникать, . А что "срут" ну типа STL и прочее.


Гм? У меня никогда с этим проблем не было, правда, собственно дизассемблированием я не занимался со времён спектрума. :) Всегда можно создать некоторое "узкое место" в своей программе, через которое пройдут требуемые данные - и там их проконтролировать.


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Вт дек 11, 2007 10:15 
K`[f писал(а):
Я говорю про ФИЗИЧЕСКИ раздельные стеки как средство повышения уровня абстракции данных. И чтобы это было закреплено на уровне стандартов.

Аналогия с "C" - как там это сделано - операция, допустим, "+" для числа и для указателя - совершенно разные вещи. ...


Смысл в физическом отделении стека управления может быть есть, но
нехватает только действительно примеров его использования в рантайме:)

P.S. Ничто не мешает для адресов и данных ввести разные мнемоники операций.


Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Вт дек 11, 2007 12:02 
Не в сети

Зарегистрирован: Пн ноя 05, 2007 13:54
Сообщения: 144
Благодарил (а): 0 раз.
Поблагодарили: 13 раз.
K`[f писал(а):
У... Похоже, у меня какие-то проблемы с объяснениями - меня в упор не понимают. :( Я говорю про ФИЗИЧЕСКИ раздельные стеки как средство повышения уровня абстракции данных. И чтобы это было закреплено на уровне стандартов.

Именно так и пишут на Форте. В большинстве серьезных расширений создаются пользовательские стеки для самых различных нужд.

K`[f писал(а):
И если мы признаем, что указатель, с точки зрения программной логики, не есть число - то мы тоже должны выделить и операции с ним и отдельный стек.

В языке Forpost используется стек указателей, приобретен некоторый опыт его использования. В сборщике мусора для Форта ссылки аналогично помещаются на специальный стек.
Позволю себе привести цитату из Ч. Хоара по поводу проектирования языков:
"Если вы хотите, чтобы у языка не было подмножеств, создавайте маленький язык. Вы включаете только те свойства, о которых вы знаете, что они необходимы для каждого приложения языка, и о которых вы знаете, что они годятся для каждой аппаратной конфигурации, на которой этот язык реализован. Тогда там, где необходимо, должны быть разработаны расширения для конкретных аппаратных устройств и для конкретных приложений."
Создать подобный маленький, но выразительный язык это настоящее искусство. И это гораздо труднее, чем соорудить очередного монстра с C-подобным синтаксисом, но зато по всем правилам Dragon Book.
Почему же то, что вполне можно оставить для расширений, Вы так стремитесь внести именно в стандарт?

K`[f писал(а):
К тому же - Форт гораздо проще тех же плюсов. И он действительно понятен любым дилетантам...

В этом состоит большое заблуждение дилетантов. На самом деле, проще написать ту же Форт-систему, чем научиться программировать на Форте.

K`[f писал(а):
Абсолютно с вами согласен. В этом-то и беда. Если накопилось критическое число людей, считающих, что нужно что-то кардинально изменить - то мы можем попробовать вместе. Один-другой-третий и т.д. вариант. Тестовые примеры, фрагменты существующих РЕАЛЬНЫХ программ - и выбрать что-то реально лучшее. Если нет - то, думаю, усилия одиночки тут бесполезны...

Тогда можно заняться чем-нибудь еще. Лучшие программные системы созданы одиночками.


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

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


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

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


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

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