OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Вторник, 19 Март, 2024 07:45

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




Начать новую тему Ответить на тему  [ Сообщений: 6 ] 
Автор Сообщение
 Заголовок сообщения: Упрощение Oberon
СообщениеДобавлено: Воскресенье, 25 Сентябрь, 2022 23:54 

Зарегистрирован: Четверг, 08 Май, 2008 19:13
Сообщения: 1447
Откуда: Киев
Предлагайте, что по Вашему в Oberon избыточно.

Начну с малого, но бесспорного - функции ODD.

1. Нужно очень редко.
2. Заменяется невероятно просто - x MOD 2 = 1, что указано в самом определении.
3. На мой взгляд, смысл замены очевидней предопределённой функции. Odd - это странный(да, и нечётный тоже).
4. Оптимизация генерации для него не нужна, а если, всё-таки, хочется, то более обобщённая оптимизация деления степени 2-ки не только проста, но и полезней.


Однажды был зафиксирован казус - использование ORD(ODD(x)) вместо более прозрачного и короткого x MOD 2. Напомню для тех, кто забыл, что в Обероне второй вариант не требует отдельного учёта отрицательных x, поэтому он всегда тождественен первому.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Упрощение Oberon
СообщениеДобавлено: Вторник, 27 Сентябрь, 2022 09:13 

Зарегистрирован: Пятница, 11 Январь, 2019 21:33
Сообщения: 87
Comdiv писал(а):
Предлагайте, что по Вашему в Oberon избыточно.
В этом вопросе многое зависит от дефиниции слова "избыточно":
например, избыточны ли CASE и FOR?

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Упрощение Oberon
СообщениеДобавлено: Суббота, 25 Февраль, 2023 09:49 

Зарегистрирован: Суббота, 30 Июль, 2022 12:02
Сообщения: 68
Приведу цитату из статьи Н. Вирта "От Модулы к Оберону":

В то же время язык программирования не должен быть одной лишь математической теорией. Он должен быть практическим инструментом. Это подразумевет определенные ограничения, накладываемые на краткость формализма. Несколько языковых средств Oberon с чисто теоретической точки зрения являются излишними. И, тем не менее, они присутствуют в языке из сугубо практических соображений, то ли для удобства самого программиста, то ли для достижения эффективной кодогенерации без использования в компиляторах сложных «оптимизирующих» алгоритмов сопоставления шаблонов. Примерами таких языковых средств являются наличие нескольких форм оператора цикла, а также существование стандартных процедур, таких как INC, DEC и ODD. Они не усложняют ни язык, ни компилятор.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Упрощение Oberon
СообщениеДобавлено: Суббота, 25 Февраль, 2023 15:27 

Зарегистрирован: Пятница, 07 Май, 2021 11:06
Сообщения: 28
Никлаус Вирт упоминал, что по этому вопросу было много обсуждений в его команде. Для таких предложений нужен большой опыт. Для чего вообще что то исключать? Встраиваемая функция ODD транслируется в одну, две, или около того инструкции процессора (для этого она и нужна). А вот выражение x MOD 2 = 1, неизвестно во сколько инструкций (зависит от компилятора, опций оптимизации и тд). Оператор CASE вероятно занимает больше места в коде чем последовательность операторов IF, но он выполняет переход к требуемому блоку по значению выражения за одно сравнение. По моему тут нет избыточности. Более ценно, с моей точки зрения, реализация самодостаточной среды поддержки компилятора (операционной системы) для всех доступных архитектур вычислительных машин. На примере Ричарда Столмана и попытки создания свободной UNIX, видно что у каждого свой вкус и взгляд (Каждый сделал какой то инструментарий, а на ядро пороха не хватило.). И бесконечные дебаты не позволят что либо сделать. Нужно (с моей точки зрения) как Линус, поставить сообщество перед фактом чего то готового, тогда возможно это что то обретёт поддержку и жизнь. А иначе - лебедь, рак и щука. (Сделайте самостоятельно что то рабочее и продвигайте. Если ваша работа будет обладать преимуществами, то её поддержат.)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Упрощение Oberon
СообщениеДобавлено: Суббота, 25 Февраль, 2023 19:27 

Зарегистрирован: Четверг, 08 Май, 2008 19:13
Сообщения: 1447
Откуда: Киев
AlexBogy писал(а):
Приведу цитату из статьи Н. Вирта "От Модулы к Оберону":
Если хочется процитировать Вирта, то лучше его и цитировать, а не переводчика. Не всегда есть разница, но раз берёте на себя ответственность за высказывание, то не лишне и проделать небольшую дополнительную работу на всякий случай. Спасибо Руслану Богатырёву за перевод, но сейчас даже машины... Впрочем, предоставим им слово.

ЕИ писал(а):
Предложение "They complicate neither the language conceptually nor the compiler to any significant degree" было переведено как "Они не усложняют ни язык, ни компилятор". Что можно сказать об этом?
ИИ писал(а):
Перевод не полностью передает смысл оригинальной фразы.

В оригинальной фразе используются слова "conceptually" и "to any significant degree", которые означают, что изменения, которые описываются, не имеют значительного влияния на язык или компилятор, поэтому они не сильно усложняются. То есть, "conceptually" указывает на то, что изменения не затрагивают основополагающие концепции языка программирования, а "to any significant degree" указывает на то, что изменения не существенны и не вносят значительных изменений в язык или компилятор.

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

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Упрощение Oberon
СообщениеДобавлено: Суббота, 25 Февраль, 2023 19:33 

Зарегистрирован: Четверг, 08 Май, 2008 19:13
Сообщения: 1447
Откуда: Киев
JackKatch писал(а):
Для таких предложений нужен большой опыт.
Этот опыт уже давно лежит в виде готовых исходных кодов. Например.

Код:
cat ProjectOberon2013/Sources/*.Mod | grep INC\( | wc --lines
312

cat ProjectOberon2013/Sources/*.Mod | grep ODD\( | wc --lines
19
Видите, почему речь была про ODD, а не об INC?


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 6 ] 

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


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

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


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

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