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

...
Google Search
Forth-FAQ Spy Grafic

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




Начать новую тему Ответить на тему  [ Сообщений: 114 ]  На страницу Пред.  1 ... 3, 4, 5, 6, 7, 8  След.
Автор Сообщение
 Заголовок сообщения:
СообщениеДобавлено: Вт янв 26, 2010 14:45 
Не в сети

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

и о чём там речь? :)


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

Зарегистрирован: Чт июн 25, 2009 11:12
Сообщения: 412
Благодарил (а): 41 раз.
Поблагодарили: 8 раз.
Хищник писал(а):
Это можно сколько угодно отрицать, и даже придумывать контраргументы, но я ведь специально отметил, что оптимизированный код пишется один раз.

Да, и этот раз повторяется до бесконечности :))


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

Зарегистрирован: Вт май 02, 2006 22:48
Сообщения: 7960
Благодарил (а): 25 раз.
Поблагодарили: 144 раз.
вопрос писал(а):
и о чём там речь?

http://fforum.winglion.ru/viewtopic.php?t=1708


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

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

Да, и этот раз повторяется до бесконечности

Ну а зачем он повторяется до бесконечности-то? На работу выделяется определенное время, если удовлетворительных результатов нет, надо или пересматривать требования, или увольняться. Я вот вижу вполне конкретный недостаток в виде смешивания технических и организационных сторон работ - все валится в одну кучу, и программист до изнеможения развлекается с любимыми игрушками, забывая, для чего нужна его работа. Ну получили 90% теоретически достижимой производительности - хватит. Зачем устраивать истерики "эти языки меня не устраивают, дайте мне другие!", парализуя нормальную спокойную работу? Ну не удастся тут "полдня потерять, зато потом за пять минут долететь". Языкотворчество хорошо, когда все исследования уже проведены, и свойства известны, и остается только аккуратно составить спецификацию и закодировать. А иначе мы имеем процесс пошива мешка для последующего разведения в нем котов.


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

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


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

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

Называется кайдзен.

========================================================================================
В приложении к работе действия Кайдзен непрерывно улучшают все функции бизнеса, от производства до высшего руководства, от директора до рядового рабочего. Улучшая стандартизованные действия и процессы, Кайдзен имеет целью устранить всё лишнее
========================================================================================

Есть некоторая разница с подходом "мне скучно, давайте что-нибудь эдакое сотворим"?


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re:
СообщениеДобавлено: Чт окт 25, 2012 14:25 
Не в сети
Moderator
Moderator

Зарегистрирован: Ср май 10, 2006 15:37
Сообщения: 1132
Откуда: Chelyabinsk ( Ural)
Благодарил (а): 0 раз.
Поблагодарили: 9 раз.
be_nt_all писал(а):
Эврика :pilot;

Если не ставить цели оптимизирующей компиляции _на лету_, ограничиваясь turnkey, то зачем нам генерировать маш.код или даже ассемблер. Переносимый ассемблер называется (ага) Си, и оптимизаторы под него весьма неплохи. Полезные советы по данному процессу можно найти всё у того же Эртла:

* Translating Forth to Efficient C
* Retargeting JIT compilers by using C-compiler generated executable code
* Using C for the Back End

Да, реализация под gForth доступна — http://www.complang.tuwien.ac.at/forth/forth2c.tar.gz

Буду читать и разбираться.


"Разборки" по вышеперечисленному материалу были?


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re:
СообщениеДобавлено: Пн ноя 19, 2012 20:44 
Не в сети
Аватара пользователя

Зарегистрирован: Ср фев 23, 2011 20:42
Сообщения: 600
Откуда: Карелия
Благодарил (а): 3 раз.
Поблагодарили: 24 раз.
be_nt_all писал(а):
Ты таки готов посоревноваться с современным оптимизирующим компилятором Си в написании кода под какую нибудь «считалочку»?
А ты видел какой код городит этот оптимизирующий компилятор ? Даже самый лучший. Он все равно пишет на ассемблере как обезьяна тупая. Говорю как программист на ассемблере.


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

Зарегистрирован: Ср фев 23, 2011 20:42
Сообщения: 600
Откуда: Карелия
Благодарил (а): 3 раз.
Поблагодарили: 24 раз.
dynamic-wind писал(а):
У Форта нет, насколько я знаю, ни типизации

У Форта есть типы. Их два :
- ячейка
- символ

Я бы лично сделал бы их пять.
- символ = ячейка-8
- ячейка все равно какая разрядности 16-64
ну и для тех случаев, когда важно какая ячейка
- ячейка-16
- ячейка-32
- ячейка-64
Ну чтобы программа одинаково работала на -16, -32 и -64 -х разрядных архитектурах.
И еще бы ввел одну прагму - эндиан. Т.е. указание на то, что я при написании программы имел ввиду большой эндиан, или имел ввиду маленький. Или не имел ввиду никакого.
И больше никаких иных типов для написания машинно-независимых программ не нужно.

P.S. Существующая строгая типизация в Си, Паскале etc. была создана математиками.
Которые мыслили не в понятиях процессора, а в своих математических абстракциях.
В результате в типизацию были вставлены вещи бесполезные - например указание на знаковый или беззнаковый тип и отсюда перегрузка операций сравнения. Вместо того, чтобы пользоваться отдельно знаковым или беззнаковым сравнением данных наличие знака у которых заранее не фиксируется. Но не вставлены нужные. Я, например, не раз сталкивался, что программа, написанная сишным программистом, на архитектуру с другим эндианом просто так не переносится - ее надо переделывать. А ведь он всего-лишь хотел выбирать отдельные байты из целых обращением по нужному адресу без утяжеления кода лишними >> 8 и & 0xFF. Хороший пример тут - криптоалгоритмы. Образцово-показательные их реализации на "машинно-независимом" Си в Википедии часто заточены под конкретный эндиан и на другом эндиане ... фиг.


Последний раз редактировалось Ethereal Пн ноя 19, 2012 22:59, всего редактировалось 5 раз(а).

Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: о типизации в Форте
СообщениеДобавлено: Пн ноя 19, 2012 22:36 
Не в сети
Аватара пользователя

Зарегистрирован: Вт мар 20, 2007 23:39
Сообщения: 1261
Благодарил (а): 3 раз.
Поблагодарили: 19 раз.
Ethereal, полностью согласен.

_________________
Cтоимость сопровождения программного обеспечения пропорциональна квадрату творческих способностей программиста.
Роберт Д. Блисc


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: о типизации в Форте
СообщениеДобавлено: Пн ноя 19, 2012 22:46 
Не в сети
Аватара пользователя

Зарегистрирован: Ср фев 23, 2011 20:42
Сообщения: 600
Откуда: Карелия
Благодарил (а): 3 раз.
Поблагодарили: 24 раз.
Блин, а я тут в свой пост еще текста добавил. Может с тем что я добавил ты будешь уже не согласен :shuffle;


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

Зарегистрирован: Вт мар 20, 2007 23:39
Сообщения: 1261
Благодарил (а): 3 раз.
Поблагодарили: 19 раз.
Ethereal и со второй частью тоже согласен.

_________________
Cтоимость сопровождения программного обеспечения пропорциональна квадрату творческих способностей программиста.
Роберт Д. Блисc


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

Зарегистрирован: Чт июн 25, 2009 11:12
Сообщения: 412
Благодарил (а): 41 раз.
Поблагодарили: 8 раз.
Ethereal писал(а):
У Форта есть типы. Их два :
- ячейка
- символ

Это не совсем типы, это две ширины обращений к памяти. Ну и корректность применения никак не контролируется.

Ethereal писал(а):
P.S. Существующая строгая типизация в Си, Паскале etc. была создана математиками.
Которые мыслили не в понятиях процессора, а в своих математических абстракциях.

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

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

Знаковость учитывается ещё при приведении к типу большей ширины, при делении и правых сдвигах.
В редком случае, когда знаковость ячейки не фиксирована, просто добавляют явное приведение типа.
Предлагаете вместо перегрузки операций раза в четыре увеличить их количество? :roll:

Ethereal писал(а):
Но не вставлены нужные.

Операция extract byte требует 3 аргумента (слово, ширина байта и его смещение), deposit byte требует 4.
Синтаксически это были бы функции, причем их без труда можно написать с применением сдвигов и масок.


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

Зарегистрирован: Ср фев 23, 2011 20:42
Сообщения: 600
Откуда: Карелия
Благодарил (а): 3 раз.
Поблагодарили: 24 раз.
dynamic-wind писал(а):
Это не совсем типы, это две ширины обращений к памяти. Ну и корректность применения никак не контролируется.

Это две сущности, которые полностью эквивалентны тем сущностям которыми оперирует процессор. И в этом их огромный плюс.

Контроль применения - ну так в Форте вроде идеология "программист всегда прав" ?

И у контроля применения есть негативная обратная сторона. Строгая типизация плодит программистов, которые начинают полагаться на транслятор. В результате отдаляется цель ради которой все это задумывалось - надежность программ.
Цитата:
В нематематической части можно обойтись, на самом низеньком уровне, битовыми ячейками разной ширины, как Вы и предлагаете, и ещё упорядоченными последовательностями. Можно выстроить над этим любую арифметику, только будет неудобно писать и читать исходник.
...
Знаковость учитывается ещё при приведении к типу большей ширины, при делении и правых сдвигах.
В редком случае, когда знаковость ячейки не фиксирована, просто добавляют явное приведение типа.
Предлагаете вместо перегрузки операций раза в четыре увеличить их количество?

А Вы предлагаете вместо увеличения количества операций сделать их перегрузку ? Т.е. чтобы одна и та-же операция могла означать четыре разных вещи в зависимости от контекста ?

На Форте, если ты смотришь в некую точку программы, то ты видишь однозначно и полностью что в ней делается. Например, видишь C! и это тебе сразу говорит, что при занесении проиходит усечение ячейки до символа.
А в традиционных языках это не так. Ты в них смотришь на оператор присвоения и НЕ видишь что он делает. Например, производит он усечение или нет. Потому-что ответ зависит от контекста. А контекст лежит в совсем другом месте программы. В Си он часто разбросан по инклуд-файлам, да еще и по нескольким сразу и если это стандартные, библиотечные инклуды, то в них приходиться долго рыться прежде чем этот контекст найдешь.
Вот эта перегрузка операций в традиционных языках приводит к тому, что ты можешь в упор смотреть на ошибку и не видеть ее. Потому-что ошибка станет понятной только в контексте, а контекст разбросан по разным местам и в результате за ним можно тупо не уследить.

Хороший тут пример - гнутый Си. Мне пришлось на днях кросс-компилятор собирать для своих нужд и компилировать старые вирсии гнутого Си. 2.95, помню, компилировал. Так в процессе компиляции столько раз вылезало предупреждение о сравнении знакового с беззнаковым, что я к нему даже привык. Уж если даже создатели де факто стандартного компилятора Си не в состоянии проследить за контекстом, то о чем уже говорить ?

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

Строгая типизация - есть идея перегрузить операторы (чтобы было непонятно что конкретно каждый из них в данном случае делает), разбросать контекст по разным местам программы (определение типов там, перегруженные операции в контексте этих типов здесь) и надеяться, что транслятор отловит неверное со всем этим обращение.
В Форте есть только два типа - ячека и символ (т.е. все типы всегда у программиста в голове), операции не перегружены, поэтому в каждом конкретном месте программы сразу ясно, что конкретное форт-слово делает. И весь контекст, который программисту нужно отслеживать - это содержимое стеков. Если он возьмет за привычку содержимое стеков всюду указывать в комментариях, то программы, написанные на Форте будут на порядок легче читаемы в смысле видности ошибок, чем программы со строгой типизацией на традиционных языках. А программы на традиционных языках так и останутся на порядок легче читаемы в смысле создания иллюзии понятности.
Цитата:
Операция extract byte требует 3 аргумента (слово, ширина байта и его смещение), deposit byte требует 4.
Синтаксически это были бы функции, причем их без труда можно написать с применением сдвигов и масок.

С применением сдвигов и масок, которые бесполезно захламляют код и при исполнении будут отъедать время. Я же приводил пример криптоалгоритмов. Их реализации оптимизируют по быстродействию очень жестко. Поэтому в них не может быть не являющихся необходимыми сдвигов и масок. И в результате ... получается либо алгоритм только под малый эндиан, либо только под большой. Почему-то не получается алгоритма "вообще".

Операция extract byte требует только один аргумент - адрес по которому этот байт лежит. И если ввести прагму "эндиан", то у транслятора будет вся информация, чтобы этот адрес определить. Только забыли эту прагму ввести в традиционные языки. Забыли.



За это сообщение автора Ethereal поблагодарил: zehotello
Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения: Re: о типизации в Форте
СообщениеДобавлено: Сб ноя 24, 2012 18:58 
Не в сети
Administrator
Administrator
Аватара пользователя

Зарегистрирован: Вт май 02, 2006 13:19
Сообщения: 3565
Откуда: St.Petersburg
Благодарил (а): 4 раз.
Поблагодарили: 72 раз.
Типы данных по сути являются закреплением интерпретации элементов информации и фиксацией правил ее использования. С этой точки зрения Форт считается бестиповым языком, т.е. для языка все элементы информации, это не более чем биты, байты и ячейки.

_________________
С уважением, WingLion
Forth-CPU . RuF09WE
Мой Форт
Отсутствие бана это не заслуга юзера, а недоработка модератора (с)


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

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


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

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


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

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