OberonCore
https://forum.oberoncore.ru/

Псевдомим модуля при импорте.
https://forum.oberoncore.ru/viewtopic.php?f=158&t=6866
Страница 1 из 1

Автор:  JackKatch [ Пятница, 23 Сентябрь, 2022 15:45 ]
Заголовок сообщения:  Псевдомим модуля при импорте.

Оберон допускает, при импорте модуля, указать псевдоним. В описании Оберон 2 указано, что это позволяет использовать короткие имена. Для чего ещё это может быть нужно и можно ли обойтись без этого?

Автор:  Иван Денисов [ Пятница, 23 Сентябрь, 2022 15:48 ]
Заголовок сообщения:  Re: Псевдомим модуля при импорте.

JackKatch писал(а):
Оберон допускает, при импорте модуля, указать псевдоним. В описании Оберон 2 указано, что это позволяет использовать короткие имена. Для чего ещё это может быть нужно и можно ли обойтись без этого?


Вот одно из самых классных применений этого свойства помимо сокращения кода для удобочитаемости.
https://software.openbrace.org/boards/16/topics/33

Код:
MODULE Test;

IMPORT S1 := Stack (INTEGER, 100), S2 := Stack (REAL, 100);

BEGIN
    S1.Push (0);
    S2.Push (3.14);
END Test.


Однако это поддерживает только один компилятор конкретный.

Автор:  Comdiv [ Суббота, 24 Сентябрь, 2022 00:56 ]
Заголовок сообщения:  Re: Псевдомим модуля при импорте.

Код:
MODULE Module;

IMPORT O := Out;

PROCEDURE Out*; END Out;

END Module.

Автор:  Александр Ильин [ Воскресенье, 25 Сентябрь, 2022 00:35 ]
Заголовок сообщения:  Re: Псевдомим модуля при импорте.

Pseudo-meme.

Автор:  JackKatch [ Воскресенье, 25 Сентябрь, 2022 09:29 ]
Заголовок сообщения:  Re: Псевдомим модуля при импорте.

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

Автор:  Иван Денисов [ Воскресенье, 25 Сентябрь, 2022 09:44 ]
Заголовок сообщения:  Re: Псевдомим модуля при импорте.

JackKatch писал(а):
Почему такой вопрос возник. В "Построение компиляторов" стр. 148 есть следующее замечание: "Хотя использование псевдонимов является редкостью, опредаление языка, к сожалению, допускает их." Так вот хотелось бы понять, это такой оборот речи, что вот мол компилятор усложняется или автор действительно считает этот механизм не нужным. Пока что складывается впечатление, что без псевдонимов можно обойтись.


Практический специалист не может без них обойтись. Это сделало бы код сложночитаемым.

Вот пример из реальной программы:

Код:
   IMPORT SYSTEM, MCU := MicroSTM32F4, ARMv7M := MicroARMv7M,
      Traps := MicroARMv7MTraps, 
      TPs := MicroSTM32F4TPorts,
      Pins := MicroSTM32F4Pins,
      Sys := MicroSTM32F4System,
      SysTick0 := MobxARMv7MSTM32SysTick0,
      PWM, Counter, Leds,
      MicroKernel0,
      ADC := MicroSTM32F4ADC1,
      I2C1 := MicroSTM32F4I2C1Bus,
      ADS1115 := Digitaladc1115;


Альтернативные реализации оптимизированных модулей также возможно подключать для тестирования, не меняя код. Скажем MicroSTM32F4I2C1Bus заменяется на MicroSTM32F4I2C1BusReduced, и проверяется, всё ли функционирует корректно.

Автор:  JackKatch [ Воскресенье, 25 Сентябрь, 2022 11:16 ]
Заголовок сообщения:  Re: Псевдомим модуля при импорте.

Я понял, что на практике читабельность кода может сильно пострадать, без псевдонимов.

Автор:  Comdiv [ Воскресенье, 25 Сентябрь, 2022 20:28 ]
Заголовок сообщения:  Re: Псевдомим модуля при импорте.

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

Автор:  Иван Денисов [ Воскресенье, 25 Сентябрь, 2022 20:43 ]
Заголовок сообщения:  Re: Псевдомим модуля при импорте.

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

Ну и хорошо. Чем меньше механизмов, тем проще.

Автор:  Comdiv [ Воскресенье, 25 Сентябрь, 2022 20:55 ]
Заголовок сообщения:  Re: Псевдомим модуля при импорте.

Чем меньше или как в Обероне? Можно предложить Оберон как критерий хорошести :lol: . Хотя чего предлагать, многие давно его так и используют.

Автор:  Иван Денисов [ Воскресенье, 25 Сентябрь, 2022 21:10 ]
Заголовок сообщения:  Re: Псевдомим модуля при импорте.

Comdiv писал(а):
Чем меньше или как в Обероне? Можно предложить Оберон как критерий хорошести :lol: . Хотя чего предлагать, многие давно его так и используют.

Зрите в корень! Фёдор Васильевич не даром сравнивал Оберон с десятичной системой исчисления. Юрг Гуткнехт также сказал, что больше нет перспектив в развитии языков программирования.

Автор:  Comdiv [ Воскресенье, 25 Сентябрь, 2022 23:34 ]
Заголовок сообщения:  Re: Псевдомим модуля при импорте.

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

Автор:  vvmtutby [ Вторник, 27 Сентябрь, 2022 09:05 ]
Заголовок сообщения:  Re: Псевдомим модуля при импорте.

JackKatch писал(а):
Почему такой вопрос возник. В "Построение компиляторов" стр. 148 есть следующее замечание: "Хотя использование псевдонимов является редкостью, определение языка, к сожалению, допускает их." Так вот хотелось бы понять, это такой оборот речи, что вот мол компилятор усложняется или автор действительно считает этот механизм не нужным. Пока что складывается впечатление, что без псевдонимов можно обойтись.
В Modula-3, наследнике Виртовской Modula-2, используется. И успешно.
Не уверен, что только лишь для улучшения читаемости исходных кодов.
Возможно, полезно при применинии generic-ов.

Автор:  Sergej Durmanov [ Суббота, 31 Декабрь, 2022 12:32 ]
Заголовок сообщения:  Re: Псевдомим модуля при импорте.

Тскже, это позволяет менять импортированный модуль, меняя его имя лишь в одном месте. Например, мы использовали модуль String, который реализует поддержку строк ascii, потом мы переключили на использование unicode : import String := UnicodeString

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