Forth и другие саморасширяющиеся системы программирования Locations of visitors to this page
Текущее время: Ср апр 24, 2024 17:59

...
Google Search
Forth-FAQ Spy Grafic

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




Начать новую тему Ответить на тему  [ Сообщений: 16 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: Re: RFS, замечания от Ethereal
СообщениеДобавлено: Чт сен 22, 2011 12:37 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7960
Благодарил (а): 25 раз.
Поблагодарили: 144 раз.
chess писал(а):
Ну да строим функцию качества для определенного набора задач для определенной платформы и получаем на выходе после ее решения методом поиска подходящий набор команд. Конечно он никакой не минимальный, а да - оптимальный.
Для форта на такой платформе как PC этот поиск не имеет смысла, так как набор задач практически не ограничен.

Я бы не сказал, что тут поиск в смысле аналитической математики, поскольку пространство параметров дискретно. Ну в самом деле, 25 или 26 команд - это даже не проблема, потому что оба варианта попадают в "от 16 до 31 команды", потому для них достаточно 5 бит. Тут проблема поиска в другом - паковать ли литералы в команду, ускорять ли работу с памятью, делать ли дополнительные адресные пространства для часто используемой периферии (или даже посадить эту периферию на отдельные системные регистры с командами "писать" и "читать"). Еще вполне может оказаться, что достаточно 27-битных чисел. Стоит ли генерировать систему команд под такую разрядность? Или все-таки принять решение, что это все равно проще в 32 разряда вписать?


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: RFS, замечания от Ethereal
СообщениеДобавлено: Чт сен 22, 2011 12:41 
Не в сети
Administrator
Administrator
Аватара пользователя

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

Можно поподробнее? Как это создание наиболее широкого набора команд экономит время? Точнее, в какой момент экономия начинает проявляться - уж никак не в процессе реализации этого "наиболее широкого набора"? Я уже не говорю об опасности впасть в реализацию того, что удобно делать и что подогревает ЧСВ, а вовсе не того, что действительно требуется. А потом, через N лет, после вылезания из кельи, не возникнет некий когнитивный диссонанс? :roll:


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Еще раз об оптимальном наборе команд
СообщениеДобавлено: Чт сен 22, 2011 15:36 
Не в сети

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

Вот :)) :)) организуем конкурс создания игрушек или даже одной игрушки с заданными правилами и посмотрим какой компилятор даст большую производительность по количеству решений за единицу времени - тот, что расширяемый или тот, что с кучей библиотек. Окажется что "куча готового" всегда "куча готового" независимо от того, давал кто-либо оценку его нужности или нет


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Еще раз об оптимальном наборе команд
СообщениеДобавлено: Чт сен 22, 2011 16:00 
Не в сети
Administrator
Administrator
Аватара пользователя

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

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


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Еще раз об оптимальном наборе команд
СообщениеДобавлено: Чт сен 22, 2011 16:31 
Не в сети
Аватара пользователя

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

Как правило куча готового в нужный момент окажется не вполне готовой.
Вот к примеру напишите игрушку 'пики-фамы' или 'быки-коровы' - не знаю точно как правильно называется.
Загадывается(компьютером) десятичное число из 4-х цифр(могут быть произвольные цифры от 0 до 9) и путем последовательного
предъявления пробных чисел(игроком) с получением для совпавших по значениям и по месту цифр букв F(фам), а для несовпавших по месту, но совпавшим по значениям цифр букв P(пик) найти задуманное число. Чем меньше число проб тем
лучше результат. Потом можно поменяться - задумываете вы, отгадывает компьютер.
Пример для пояснения.
задумано(компьютером)
2482
проба1(ваш ход)
1234
ответ на пробу1(компьютер)
P P (количество совпавших по значению но не совпавших по месту - 2 штуки)
проба2
2356
ответ
F ( совпало по месту и по значению - 1 штука)
и тд до
проба N
2482
ответ
F F F F

Ps. И лучше бы вы это сделали на форте. Потом определим какие вам были нужны библиотеки. :)

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


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Еще раз об оптимальном наборе команд
СообщениеДобавлено: Пт сен 23, 2011 14:39 
Не в сети
Аватара пользователя

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

Код:
REQUIRE CHOOSE LIB\EXT\RND.F
: pfgame-cu ( -- ) 0. a! c! 0 f! 4 qc] 4 qu] 10 bi] 0. cf! cp!
q>s( is a is c 4 0 DO c 10 /MOD is c I a + C! LOOP )
BEGIN 0 is f 10000 CHOOSE qc q>s
4 0 DO 4 0 DO J qc + C@ I qc + C@ = J I <> AND IF 1 is f LEAVE THEN LOOP f IF LEAVE THEN LOOP
f 0= UNTIL
BEGIN ." >" 0. bi bi 10 ACCEPT >NUMBER 3\ qu q>s
0. is cf is cp 4 0 DO 4 0 DO J qu + C@ I qc + C@ = IF J I = IF cf 1+ is cf ELSE cp 1+ is cp THEN THEN LOOP LOOP
cp 1 .0 ." P " cf 1 .0 ." F" CR CR
cf 4 = UNTIL ;

STARTLOG
pfgame-cu

лог
Код:
>1234
2P 0F

>2156
1P 0F

>7819
2P 0F

>3467
2P 0F

>

и тд
ps. Есть еще вариант игры когда программа играет с программой сначала в одну сторону, потом в другую.
Если программы будут разные, то можно определить какая программа сильнее сравнив число побед этих программ.

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


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Еще раз об оптимальном наборе команд
СообщениеДобавлено: Вт сен 27, 2011 15:11 
Не в сети
Аватара пользователя

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

Вот вариант когда задумывает юзер, отгадывает компьютер. Труднее было придумать оптимальный алгоритм, чем
написать программу.
Код:
: pfgame-uc ( -- )
0. a! c! 4 qc] 4 qu] 1 b] 0. d! p! 0. pfi! pf! 0. cp! cf! 0. f! fs! 40000 ALLOCATE THROW ar!
q>s( is a is c 4 0 DO c 10 /MOD is c I a + C! LOOP )
q#?( 0 is f 4 0 DO 4 0 DO J qc + C@ I qc + C@ = J I <> AND IF 1 is f LEAVE THEN LOOP f IF LEAVE THEN LOOP f 0= )
10000 0 DO I qc q>s q#? IF I ar d + ! d 5 + is d THEN LOOP
ipf( ." P>" 0. b b 1 ACCEPT >NUMBER 3\ 10 * ." F>" 0. b b 1 ACCEPT >NUMBER 3\ + is pfi )
q>pf( 0. is cf is cp 4 0 DO 4 0 DO J qu + C@ I qc + C@ = IF J I = IF cf 1+ is cf ELSE cp 1+ is cp THEN THEN
                                LOOP
                         LOOP cp 10 * cf + is pf )
BEGIN fs 0= IF ar p + @ 4 .0 CR ipf pfi ar p + 4 + C! THEN 0 is fs
      p 5 + is p  ar p + @ qu q>s ar
      ar p 5 - + DO I 4 + C@ 0xFF <> IF I @ qc q>s q>pf pf I 4 + C@ <> IF 1 is fs 0xFF ar p + 4 + C! LEAVE THEN THEN
             -5 +LOOP
pfi 4 = UNTIL
ar FREE THROW ;

STARTLOG
pfgame-uc
лог
Код:
0123
P>3
F>0
1034
P>0
F>3
1035
P>0
F>2
1234
P>1
F>2
2034
P>0
F>4

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

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


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Еще раз об оптимальном наборе команд
СообщениеДобавлено: Вт сен 27, 2011 19:51 
Не в сети

Зарегистрирован: Вт май 09, 2006 12:31
Сообщения: 3438
Благодарил (а): 5 раз.
Поблагодарили: 16 раз.
chess писал(а):
Труднее было придумать оптимальный алгоритм, чемнаписать программу.

ВОт-вот. Предлагаю задачу, которая уже потребует библиотек.

Задача - составить алгоритм, который ищет оптимальный путь поиска - составляет алгоритм поиска в этом простом :wink: случае 8)
Похожие задачи мне решать приходилось и я скажу - вот тут уже без библиотек обойтись трудно


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Еще раз об оптимальном наборе команд
СообщениеДобавлено: Вт сен 27, 2011 20:01 
Не в сети

Зарегистрирован: Вт май 09, 2006 12:31
Сообщения: 3438
Благодарил (а): 5 раз.
Поблагодарили: 16 раз.
chess
что это
5AF156 J_@ ERRException #-1 at: chess_game.f:10:59:
BEGIN fs 0= IF ar p + @ 4 .0 CR ipf pfi ar p + 4 + C! THEN 0 is fs
^ -1 ABORT



chess_game.f:10:59 означает
: pfgame-uc ( -- )
0. a! c! 4 qc] 4 qu] 1 b] 0. d! p! 0. pfi! pf! 0. cp! cf! 0. f! fs! 40000 ALLOCATE THROW ar!
q>s( is a is c 4 0 DO c 10 /MOD is c I a + C! LOOP )
q#?( 0 is f 4 0 DO 4 0 DO J qc + C@ I qc + C@ = J I <> AND IF 1 is f LEAVE THEN LOOP f IF LEAVE THEN LOOP f 0= )
10000 0 DO I qc q>s q#? IF I ar d + ! d 5 + is d THEN LOOP
ipf( ." P>" 0. b b 1 ACCEPT >NUMBER 3 \ 10 * ." F>" 0. b b 1 ACCEPT >NUMBER 3\ + is pfi )
q>pf( 0. is cf is cp 4 0 DO 4 0 DO J qu + C@ I qc + C@ = IF J I = IF cf 1+ is cf ELSE cp 1+ is cp THEN THEN
LOOP
LOOP cp 10 * cf + is pf )
BEGIN fs 0= IF ar p + @ 4 .0 CR ipf pfi ar p + 4 + C! THEN 0 is fs
p 5 + is p ar p + @ qu q>s ar
ar p 5 - + DO I 4 + C@ 0xFF <> IF I @ qc q>s q>pf pf I 4 + C@ <> IF 1 is fs 0xFF ar p + 4 + C! LEAVE THEN THEN
-5 +LOOP
pfi 4 = UNTIL
ar FREE THROW ;

нуль - шестидесят. колонка


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Еще раз об оптимальном наборе команд
СообщениеДобавлено: Вт сен 27, 2011 21:29 
Не в сети

Зарегистрирован: Пн ноя 23, 2009 16:12
Сообщения: 64
Откуда: Київ, Івано-Франківськ
Благодарил (а): 1 раз.
Поблагодарили: 0 раз.
Оффтоп.

Помню, кто-то приводил аргумент, что нового в программировании человека легче научить Форту, чем С... Просматривая простыню выше, теперь ясно понимаю, почему это откровенно слабый аргумент.

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


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Еще раз об оптимальном наборе команд
СообщениеДобавлено: Ср сен 28, 2011 02:21 
Не в сети
Аватара пользователя

Зарегистрирован: Чт апр 26, 2007 21:09
Сообщения: 303
Благодарил (а): 12 раз.
Поблагодарили: 10 раз.
danbst писал(а):
Помню, кто-то приводил аргумент, что нового в программировании человека легче научить Форту, чем С...
Нет. Кого как научают, тот так работает потом.
Например, мне легче даже низкоуровневый код делать на Паскале-Модуле-Аде-Обероне, чем на Си. Но gcc - массовый доступный инструмент. Поэтому я вынужден использовать его.

danbst писал(а):
В погоне за оптимальностью алгоритма была утеряна "оптимальность представления", ну всмысле, читабельность.
А вы попробуйте, в качестве упражнения, написать форматировщик кода на Форте в более привычные конструкции. Ну, там тела циклов и ветки условия расположить "более привычно" ;)
Дело привычки. На Лиспе многие тоже сначала пытаются писать конструкции "как на Си или Паскале"...


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Еще раз об оптимальном наборе команд
СообщениеДобавлено: Ср сен 28, 2011 06:29 
Не в сети
Аватара пользователя

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

Я не знаю чем вы транслировали, у меня ошибок при трансляции нет.

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


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Еще раз об оптимальном наборе команд
СообщениеДобавлено: Ср сен 28, 2011 06:35 
Не в сети
Аватара пользователя

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

Я тут не для того текст программы игрушки дал, чтобы ее 'читали'. Просто хотел показать, что библиотеки редко нужны.
Даже 'читабельно' написанная программа без подробного описания алгоритма мало что даст 'читателю'.

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


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Еще раз об оптимальном наборе команд
СообщениеДобавлено: Ср сен 28, 2011 06:44 
Не в сети
Аватара пользователя

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

Мне такие задачи решать не приходилось, так как таких задач пока не было.
Смысла делать это и в данном случае не оказалось, так как удалось достаточно быстро самостоятельно найти оптимальный алгоритм.
Вы назовите хотя бы одну реальную задачу где оптимальный алгоритм проще найти путем поиска(читай - перебора), а не
собственной головой.

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


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: Еще раз об оптимальном наборе команд
СообщениеДобавлено: Ср сен 28, 2011 07:35 
Не в сети

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

Я просто подчёркиваю, что задача быки и коровы слишком проста для того, чтобы говорить о ненужности библиотек


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

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


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

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


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

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