OberonCore
https://forum.oberoncore.ru/

Упрощение Oberon
https://forum.oberoncore.ru/viewtopic.php?f=115&t=6867
Страница 1 из 1

Автор:  Comdiv [ Воскресенье, 25 Сентябрь, 2022 23:54 ]
Заголовок сообщения:  Упрощение Oberon

Предлагайте, что по Вашему в Oberon избыточно.

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

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


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

Автор:  vvmtutby [ Вторник, 27 Сентябрь, 2022 09:13 ]
Заголовок сообщения:  Re: Упрощение Oberon

Comdiv писал(а):
Предлагайте, что по Вашему в Oberon избыточно.
В этом вопросе многое зависит от дефиниции слова "избыточно":
например, избыточны ли CASE и FOR?

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

Автор:  AlexBogy [ Суббота, 25 Февраль, 2023 09:49 ]
Заголовок сообщения:  Re: Упрощение Oberon

Приведу цитату из статьи Н. Вирта "От Модулы к Оберону":

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

Автор:  JackKatch [ Суббота, 25 Февраль, 2023 15:27 ]
Заголовок сообщения:  Re: Упрощение Oberon

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

Автор:  Comdiv [ Суббота, 25 Февраль, 2023 19:27 ]
Заголовок сообщения:  Re: Упрощение Oberon

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

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

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

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

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

Автор:  Comdiv [ Суббота, 25 Февраль, 2023 19:33 ]
Заголовок сообщения:  Re: Упрощение Oberon

JackKatch писал(а):
Для таких предложений нужен большой опыт.
Этот опыт уже давно лежит в виде готовых исходных кодов. Например.

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

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

Страница 1 из 1 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/