OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Четверг, 28 Март, 2024 21:35

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 143 ]  На страницу Пред.  1, 2, 3, 4, 5, 6, 7, 8  След.
Автор Сообщение
 Заголовок сообщения: Re: О парадоксе Блаба и макросах
СообщениеДобавлено: Пятница, 02 Октябрь, 2009 10:30 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9459
Откуда: Россия, Орёл
Речь о том, что при некотором наборе инструментария макросы становятся реализуемой библиотечно частностью. Зачем их впаивать в язык и компилятор?

Теперь я поставлю задачу агитаторам за макросы. Хочу, чтобы макрос был не текстовым, а графическим. Прямо в программу вставлять визуальные схемы, по которым макропроцессор генерирует текст. Ваше решение? С Немерлями, Лиспами, чем угодно? Я в ББ - на раз.

2Galkov: Я пониманию, все, чего Вы хотите. Разберитесь повнимательней - в том и идея, что как хотите, так и можете сделать. Ну, конечно, 1Кб - это не так просто, это - особый случай. Но с компилирующей системой и он реален.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: О парадоксе Блаба и макросах
СообщениеДобавлено: Пятница, 02 Октябрь, 2009 10:33 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 12:02
Сообщения: 8500
Откуда: Троицк, Москва
Евгений Темиргалеев писал(а):
Предложенный Ермаковым вариант решения на ББ/КП:
* преобразовать мат. выражение в текст процедуры-функции на КП (и завернуть в модуль ест-но)
* передать текст штаному компилятору (получаем кодовый файл модуля)
* штаными средствами вызвать функцию из этого модуля

(кодовые файлы можно кэшировать в некой подсистеме)
Это стандартный вариант, описывается в моих лекциях с самого начала 2001 г.
Это нужно в русле решения проблемы пресловутого "численно-аналитического интерфейса".
Когда аналитически вычисляется монструозное выражение, потом оно конвертируется в компилируемую функцию, и передается в процедуру интегрирования в качестве подынтегрального выражения (довольно стандартная процедура в моей области физики).
О степени монструозности можно судить по тому, что вычисление одного значения функции может длиться часы и дни (в 2000 г. японцы на конференции сообщали о неделе).

Разумеется, все делается типобезопасным образом.

У Ильи Евгеньевича всё время руки чешутся позаковыристей -- что здесь Meta вылезла, что с Черепашкой...
Ух, молодёжь, ужо вам! 8)


Последний раз редактировалось Info21 Пятница, 02 Октябрь, 2009 10:42, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: О парадоксе Блаба
СообщениеДобавлено: Пятница, 02 Октябрь, 2009 10:34 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 12:02
Сообщения: 8500
Откуда: Троицк, Москва
Валерий Лаптев писал(а):
А в программировании зарождается "интегральное исчисление".
Поверю, когда увижу.
Библиотеки не предлагать :)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: О парадоксе Блаба и макросах
СообщениеДобавлено: Пятница, 02 Октябрь, 2009 10:54 

Зарегистрирован: Четверг, 12 Июль, 2007 23:18
Сообщения: 1982
Откуда: Узбекистан, Чирчик
Илья Ермаков писал(а):
Теперь я поставлю задачу агитаторам за макросы. Хочу, чтобы макрос был не текстовым, а графическим. Прямо в программу вставлять визуальные схемы, по которым макропроцессор генерирует текст. Ваше решение? С Немерлями, Лиспами, чем угодно? Я в ББ - на раз.
И как у Вас эта схема будет представлена? В растровом, векторном формате? Или всё же в виде некоего внутреннего кода (AST, например), который просто визуализируется какой-то библиотекой? В этом случае макро-программистам тоже понадобится написать аналогичную библиотеку, как и Вам (Вы ведь её не с потолка взяли, а делали. В 16 страницах никаких упоминаний о Драконе нет...).


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: О парадоксе Блаба и макросах
СообщениеДобавлено: Пятница, 02 Октябрь, 2009 11:33 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9459
Откуда: Россия, Орёл
У меня она будет представлена в стандартном документном формате среды. Каким образом я отделю модель от вьюшки (что будет в модели и т.п.) - по ситуации. А инструмент - будет распространяться как компонент к этой среде.

Пример же текстовых макросов - Рефал-0. Полноценный пример.

Всё время какая-то дурацкая частная "аргументация", против базиса, работающего везде.

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: О парадоксе Блаба и макросах
СообщениеДобавлено: Пятница, 02 Октябрь, 2009 12:57 

Зарегистрирован: Пятница, 24 Апрель, 2009 16:28
Сообщения: 563
Откуда: Москва
Должен заметить, что у защитников макросов есть один логический изъян. Дело обстоит так: сначала создается язык, расширяемый макросами. Затем адепты (с полными на то основанием!) утверждают: "Макросы – это наше все, с помошью макросов мы можем сделать кучу полезных вещей". Но при этом вопрос, не был ли ошибочным сам путь – создание языка, расширяемого макросами - остается открытым.

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: О парадоксе Блаба и макросах
СообщениеДобавлено: Пятница, 02 Октябрь, 2009 13:06 

Зарегистрирован: Четверг, 17 Ноябрь, 2005 11:51
Сообщения: 2935
Откуда: г. Ярославль
Peter Almazov писал(а):
У макросов есть фундаментальный недостаток – они создают еще один слой, дополнительную сложность, еще один источник ошибок, весьма специфических и, часто, неожиданных.


Вот-вот. Как сейчас помню - написание своих шаблонов в Clarion было приличной головной болью.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: О парадоксе Блаба и макросах
СообщениеДобавлено: Пятница, 02 Октябрь, 2009 13:29 

Зарегистрирован: Четверг, 12 Июль, 2007 23:18
Сообщения: 1982
Откуда: Узбекистан, Чирчик
Peter Almazov писал(а):
Должен заметить, что у защитников макросов есть один логический изъян. Дело обстоит так: сначала создается язык, расширяемый макросами. Затем адепты (с полными на то основанием!) утверждают: "Макросы – это наше все, с помошью макросов мы можем сделать кучу полезных вещей". Но при этом вопрос, не был ли ошибочным сам путь – создание языка, расширяемого макросами - остается открытым.
Вообще-то это главный принцип работы лисперов -- построить (с помощью макросов) на Лиспе язык предметной области и решать задачу уже на этом языке. Для лисперов этот вопрос является по определению закрытым, так как это и есть их путь...

Peter Almazov писал(а):
У макросов есть фундаментальный недостаток – они создают еще один слой, дополнительную сложность, еще один источник ошибок, весьма специфических и, часто, неожиданных.
У Вас есть опыт работы с макросами лиспа или хотя бы немерле?
Чем ошибки макросов так принципиально отличаются от ошибок в библиотеках?

Пол Грэм где-то писал, что макросы следует создавать в том и только том случае, если они уменьшают код раз в двадцать, не меньше.

Но тогда, если следовать этому правилу, меньше кода -- меньше ошибок...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: О парадоксе Блаба и макросах
СообщениеДобавлено: Пятница, 02 Октябрь, 2009 14:17 

Зарегистрирован: Суббота, 07 Март, 2009 15:39
Сообщения: 3261
Откуда: Астрахань
И еще раз повторю.
ББ-шники почему-то упорно сворачивают к текстовым макросам. А речь-то идет о вещах, подобных смешанным вычитслениям Ершова, что не есть текстовые макросы.
И Genirpro верно написал:
Цитата:
Вообще-то это главный принцип работы лисперов -- построить (с помощью макросов) на Лиспе язык предметной области и решать задачу уже на этом языке.

Пару-тройку последних лет Мартин Фаулер пишет о DSL - Domain чего-то там Language - язык предметной области.
Эти самые макросы (НЕ ТЕКСТОВЫЕ!) позволяют этот самый DSL построить в рамках языка.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: О парадоксе Блаба и макросах
СообщениеДобавлено: Пятница, 02 Октябрь, 2009 14:48 

Зарегистрирован: Четверг, 12 Июль, 2007 23:18
Сообщения: 1982
Откуда: Узбекистан, Чирчик
Валерий Лаптев писал(а):
Пару-тройку последних лет Мартин Фаулер пишет о DSL - Domain чего-то там Language - язык предметной области.
domain-specific language


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: О парадоксе Блаба и макросах
СообщениеДобавлено: Пятница, 02 Октябрь, 2009 14:58 

Зарегистрирован: Понедельник, 30 Июль, 2007 10:53
Сообщения: 1538
Откуда: Беларусь, Минск
Возможно, я смотрю на проблему слишком поверхностно, но мне кажется, что при должном подходе к проектированию средств по составлению макрокоманд различия между ними и процедурами практически не будет. Достоинство процедур - занимают меньше места при их многократном использовании. Достоинство макрокоманд - не требуется безусловных переходов (и сохранения регистров в "некоторых архитектурах").


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: О парадоксе Блаба и макросах
СообщениеДобавлено: Пятница, 02 Октябрь, 2009 15:02 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 12:02
Сообщения: 8500
Откуда: Троицк, Москва
Valery Solovey писал(а):
Возможно, я смотрю на проблему слишком поверхностно, но мне кажется, что при должном подходе к проектированию средств по составлению макрокоманд различия между ними и процедурами практически не будет.
Правильно. Потому что на любых уровнях будут воспроизводиться логика и стандартные структуры управления (что бы под этим ни подразумевалось). Если с помощью макросов городить язык со своей новой особенной логикой и управлением -- то это путь к катастрофе (или к временному преимуществу благодаря относительной технологической изолированности).


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: О парадоксе Блаба и макросах
СообщениеДобавлено: Пятница, 02 Октябрь, 2009 15:25 

Зарегистрирован: Четверг, 12 Июль, 2007 23:18
Сообщения: 1982
Откуда: Узбекистан, Чирчик
Valery Solovey писал(а):
Достоинство макрокоманд - не требуется безусловных переходов (и сохранения регистров в "некоторых архитектурах").

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: О парадоксе Блаба и макросах
СообщениеДобавлено: Пятница, 02 Октябрь, 2009 15:33 

Зарегистрирован: Суббота, 07 Март, 2009 15:39
Сообщения: 3261
Откуда: Астрахань
Info21 писал(а):
Valery Solovey писал(а):
Возможно, я смотрю на проблему слишком поверхностно, но мне кажется, что при должном подходе к проектированию средств по составлению макрокоманд различия между ними и процедурами практически не будет.
Правильно. Потому что на любых уровнях будут воспроизводиться логика и стандартные структуры управления (что бы под этим ни подразумевалось). Если с помощью макросов городить язык со своей новой особенной логикой и управлением -- то это путь к катастрофе (или к временному преимуществу благодаря относительной технологической изолированности).

Нет. Это тот же подход, что и у оберонщиков (надо - напишем). Только не в рамках среды, а в рамках языка. Нет в немерле встроенной операции AND - сейчас напишем. Если нужна. А если не нужна - и не будем писать. Обойдемся стандартной операцией языка match (сопоставление с образцом).


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: О парадоксе Блаба и макросах
СообщениеДобавлено: Пятница, 02 Октябрь, 2009 17:10 

Зарегистрирован: Воскресенье, 08 Март, 2009 17:54
Сообщения: 372
Валерий Лаптев писал(а):
...Нет в немерле встроенной операции AND - сейчас напишем. Если нужна. А если не нужна - и не будем писать. Обойдемся стандартной операцией языка match (сопоставление с образцом).

Посмотрел макросы Немерле - красиво. Когда-то, курсе эдак на 2-м, думал о чем-то подобном, разумеется, более примитивном. А потом эти думы потихоньку отпали.
Не отпускает ощущение, что макросы это инструмент для создания/модификации инструментов, или даже инструмент для создания инструментов для создания инструментов. Причём формализм не слабый.
А надо ли? Надо ли иметь фабрику, напичканную прецизионными станками с ЧПУ, для модификации молотка под особые гвозди, вместо того, что бы пойти и забить их, возможно слегка напрягшись, стандартным? Конечно, такая фабрика может обоснованно понадобиться, например, при постройке звездолёта. Но тогда эта фабрика будет плодом серьёзнейшей и централизованной разработки, специально заточенной под "звёздные молотки" (новой версией языка или специализированным языком).
Если же идти по дороге макросов, можно и мета-макросы придумать, и мета-мета-типы, ведь они крайне необходимы для упрощения работы с макросами и мета-типами.
Илья Ермаков показал, как можно решить одну из задач. Я изъянов не заметил, и просто и работает. Так и с другими можно расправиться. Всё-таки, компактный компилятор, всё время находящийся под мышкой - вещь! Которая как раз и позволяет выйти за рамки языка простым способом.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: О парадоксе Блаба и макросах
СообщениеДобавлено: Пятница, 02 Октябрь, 2009 18:11 

Зарегистрирован: Суббота, 12 Май, 2007 08:41
Сообщения: 102
Откуда: Беларусь, Минск
Цитата:
Илья Ермаков показал, как можно решить одну из задач. Я изъянов не заметил, и просто и работает.

Вирт показал, как можно написать быструю сортировку через итерации. Я изъянов не заметил, и просто, и работатет.
И зачем только нужна рекурсия?
Рекурсия, кстати, как понятие гораздо сложнее, чем макросы.

Извините, не сдержался. Вечером подробно отвечу на посты выше.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: О парадоксе Блаба и макросах
СообщениеДобавлено: Пятница, 02 Октябрь, 2009 18:44 

Зарегистрирован: Воскресенье, 08 Март, 2009 17:54
Сообщения: 372
kreol писал(а):
Вирт показал, как можно написать быструю сортировку через итерации. Я изъянов не заметил, и просто, и работатет.
И зачем только нужна рекурсия?
Рекурсия, кстати, как понятие гораздо сложнее, чем макросы.

Извините, не сдержался. Вечером подробно отвечу на посты выше.

Рекурсия сложнее? Не согласен. Что может быть проще рекурсии. Только итерация.
Да и в компиляторе её просто реализовать, почти ни чего делать для этого не надо.

Не смотрел реализации Вирта, не знаю. Но недавно как раз читал о способах улучшения качества быстрой сортировки. Рекомендуют одну ветвь рекурсии убрать в цикл, а рекурсивно сортировать только меньшую часть массива. В результате глубина стека не будет превышать log2(N), поэтому достаточно простую и максимально быструю реализацию со стеком фиксированного размера, сделать можно.
Не подумайте, что я против рекурсии. Очень элегантное средство, от Бога :). Но считаю, что аналогия не корректная, рекурсия это действительно очень просто :-).

Ломать копья о макросах тоже, как то не хочется, куража нету. Так, высказал и отвалился. Рад, что вы извлекаете из них толк.

P.S. Всё-таки, очень жаль, что нельзя (или очень сложно) провести всеобъемлющие объективные эксперименты, с результатами которых будут вынуждены согласиться все.
Эксперименты на тему: кто, в среднем, быстрее И качестве пишет хорошо (в смысле скорости) работающие программы? Кто использует макросы, дженерики, исключительные ситуации, ФП, ИП, да те же breakи и множественные return или нет? (Шёпотом: я за дженерики).
А пока всё это очень нечётко. Утверждать точно, можно лишь, что языки, в лучшем случае, эквивалентны машине Тьюринга, а время написания программ - конечно :-).


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: О парадоксе Блаба и макросах
СообщениеДобавлено: Пятница, 02 Октябрь, 2009 19:11 

Зарегистрирован: Вторник, 11 Август, 2009 11:44
Сообщения: 516
Откуда: Бердск
Евгений Темиргалеев писал(а):
Предложенный Ермаковым вариант решения на ББ/КП:
.........
Мне понятен код, предложенный Ильей. Вопрос у меня не в этом.
Где взять компилятор, даже и не в синтаксисе КП, или генерация ДКА по регулярному выражению (или еще фиг его знает чего) - не вопрос.
Считаем априори, что оно есть (а если нет, напишем - делов-то)
Вопрос в том, что с какого такого перепугу пользователь модуля вдруг начнет применять его неким хитромудрым способом.
Не начнет, если не он автор модуля.


Algo писал(а):
Илья Ермаков показал, как можно решить одну из задач. Я изъянов не заметил, и просто и работает
А я заметил
Илья покусился на святое: на суверенное право пользователя модуля, данное ему при рождении - НЕ ЗНАТЬ внутренних заморочек модуля.
А знать лишь интерфейс.
Если уж это называется надежное программирование....

На тебе - при стечении каких-то обстоятельств (никто, кроме автора модуля, этих обстоятельств не знает) лучше делать не так, а вот эдак: не запускать чего-то в Run-Time, но дополнительно запустить чего-то у разработчика, и добавить результаты этого запуска в Target, рассчитывая при этом на некоторую результирующую экономию/эффективность


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: О парадоксе Блаба и макросах
СообщениеДобавлено: Пятница, 02 Октябрь, 2009 20:15 

Зарегистрирован: Воскресенье, 08 Март, 2009 17:54
Сообщения: 372
Galkov писал(а):
А я заметил
Илья покусился на святое: на суверенное право пользователя модуля, данное ему при рождении - НЕ ЗНАТЬ внутренних заморочек модуля.
А знать лишь интерфейс.
Если уж это называется надежное программирование....

О каких внутренностях модуля ему придётся знать? У него будут две процедуры CompileExpr и CalcExpr с в меняемыми параметрами. Вы имели ввиду, что перед компиляцией надо кликнуть коммандер, чтобы выполнить макрос? Мда, это проблема. Но насколько это действительно сложно, и насколько часто это придётся делать? Вы что, хотите, чтобы всё было как у героя амер. фильмов - сумасшедшего учёного? Чтобы на кухне сразу под рукой оказывалась ложка, после небольшого толчка расстанавливались тарелки и чашки, запускался процесс кипячения и манипулятор бросал еду коту? Уверен, что вы напрягаетесь это сделать сами: подвигать руками, достать из ящика. Ибо это проще, дешевле и предсказуемее.

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

Как обычно, столкновение разных философских позиций.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: О парадоксе Блаба и макросах
СообщениеДобавлено: Пятница, 02 Октябрь, 2009 20:36 
Модератор
Аватара пользователя

Зарегистрирован: Среда, 16 Ноябрь, 2005 00:53
Сообщения: 4625
Откуда: Россия, Орёл
Galkov писал(а):
Евгений Темиргалеев писал(а):
Предложенный Ермаковым вариант решения на ББ/КП:
.........
Мне понятен код, предложенный Ильей. Вопрос у меня не в этом.
...Не начнет, если не он автор модуля....
А знать лишь интерфейс...
В том решении, которое приведено указанных Вами проблем нет. Но не могу утверждать, что понял Вашу задачу правильно. Опишите её поточнее и приведите пример использования Вашего решения.


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

Часовой пояс: UTC + 3 часа


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

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


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

Найти:
Вся информация, размещаемая участниками на конференции (тексты сообщений, вложения и пр.) © 2005-2024, участники конференции «OberonCore», если специально не оговорено иное.
Администрация не несет ответственности за мнения, стиль и достоверность высказываний участников, равно как и за безопасность материалов, предоставляемых участниками во вложениях.
Без разрешения участников и ссылки на конференцию «OberonCore» любое воспроизведение и/или копирование высказываний полностью и/или по частям запрещено.
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB