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 писал(а): - все процедуры целесообразно рассматривать как реентерабельные, пока явно не указано обратного В этом предложение ключевое слово - целесообразно ![]() У меня иные наблюдения про целесообразность. Как минимум, в 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: Взаимодействие через глобальные структуры |
Ну я не против, давайте соглашаться ![]() Только скажите, в какую сторону думать-то... Ну скажем, если подпрограмма работает в неком контексте, то это она работает через глобальные переменные, или это просто метод некого объекта ??? И после этого сразу же (автоматически) возникает следующий: чего такое рекурсия в ООП ??? Или не угадал тему ??? |
Автор: | Илья Ермаков [ Понедельник, 30 Ноябрь, 2009 14:52 ] |
Заголовок сообщения: | Re: Взаимодействие через глобальные структуры |
Я ответвил от темы нереентерабельных процедур тему о полезности в ряде случаев использования вместо параметров глобальной структуры данных. (Ясное дело, что это связано с не-реентерабельностью, как с т.з. рекурсии, так и с т.з. параллелизма). |
Страница 1 из 1 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |