OberonCore
https://forum.oberoncore.ru/

Взаимодействие через глобальные структуры
https://forum.oberoncore.ru/viewtopic.php?f=23&t=2135
Страница 1 из 1

Автор:  Илья Ермаков [ Понедельник, 30 Ноябрь, 2009 10:27 ]
Заголовок сообщения:  Взаимодействие через глобальные структуры

viewtopic.php?p=38759#p38759

Galkov писал(а):
Alexey_Donskoy писал(а):
- все процедуры целесообразно рассматривать как реентерабельные, пока явно не указано обратного

В этом предложение ключевое слово - целесообразно :wink:
У меня иные наблюдения про целесообразность.
Как минимум, в 9 случаях из 10 этого не требуется. Но, серьезно влияет на эффективность кода. Как, впрочем, и на мозги того, кто этот код делает/читает


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

Простота и расширяемость решения себя окупает, короче.

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

Автор:  Евгений Темиргалеев [ Понедельник, 30 Ноябрь, 2009 10:44 ]
Заголовок сообщения:  Re: Взаимодействие через глобальные структуры

Илья Ермаков писал(а):
В некоторых случаях framework-ового типа удобно делать взаимодействие через глобальные структуры... Тогда можно вызывать запросы и как команды, и программно.
Например, DevCommanders.par

Автор:  Galkov [ Понедельник, 30 Ноябрь, 2009 11:17 ]
Заголовок сообщения:  Re: Взаимодействие через глобальные структуры

О чем это Вы, не пойму никак... :?:
Что такого я сказал, не возьму в толк, что вызывает непонятные для меня комментарии.

Ну знаю я, что "Взаимодействие через глобально известное место - вполне себе нормальный паттерн". Скажем, любой ЯВУ-парсинг "сверху" так делает, а исходный текст - "глобально известное место".
И что ???
Никак это не отменяют того наблюдения, что подавляющее число подпрограм этим (рекурсией) не занимаются.
Вроде бы...

Автор:  Илья Ермаков [ Понедельник, 30 Ноябрь, 2009 14:42 ]
Заголовок сообщения:  Re: Взаимодействие через глобальные структуры

А где написано, что эта тема открыта для того, чтобы Вам оппонировать? :)

Автор:  Galkov [ Понедельник, 30 Ноябрь, 2009 14:50 ]
Заголовок сообщения:  Re: Взаимодействие через глобальные структуры

Ну я не против, давайте соглашаться :D
Только скажите, в какую сторону думать-то...

Ну скажем, если подпрограмма работает в неком контексте, то это она работает через глобальные переменные, или это просто метод некого объекта ???
И после этого сразу же (автоматически) возникает следующий: чего такое рекурсия в ООП ???
Или не угадал тему ???

Автор:  Илья Ермаков [ Понедельник, 30 Ноябрь, 2009 14:52 ]
Заголовок сообщения:  Re: Взаимодействие через глобальные структуры

Я ответвил от темы нереентерабельных процедур тему о полезности в ряде случаев использования вместо параметров глобальной структуры данных. (Ясное дело, что это связано с не-реентерабельностью, как с т.з. рекурсии, так и с т.з. параллелизма).

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