OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Пятница, 19 Апрель, 2024 18:51

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 6 ] 
Автор Сообщение
СообщениеДобавлено: Понедельник, 30 Ноябрь, 2009 10:27 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9459
Откуда: Россия, Орёл
viewtopic.php?p=38759#p38759

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

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


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

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

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 30 Ноябрь, 2009 10:44 
Модератор
Аватара пользователя

Зарегистрирован: Среда, 16 Ноябрь, 2005 00:53
Сообщения: 4625
Откуда: Россия, Орёл
Илья Ермаков писал(а):
В некоторых случаях framework-ового типа удобно делать взаимодействие через глобальные структуры... Тогда можно вызывать запросы и как команды, и программно.
Например, DevCommanders.par


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 30 Ноябрь, 2009 11:17 

Зарегистрирован: Вторник, 11 Август, 2009 11:44
Сообщения: 516
Откуда: Бердск
О чем это Вы, не пойму никак... :?:
Что такого я сказал, не возьму в толк, что вызывает непонятные для меня комментарии.

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 30 Ноябрь, 2009 14:42 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9459
Откуда: Россия, Орёл
А где написано, что эта тема открыта для того, чтобы Вам оппонировать? :)


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 30 Ноябрь, 2009 14:50 

Зарегистрирован: Вторник, 11 Август, 2009 11:44
Сообщения: 516
Откуда: Бердск
Ну я не против, давайте соглашаться :D
Только скажите, в какую сторону думать-то...

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 30 Ноябрь, 2009 14:52 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9459
Откуда: Россия, Орёл
Я ответвил от темы нереентерабельных процедур тему о полезности в ряде случаев использования вместо параметров глобальной структуры данных. (Ясное дело, что это связано с не-реентерабельностью, как с т.з. рекурсии, так и с т.з. параллелизма).


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 6 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 10


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Вся информация, размещаемая участниками на конференции (тексты сообщений, вложения и пр.) © 2005-2024, участники конференции «OberonCore», если специально не оговорено иное.
Администрация не несет ответственности за мнения, стиль и достоверность высказываний участников, равно как и за безопасность материалов, предоставляемых участниками во вложениях.
Без разрешения участников и ссылки на конференцию «OberonCore» любое воспроизведение и/или копирование высказываний полностью и/или по частям запрещено.
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB