OberonCore
https://forum.oberoncore.ru/

Системные флаги модуля SYSTEM
https://forum.oberoncore.ru/viewtopic.php?f=2&t=3448
Страница 1 из 1

Автор:  Роман М. [ Четверг, 12 Май, 2011 14:43 ]
Заголовок сообщения:  Системные флаги модуля SYSTEM

BlackBox Platform-Specific Issues писал(а):
Код:
System Flags

The import of module SYSTEM allows to override some default behavior of the compiler by the usage of system flags. System flags are used to configure type- and procedure declarations. The extended syntax is given below.

Type    =   Qualident
      | ARRAY ["[" SysFlag "]"] [ConstExpr {"," ConstExpr}]
         OF Type
      | RECORD ["[" SysFlag "]"] ["("Qualident")"] FieldList
         {";" FieldList} END
      | POINTER ["[" SysFlag "]"] TO Type
      | PROCEDURE [FormalPars].
ProcDecl   =   PROCEDURE ["[" SysFlag "]"] [Receiver] IdentDef
         [FormalPars] ";"
      DeclSeq [BEGIN StatementSeq] END ident.
FPSection   =   [VAR ["[" SysFlag "]"]] ident {"," ident} ":" Type.
SysFlag   =   ConstExpr | ident.


В "Приложении B" языка тип описан без этого: ["[" SysFlag "]"].

Посему у меня возникло сомнение в том, что системные флаги являются частью языка Компонентный Паскаль. Решил ради проверки посмотреть что насчёт них сказано в компиляторе GPCP и не нашёл никаких упоминаний.

Подтвердите мои сомнения.

Автор:  Евгений Темиргалеев [ Четверг, 12 Май, 2011 15:04 ]
Заголовок сообщения:  Re: Системные флаги модуля SYSTEM

Platform-Specific Issues (Windows) писал(а):
SYSTEM is not considered as part of the language Component Pascal proper.

Автор:  Роман М. [ Четверг, 12 Май, 2011 16:57 ]
Заголовок сообщения:  Re: Системные флаги модуля SYSTEM

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

А к ним относятся и большинство обёрток к сторонним библиотекам. Облом. :(

Автор:  Евгений Темиргалеев [ Четверг, 12 Май, 2011 17:25 ]
Заголовок сообщения:  Re: Системные флаги модуля SYSTEM

Это ещё с первого оберона идёт: системные вещи частью языка не считаются. Что логично для ЯВУ. И чёткое деление:
- платформенно-независимые модули не включают SYSTEM, т.е. написаны исключительно на ЯВУ => портируемы (максимум --- перекомпиляция)
- платформенно-зависимые модули использую SYSTEM, и "портируемы" только руками полным/частичным переписыванием

Автор:  Info21 [ Четверг, 12 Май, 2011 19:10 ]
Заголовок сообщения:  Re: Системные флаги модуля SYSTEM

Шаловливые ручки за SYSTEM любят хвататься...

Автор:  Роман М. [ Четверг, 12 Май, 2011 22:45 ]
Заголовок сообщения:  Re: Системные флаги модуля SYSTEM

Info21 писал(а):
Шаловливые ручки за SYSTEM любят хвататься...
Это неизбежно, потому как экспериментирую с компиляторами и прочими низкоуровневыми вещами.

Автор:  Info21 [ Пятница, 13 Май, 2011 04:08 ]
Заголовок сообщения:  Re: Системные флаги модуля SYSTEM

Роман М. писал(а):
Info21 писал(а):
Шаловливые ручки за SYSTEM любят хвататься...
Это неизбежно, потому как экспериментирую с компиляторами и прочими низкоуровневыми вещами.
Тогда о переносимости можно говорить только в плане контроля. А тут SYSTEM делает свое дело.

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

Автор:  Евгений Темиргалеев [ Пятница, 13 Май, 2011 08:28 ]
Заголовок сообщения:  Re: Системные флаги модуля SYSTEM

Info21 писал(а):
Про шаловливые ручонки -- это просто закономерность такая.
Может это просто следование по пути наименьшего сопротивления?

Автор:  Info21 [ Пятница, 13 Май, 2011 11:02 ]
Заголовок сообщения:  Re: Системные флаги модуля SYSTEM

Евгений Темиргалеев писал(а):
Info21 писал(а):
Про шаловливые ручонки -- это просто закономерность такая.
Может это просто следование по пути наименьшего сопротивления?
Не думаю.
Скорее, работает некое инстинктивное стремление вкомбинировать *всё*.
Как у студентов, обучаемых на С, стремление запихнуть в короткую программу все трюки, которые упоминались в курсе.

Автор:  Роман М. [ Пятница, 13 Май, 2011 15:39 ]
Заголовок сообщения:  Re: Системные флаги модуля SYSTEM

Евгений Темиргалеев писал(а):
Это ещё с первого оберона идёт: системные вещи частью языка не считаются. Что логично для ЯВУ. И чёткое деление:
- платформенно-независимые модули не включают SYSTEM, т.е. написаны исключительно на ЯВУ => портируемы (максимум --- перекомпиляция)
- платформенно-зависимые модули использую SYSTEM, и "портируемы" только руками полным/частичным переписыванием

Я был бы рад не использовать системный модуль, да не всё так просто, как хотелось бы. Особенно когда требуется интеграция с другими языками программирования и, более того, даже разными реализациями того же Оберона и КП.

Автор:  Info21 [ Пятница, 13 Май, 2011 20:51 ]
Заголовок сообщения:  Re: Системные флаги модуля SYSTEM

Роман М. писал(а):
Я был бы рад не использовать системный модуль, да не всё так просто, как хотелось бы. Особенно когда требуется интеграция с другими языками программирования и, более того, даже разными реализациями того же Оберона и КП.
Это типичные системные (внутри-ИТ) вещи. О переносимости и говорить трудно.

Автор:  Валерий Лаптев [ Воскресенье, 15 Май, 2011 09:27 ]
Заголовок сообщения:  Re: Системные флаги модуля SYSTEM

Info21 писал(а):
Евгений Темиргалеев писал(а):
Info21 писал(а):
Про шаловливые ручонки -- это просто закономерность такая.
Может это просто следование по пути наименьшего сопротивления?
Не думаю.
Скорее, работает некое инстинктивное стремление вкомбинировать *всё*.
Как у студентов, обучаемых на С, стремление запихнуть в короткую программу все трюки, которые упоминались в курсе.

Эффект второй системы?

Автор:  nail_kh [ Вторник, 17 Май, 2011 01:09 ]
Заголовок сообщения:  Re: Системные флаги модуля SYSTEM

Роман М. писал(а):
Я был бы рад не использовать системный модуль, да не всё так просто, как хотелось бы.


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

Автор:  Иван Денисов [ Вторник, 17 Май, 2011 03:40 ]
Заголовок сообщения:  Re: Системные флаги модуля SYSTEM

nail_kh писал(а):
Роман М. писал(а):
Я был бы рад не использовать системный модуль, да не всё так просто, как хотелось бы.


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


О каких процедурах и типах речь? Флаги нельзя к языку отнести, они только регламентируют как вести себя сборщику мусора или в каком порядке организовать стек для аргументов - эти вещи относятся не к языку, а к его реализации! Вы можете про них не знать и успешно программировать на Компонентном паскале, просто не сможет использовать сишные библиотеки, например.

Автор:  Евгений Темиргалеев [ Вторник, 17 Май, 2011 08:16 ]
Заголовок сообщения:  Re: Системные флаги модуля SYSTEM

nail_kh писал(а):
Тоже столкнулся с такой же проблемой. Причем импорт модуля SYSTEM не просто дает доступ к специфическим процедурам и типам но еще и при этом в язык вносятся новые элементы синтаксиса которые в официальном описании языка не упоминаются.
Этот подход применяется с первого Оберона. Никаких проблем тут нет. Скорее наоборот, проблемы, когда пытаются platform-specific учесть в официальном описании. viewtopic.php?p=63212#p63212

Разве что придраться к тому, что Оминк убрал из описания языка упоминание SYSTEM в отдельный документ (в сравнении с описанием Оберона) и ссылок не поставил.

Автор:  id_ler [ Четверг, 02 Июнь, 2011 07:26 ]
Заголовок сообщения:  Re: Системные флаги модуля SYSTEM

Роман М. писал(а):
Особенно когда требуется интеграция с другими языками программирования и, более того, даже разными реализациями того же Оберона и КП.

Для других языков в Оберонах предполагалось использование высокоуровневых средств – компиляторов компиляторов – Coco и Babel(в коллекции Цинна). Но их практическое применение в ББ удручает. Подсистема Coco не имеет главного модуля – Coco. Когда-то существовала тулзла – VCOCO. Скриншоты показывают мощную визуальную среду разработки, но найти ее на бескрайних просторах интернета проблематично. В Babel’e нужно пользоваться уловками, которые создают впечатление `сырой` программы. Чтобы не размениваться на переписывание отдельных библиотек, нужны совместно выработанные соглашения по использованию таких компиляторов, а для начала хотя бы FAQ по-русски. На форуме есть целый раздел.

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