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

...
Google Search
Forth-FAQ Spy Grafic

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




Начать новую тему Ответить на тему  [ Сообщений: 85 ]  На страницу Пред.  1, 2, 3, 4, 5, 6  След.
Автор Сообщение
 Заголовок сообщения:
СообщениеДобавлено: Ср ноя 01, 2006 14:45 
Не в сети
Аватара пользователя

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

Согласен.
Мне только вот такая "наглядность" в Форте не нравится:
( 1 2 3 4 --> 2 1 4 3 ) SWAP 2SWAP SWAP 2SWAP

Ведь нагляднее же хотя бы так:
( 1 2 3 4 --> 2 1 4 3 ) 2143 [S]

Пусть это даже будет не оптимально, но транслятор сгенерит, что-то такое:
MOV EBX, 8 [EBP]
MOV ECX, 4 [EBP]
MOV EDX, [EBP]
MOV ESI, EAX
MOV 8 [EBP], ECX
MOV 4 [EBP], EBX
MOV [EBP], ESI
MOV EAX, EDX

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


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

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

Мне кажется, что это вам только кажется.


К сожалению не только Profity так кажется 8(


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

Зарегистрирован: Чт май 04, 2006 00:53
Сообщения: 5062
Откуда: был Крым, теперь Новосибирск
Благодарил (а): 23 раз.
Поблагодарили: 63 раз.
chess писал(а):
Мне только вот такая "наглядность" в Форте не нравится:
( 1 2 3 4 --> 2 1 4 3 ) SWAP 2SWAP SWAP 2SWAP


Ты кажется чего-то в форте недопонимаешь.
В реальной программе, если она писана нормально вот-таких стековы перестановок практически нет! Отдельные Over Dup Swap встречаюся, ну еще пары таких слов могут быть.

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

: reorder ( 1 2 3 4 --> 2 1 4 3 ) SWAP 2SWAP SWAP 2SWAP ;
и уже оно используется, причем имя такой перестановки обычно стараются дать разумное. Если такое место должно быть очень быстрым, то переписывают его на асме. Проблем не возникает. А вот читать код с предложенными тобой S2143 нужно еще научиться! К тому же я так и не видел от тебя примера кода с таким подходом.


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

Зарегистрирован: Чт май 04, 2006 00:53
Сообщения: 5062
Откуда: был Крым, теперь Новосибирск
Благодарил (а): 23 раз.
Поблагодарили: 63 раз.
chess писал(а):
Мне только вот такая "наглядность" в Форте не нравится:
( 1 2 3 4 --> 2 1 4 3 ) SWAP 2SWAP SWAP 2SWAP


Ты кажется чего-то в форте недопонимаешь.
В реальной программе, если она писана нормально вот-таких стековы перестановок практически нет! Отдельные Over Dup Swap встречаюся, ну еще пары таких слов могут быть.

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

: reorder ( 1 2 3 4 --> 2 1 4 3 ) SWAP 2SWAP SWAP 2SWAP ;
и уже оно используется, причем имя такой перестановки обычно стараются дать разумное. Если такое место должно быть очень быстрым, то переписывают его на асме. Проблем не возникает. А вот читать код с предложенными тобой S2143 нужно еще научиться! К тому же я так и не видел от тебя примера кода с таким подходом.


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

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

Иногда бывает нужно, но это не главное. Я хочу, чтобы конечный код полученный с помощью форта мало отличался по быстродействию от кода, полученного ассемблером.
(Как-то раз мы сравнивали быстродействие программы получения 1000 простых чисел на форте и на ассме - разница оказалась где-то в 200 раз в пользу ассма. Думаю, что это не на 100% из-за форта, но и сам знаю что код
Форта очень тормозной. Тогда над фортом посмеялись - сказали брось ерундой заниматься.)
Сейчас для меня быстродействие фортовского кода - больное место.
Хочу возложить ускорение кода на транслятор, но не снизу как у Михаила, а сверху от текста, от структуры словарей и т.д.
Над алгоритмом трансляции оптимального кода для выражений типа 2143 [S] сейчас работаю - он оказался очень не простым, но очень интересным и плотно смыкается с проблемой получения оптимального по быстродействию кода программы. Ну а писать на форте мне нравится потому, что для меня в программе нет темных мест - я точно знаю как в коде лежит каждый байт - форт-транслятор-то для МК мной с нуля написан. Если надо могу, что-то в него добавить или заменить в нем что-то. Может в конце этого процесса от привычного Форта мало что и останется, да думаю тут важен результат - прижать максимально код с помощью транслятора к оборудованию процессора.

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


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Ср ноя 01, 2006 16:57 
chess писал(а):

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


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


Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Чт ноя 02, 2006 03:07 
Не в сети
Moderator
Moderator
Аватара пользователя

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

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


На сколько я понимаю - это нерешимая задача, так как CISC не может идеально лечь на MISC.
К тому же даже классические компиляторы, заточенные под CISС далеко не самый идеальный код генерируют, и всеравно на асме получается лучше.
chess писал(а):
(Как-то раз мы сравнивали быстродействие программы получения 1000 простых чисел на форте и на ассме - разница оказалась где-то в 200 раз в пользу ассма. Думаю, что это не на 100% из-за форта, но и сам знаю что код
Форта очень тормозной. Тогда над фортом посмеялись - сказали брось ерундой заниматься.)

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


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

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


По какому определению?


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Чт ноя 02, 2006 12:37 
Не в сети
Аватара пользователя

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

Не могли бы вы меня просветить по вопросу - что такое профилирование программы? Или ссылки на соответствующие материалы дать.

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


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Чт ноя 02, 2006 16:58 
chess писал(а):
Гость писал(а):
Для ускорения кода можно использовать разные стратегии, но без профилирования
программы максимально возможного быстродействия трудно получить.

Не могли бы вы меня просветить по вопросу - что такое профилирование программы? Или ссылки на соответствующие материалы дать.


Ввести в гугле: Профилирование программы
и смотреть ссылки по даному вопросу.

P.S. Цитата:
Профилирование позволяет строить распределение времени работы программы
по подпрограммам и строкам исходного текста программы.
Такая информация полезна при оптимизации работы программ.


Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Чт ноя 02, 2006 17:10 
Не в сети
Аватара пользователя

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

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


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Чт ноя 02, 2006 17:22 
chess писал(а):
Гость спасибо.
Я думаю в Форте я это смогу и в транслятор заложить(по крайней мере для начала время работы форт-слов выдавать).


Профилирование проводится для работающей программы.

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

в JIT компиляторе ( например Java) профилирование основной инструмент повышения
эффективности кода:)


Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Пт ноя 03, 2006 12:04 
Не в сети
Аватара пользователя

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

Приходит на ум пока только полная инлайн-компиляция для таких слов.

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


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

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

По какому определению?

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


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

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


Где там и Си регистры? Все интерпретаторы императивных языков имеют промежуточное
представление в обратной прольской записи.

http://wiki.forth.org.ru/%C8%EC%EF%E5%F ... F%E7%FB%EA


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

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


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

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


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

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