Вот какая мысль...

classic Classic list List threaded Threaded
10 messages Options
Reply | Threaded
Open this post in threaded view
|

Вот какая мысль...

Алексей Царегородцев
Доброго времени суток!

  Размышлял я вот сегодня опять на тему, что, собственно, является
основным препятствием к использованию Форта?
  Попытавшись сравнить процесс программирования на C и на Forth пришёл к
интересной мысли, что это - плохой дизайн.
  Причём дизайн, заложенный прямо в стандарт языка. Простейший пример:
DO ... LOOP

  DO ( C: -- do-sys )

  В процессе компиляции использует стек потока управления. Читаем
определение:

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

  Что это для меня значит? Это значит, что я не могу произвольно
оставлять значения на стеке в процессе компиляции,
  не учитывая этого фокуса. Причём - если я всё-таки захочу что-то там
оставить, чтобы использовать потом в [ ... ] ,
  всё равно не смогу этого сделать переносимым способом.

  В общем, "сильное связывание" в самой плохой разновидности, имхо.

  И таких мест встречается масса. Хуже, что это воспринимается, кажется,
всеми, как нормальная практика.

  Так что я подумал, а что, если бы самой распространённой практикой
было писать слова,
  имеющие минимальные "побочные эффекты"? Как пример - решение с тем же
DO ... LOOP - стек потока управления
  НИКОГДА не должен реализовываться с использованием стека данных. Ещё,
например, было бы интересно ввести
  механизм временных стеков. Аналогично - разделение данных/программы,
использование стека возвратов...

  В общем интересно - что думаете по поводу этой идеи?

--
Алексей Царегородцев.

Reply | Threaded
Open this post in threaded view
|

Re: Вот какая мысль...

Andrey Cherezov
Добрый день, Алексей Царегородцев!

Ваше сообщение от 22.08.2007 11:33:
>   Размышлял я вот сегодня опять на тему, что, собственно, является
> основным препятствием к использованию Форта?
>  
Это уже практически оффтопик. Если и есть какие препятствия, то они не в
Форте,
а в голове. Иначе как объяснить, что Форт все же используется. Ну, не всеми.
Потому что не для всех.
>   Попытавшись сравнить процесс программирования на C и на Forth пришёл к
> интересной мысли, что это - плохой дизайн.
>  
У Форта и Си в равной степени плохой дизайн. Хуже, чем у Лиспа и Смолтолка.
Зато эффективнее.
>   Причём дизайн, заложенный прямо в стандарт языка. Простейший пример:
> DO ... LOOP
>  
ответ тут же:
> может, но не обязательно,
> то может быть, но не обязательно,
> реализован с
>
>  

>   Что это для меня значит?
Значит, что "не нравится - не ешь". Или сделай свои управляющие конструкции
с хорошим дизайном. Этому ведь форт не препятствует?
Есть множество нестандартных расширений, хорошо прижившихся в SPF
благодаря своему удобству, некоторые даже в другие форты портированы.
Так будет и с твоими управляющими конструкциями, если они будут заметно
полезнее старых. Естественный отбор :)
>  Это значит, что я не могу произвольно
> оставлять значения на стеке в процессе компиляции,
>   не учитывая этого фокуса.
Ну, раз это документированный фокус, то надо его учитывать, конечно.
>  Причём - если я всё-таки захочу что-то там
> оставить, чтобы использовать потом в [ ... ] ,
>   всё равно не смогу этого сделать переносимым способом.
>  
Сможешь.
>   И таких мест встречается масса. Хуже, что это воспринимается, кажется,
> всеми, как нормальная практика.
>  
Привычка. Те недостатки дизайна, которые действительно начинают мешать,
устраняются (как недавно Рувим с блеском решил задачу многопоточной
компиляции),
а эти особенности циклов видно никому на нервы не действуют.
>   Так что я подумал, а что, если бы самой распространённой практикой
> было писать слова,
>   имеющие минимальные "побочные эффекты"?
Стараемся писать именно так. Тем более что оно и для многопоточности SPF
очень важно.
> например, было бы интересно ввести
>   механизм временных стеков. Аналогично - разделение данных/программы,
> использование стека возвратов...
>
>   В общем интересно - что думаете по поводу этой идеи?
>  
Че тут думать, трясти надо. Чаще всего здесь идеи предлагаются в виде
работающих
расширений или их прототипов. Если их неинтересно писать, то может и нужды
в них нет на текущий момент. Обычно практика "вынуждает" писать те или иные
расширения. Изредка это приводит даже к архитектурным изменениям ядра.
В обратную сторону - чтобы сначала без особой нужды менялось ядро, и это
приносило пользу каким-то приложениям в будущем - редко.


-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems?  Stop.
Now Search log events and configuration files using AJAX and a browser.
Download your FREE copy of Splunk now >>  http://get.splunk.com/
_______________________________________________
Spf-dev mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/spf-dev
Reply | Threaded
Open this post in threaded view
|

Re: Вот какая мысль...

Алексей Царегородцев
 Доброго времени суток!

Вы писали 22 августа 2007 г., 20:57:28:

AC> Это уже практически оффтопик. Если и есть какие препятствия, то они
не в
AC> Форте,
AC> а в голове. Иначе как объяснить, что Форт все же используется. Ну,
не всеми.
AC> Потому что не для всех.

Обычно это "не для всех" и называется - плохой дизайн. :)

AC> Ну, раз это документированный фокус, то надо его учитывать, конечно.
>>  Причём - если я всё-таки захочу что-то там
>> оставить, чтобы использовать потом в [ ... ] ,
>>   всё равно не смогу этого сделать переносимым способом.
>>
AC> Сможешь.

Пример?

>>   В общем интересно - что думаете по поводу этой идеи?
>>
AC> Че тут думать, трясти надо. Чаще всего здесь идеи предлагаются в
виде
AC> работающих
AC> расширений или их прототипов.

Хм... мысля интересная.
Во всяком случае - попробую - хотя бы для иллюстрации идеи. :)

--
Алексей Царегородцев.

-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems?  Stop.
Now Search log events and configuration files using AJAX and a browser.
Download your FREE copy of Splunk now >>  http://get.splunk.com/
_______________________________________________
Spf-dev mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/spf-dev
Reply | Threaded
Open this post in threaded view
|

Re: Вот какая мысль...

Andrey Cherezov
Добрый день, Алексей Царегородцев!

Ваше сообщение от 22.08.2007 18:10:
> AC> Потому что не для всех.
> Обычно это "не для всех" и называется - плохой дизайн. :)
>  
Нет, это несовместимость с мозгами. На всех не угодишь.
Большинство людей вообще ни при каких условиях не смогут научиться
программировать ни на Си, ни на Форте.
>>>  Причём - если я всё-таки захочу что-то там
>>> оставить, чтобы использовать потом в [ ... ] ,
>>>   всё равно не смогу этого сделать переносимым способом.
>>>      
> AC> Сможешь.
>
> Пример?
>  
555
: TEST
  [ 2 * ]
  10 0 DO DUP . LOOP DROP
;
TEST
1110 1110 1110 1110 1110 1110 1110 1110 1110 1110  Ok


-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems?  Stop.
Now Search log events and configuration files using AJAX and a browser.
Download your FREE copy of Splunk now >>  http://get.splunk.com/
_______________________________________________
Spf-dev mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/spf-dev
Reply | Threaded
Open this post in threaded view
|

Re: Вот какая мысль...

Andrey Cherezov
Ой, LITERAL пропустил :)
555
: TEST
  [ 2 * ] LITERAL
  10 0 DO DUP . LOOP DROP
;
TEST
1110 1110 1110 1110 1110 1110 1110 1110 1110 1110  Ok
  


-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems?  Stop.
Now Search log events and configuration files using AJAX and a browser.
Download your FREE copy of Splunk now >>  http://get.splunk.com/
_______________________________________________
Spf-dev mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/spf-dev
Reply | Threaded
Open this post in threaded view
|

Re: Вот какая мысль...

Ruvim Pinka
In reply to this post by Алексей Царегородцев
Привет!

On 8/22/07, Алексей Царегородцев <[hidden email]> wrote:
AC> Чаще всего здесь идеи предлагаются в виде
AC> работающих расширений или их прототипов.
Хм... мысля интересная.
Во всяком случае - попробую - хотя бы для иллюстрации идеи. :)

что касается отделения управляющего стека, то их есть уже.
Например, ~mak\LIB\A_IF.F (используется в ~profit\lib\bac4th-closures.f).

--
Ruvim
-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems?  Stop.
Now Search log events and configuration files using AJAX and a browser.
Download your FREE copy of Splunk now >>  http://get.splunk.com/
_______________________________________________
Spf-dev mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/spf-dev
Reply | Threaded
Open this post in threaded view
|

Re: Вот какая мысль...

Алексей Царегородцев
In reply to this post by Andrey Cherezov
Доброго времени суток!

> Нет, это несовместимость с мозгами. На всех не угодишь.
> Большинство людей вообще ни при каких условиях не смогут научиться
> программировать ни на Си, ни на Форте.

Это не тот случай. Имхо - сильное связывание - объективное зло.

> 555
> : TEST
>   [ 2 * ]
>   10 0 DO DUP . LOOP DROP
> ;
> TEST
> 1110 1110 1110 1110 1110 1110 1110 1110 1110 1110  Ok

Некорректно. В смысле - я имел в виду кое-что совсем другое - поместить
[ ... ] внутрь DO ... LOOP

--
Алексей Царегородцев.

-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems?  Stop.
Now Search log events and configuration files using AJAX and a browser.
Download your FREE copy of Splunk now >>  http://get.splunk.com/
_______________________________________________
Spf-dev mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/spf-dev
Reply | Threaded
Open this post in threaded view
|

Re: Вот какая мысль...

Алексей Царегородцев
In reply to this post by Ruvim Pinka
Доброго времени суток!

> что касается отделения управляющего стека, то их есть уже.
> Например, ~mak\LIB\A_IF.F (используется в
> ~profit\lib\bac4th-closures.f).

Спасибо за наводку

--
Алексей Царегородцев.

-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems?  Stop.
Now Search log events and configuration files using AJAX and a browser.
Download your FREE copy of Splunk now >>  http://get.splunk.com/
_______________________________________________
Spf-dev mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/spf-dev
Reply | Threaded
Open this post in threaded view
|

Re: Вот какая мысль...

Mihail Maksimov-2
In reply to this post by Алексей Царегородцев
On Wednesday 22 August 2007 12:33:42 Алексей Царегородцев wrote:

>   Размышлял я вот сегодня опять на тему, что, собственно, является
> основным препятствием к использованию Форта?

  http://fforum.winglion.ru/viewtopic.php?p=2685&highlight=#2685

>   Попытавшись сравнить процесс программирования на C и на Forth пришёл к
> интересной мысли, что это - плохой дизайн.

  В принципе, форте можно использовать любой синтаксис,
http://wiki.forth.org.ru/ИмперативныйЯзык

>   Причём дизайн, заложенный прямо в стандарт языка. Простейший пример:
> DO ... LOOP
>
>   DO ( C: -- do-sys )
>
>   В процессе компиляции использует стек потока управления. Читаем
> определение:

  Вмешиваться в процесс компиляции позволяет только Форт.
По этому, превосходить его в этой области никто не может.

> Это значит, что я не могу произвольно
> оставлять значения на стеке в процессе компиляции,
>   не учитывая этого фокуса. Причём - если я всё-таки захочу что-то там
> оставить, чтобы использовать потом в [ ... ] ,
>   всё равно не смогу этого сделать переносимым способом.

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

>   И таких мест встречается масса.

  Перечисли.

>   Так что я подумал, а что, если бы самой распространённой практикой
> было писать слова,
>   имеющие минимальные "побочные эффекты"? Как пример - решение с тем же
> DO ... LOOP - стек потока управления
>   НИКОГДА не должен реализовываться с использованием стека данных.

  Может лучше всегда и фиксированное значение. Некий стек все равно
придется использовать

>   Ещё, например, было бы интересно ввести
>   механизм временных стеков. Аналогично - разделение данных/программы,
> использование стека возвратов...

  Вводи. Кто мешает? Стандартезировать пока рано.
http://spf.cvs.sourceforge.net/spf/devel/~profit/lib/LStack.f?view=log
-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems?  Stop.
Now Search log events and configuration files using AJAX and a browser.
Download your FREE copy of Splunk now >>  http://get.splunk.com/
_______________________________________________
Spf-dev mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/spf-dev
Reply | Threaded
Open this post in threaded view
|

Re: Вот какая мысль...

Andrey Cherezov
In reply to this post by Алексей Царегородцев
Добрый день, Алексей Царегородцев!

Ваше сообщение от 23.08.2007 6:21:
>> : TEST
>>   [ 2 * ] LITERAL
>>   10 0 DO DUP . LOOP DROP
>> ;TEST
>>    
> Некорректно. В смысле - я имел в виду кое-что совсем другое - поместить
> [ ... ] внутрь DO ... LOOP
>  
Вопрос был, как сделать это портабельно.
От перемены мест слагаемых сумма не меняется...


-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems?  Stop.
Now Search log events and configuration files using AJAX and a browser.
Download your FREE copy of Splunk now >>  http://get.splunk.com/
_______________________________________________
Spf-dev mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/spf-dev