OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Четверг, 28 Март, 2024 19:19

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




Начать новую тему Ответить на тему  [ Сообщений: 61 ]  На страницу Пред.  1, 2, 3, 4  След.
Автор Сообщение
СообщениеДобавлено: Суббота, 01 Ноябрь, 2008 00:22 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 18:55
Сообщения: 2272
Откуда: Россия, Нижний Новгород
Vlad писал(а):
Вот это и плохо.

Почему?

Vlad писал(а):
будет глючить в многопотоковой среде

Так там нет с этим проблемы - там нет многопоточности. Именно потому что там нет и никогда не будет многопоточности глобальная переменная и используется.

Vlad писал(а):
потому что коннект к БД не был заранее засетаплен.

А глобальность причём?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 01 Ноябрь, 2008 00:47 

Зарегистрирован: Суббота, 26 Ноябрь, 2005 18:38
Сообщения: 1857
Сергей Губанов писал(а):
Почему?


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

Сергей Губанов писал(а):
Так там нет с этим проблемы - там нет многопоточности. Именно потому что там нет и никогда не будет многопоточности глобальная переменная и используется.


Никогда не говори никогда :)

Сергей Губанов писал(а):
Vlad писал(а):
потому что коннект к БД не был заранее засетаплен.

А глобальность причём?


При том, что если бы ее не было, то до показа окошка дело бы просто не дошло (окошко явно требует БД). Т.е. ошибка была бы обнаружена раньше.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 01 Ноябрь, 2008 12:23 
Аватара пользователя

Зарегистрирован: Суббота, 12 Июль, 2008 22:49
Сообщения: 575
Откуда: Россия, Санкт-Петербург
Vlad писал(а):
Сергей Губанов писал(а):
Почему?


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


Складывается такое впечатление, что ваши программы живут сами по себе...
Я всегда наивно полагал, что полный контроль над программой у программиста, и чего он захочет, то и будет происходить в нужном месте. Без всяких обрушений.
Видимо я чего-то не знаю :(
* ушёл перечитывать Дейкстру


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 01 Ноябрь, 2008 12:58 

Зарегистрирован: Вторник, 18 Сентябрь, 2007 08:48
Сообщения: 108
Madzi писал(а):
Vlad писал(а):
Сергей Губанов писал(а):
Почему?


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


Складывается такое впечатление, что ваши программы живут сами по себе...
Я всегда наивно полагал, что полный контроль над программой у программиста, и чего он захочет, то и будет происходить в нужном месте. Без всяких обрушений.
Видимо я чего-то не знаю :(
* ушёл перечитывать Дейкстру


Полного контроля у вас никогда не будет.
Вы живёте в реальном мире, не в Матрице 8)


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Воскресенье, 02 Ноябрь, 2008 00:12 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 18:55
Сообщения: 2272
Откуда: Россия, Нижний Новгород
Vlad писал(а):
Я ж писал - отсутствует контроль. Кто чего хочет, тот то и делает. Это ведет к тому, что изменение о одном месте системы обрушивает совершенно другую часть, которая казалось никак не зависит от этого места (зависимости неявные).

Да с какой же стати-то? Вот у меня логгер глобальный. Так пожалуйста пусть на здоровье кто хочет в него пишет что захочет когда захочет и сколько захочет. Он у меня потокобезопасный. Для того он и сделан глобальным, чтобы кто угодно им пользовался.

Vlad писал(а):
При том, что если бы ее не было, то до показа окошка дело бы просто не дошло (окошко явно требует БД). Т.е. ошибка была бы обнаружена раньше.

Какая ещё ошибка я никак понять не могу? Забыли проинициализировать глобальную переменную что ли? То есть всё "зло" свелось к этому? (Я логгер в самом-пересамом начале программы инициализирую.)


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

Зарегистрирован: Суббота, 26 Ноябрь, 2005 18:38
Сообщения: 1857
Сергей Губанов писал(а):
Да с какой же стати-то? Вот у меня логгер глобальный. Так пожалуйста пусть на здоровье кто хочет в него пишет что захочет когда захочет и сколько захочет. Он у меня потокобезопасный. Для того он и сделан глобальным, чтобы кто угодно им пользовался.


Да, глобальный логгер - хороший пример компоненты, зависимость от которой вы не хотите везде явно тащить, но к которой хотите иметь доступ везде. Но с оговорками :) Скорее всего это один отладочный логгер, в который пишут что угодно кто угодно. Как только в системе появляется несколько логгеров и вы хотите иметь контоль над тем какая компонента куда логает, то такой подход уже не работает.

Сергей Губанов писал(а):
Vlad писал(а):
При том, что если бы ее не было, то до показа окошка дело бы просто не дошло (окошко явно требует БД). Т.е. ошибка была бы обнаружена раньше.

Какая ещё ошибка я никак понять не могу? Забыли проинициализировать глобальную переменную что ли? То есть всё "зло" свелось к этому? (Я логгер в самом-пересамом начале программы инициализирую.)


Да. Логгер вы можете проинитить в самом начале (хотя и тут не все так просто). А вот ту же БД - нет.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: О локализации состояния
СообщениеДобавлено: Понедельник, 10 Ноябрь, 2008 22:31 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 18:55
Сообщения: 2272
Откуда: Россия, Нижний Новгород
Ну не совсем один логгер :D. Он у меня 32-канальный. Каждое сообщение снабжается 32-битной маской, а к логгеру прикрепляются потоки вывода тоже снабжённые своими 32-битными масками. От пересечения масок зависит в какие потоки вывода попадёт логгируемое сообщение.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: О локализации состояния
СообщениеДобавлено: Вторник, 11 Ноябрь, 2008 11:54 

Зарегистрирован: Понедельник, 30 Июль, 2007 10:53
Сообщения: 1538
Откуда: Беларусь, Минск
А если это не логгер, а принтер? Пять документов захотели распечататься. Пять слов оттуда, три слова отсюда, строка из третьего документа... Но и от глобального объекта тоже не обойтись, иначе можно так и не узнать, что принтер вообще существует.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: О локализации состояния
СообщениеДобавлено: Вторник, 11 Ноябрь, 2008 17:22 

Зарегистрирован: Воскресенье, 28 Май, 2006 22:12
Сообщения: 1693
Valery Solovey писал(а):
А если это не логгер, а принтер? Пять документов захотели распечататься. Пять слов оттуда, три слова отсюда, строка из третьего документа... Но и от глобального объекта тоже не обойтись, иначе можно так и не узнать, что принтер вообще существует.

Обычно логгер для какой-то системы из Н объектов так и пишет - что от кого пришло. "синхронизация" осуществляется на уровне недилимых единиц-записей от клиентов. Что в этом страшного? Более того, часто это - единственный способ восстановить адекватную картину (снимок) взаимодействия между разными подсистемами(объектами)...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: О локализации состояния
СообщениеДобавлено: Вторник, 11 Ноябрь, 2008 17:58 

Зарегистрирован: Понедельник, 30 Июль, 2007 10:53
Сообщения: 1538
Откуда: Беларусь, Минск
Логгер - это слишком специфичная вещь. А разговор о вредности глобальности.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: О локализации состояния
СообщениеДобавлено: Вторник, 11 Ноябрь, 2008 18:20 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 18:55
Сообщения: 2272
Откуда: Россия, Нижний Новгород
Valery Solovey писал(а):
Логгер - это слишком специфичная вещь. А разговор о вредности глобальности.

То есть я поговорить о вредности помешал? Ну простите...

Так, а в чём вредность глобальности-то?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: О локализации состояния
СообщениеДобавлено: Вторник, 11 Ноябрь, 2008 18:42 

Зарегистрирован: Понедельник, 30 Июль, 2007 10:53
Сообщения: 1538
Откуда: Беларусь, Минск
Как таковой вредности нет, просто она появляется при излишнем усердии. Стой же БД или с драйвером принтера.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: О локализации состояния
СообщениеДобавлено: Вторник, 11 Ноябрь, 2008 20:57 

Зарегистрирован: Воскресенье, 28 Май, 2006 22:12
Сообщения: 1693
Valery Solovey писал(а):
Как таковой вредности нет, просто она появляется при излишнем усердии. Стой же БД или с драйвером принтера.

А что такое "глобальность"? В рамках чего? Если мы - про классические системы (на базе Си(++) писанные), то вы имеете в виду "глбальность" в смысле видимости объекта во всех единицах компиляции, вошедших в данный процесс? Ну, так кто ж вам дохтур?
Если - про Оберон-системы, то, пардоньте, а что там такого вредного осталось от глобально юзаемых объектов, после включения примитивов синхронизации (если поддерживается параллельность)?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: О локализации состояния
СообщениеДобавлено: Вторник, 11 Ноябрь, 2008 21:31 

Зарегистрирован: Суббота, 26 Ноябрь, 2005 18:38
Сообщения: 1857
Владимир Лось писал(а):
?
Если - про Оберон-системы, то, пардоньте, а что там такого вредного осталось от глобально юзаемых объектов, после включения примитивов синхронизации (если поддерживается параллельность)?


Этого мало.
viewtopic.php?p=20755#p20755
viewtopic.php?p=20762#p20762


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: О локализации состояния
СообщениеДобавлено: Среда, 12 Ноябрь, 2008 01:01 

Зарегистрирован: Воскресенье, 28 Май, 2006 22:12
Сообщения: 1693
Vlad писал(а):
http://forum.oberoncore.ru/viewtopic.php?p=20755#p20755
viewtopic.php?p=20762#p20762

Ну, и где говорить "ах!"? :twisted:
С чего это вдруг стало проблемой, что глобальная функция станет работать опять же с уровнем своего контекста (видимости) глобальных объектов???
Не делайте функцию глобальной!
Нет, я правда не пойму: В ЧЁМ проблема?
Даже в сях я стараюсь "интерфейс единицы компиляции" (да-да, назовём так, потому, как модульность в си как-то на уровень исходников так и не пролезла за 30 лет... ну шо ж тут поделать?...) функциональность, "предоставляемую данным модулем-единицей компиляции", получать только через функциональные вещи. Легче всего представлять то, что собрано в единице компиляции, как "синглтон". Практически у меня стало правилом и нормой в си объявлять все переменные ststic и явно extern в заголовочных файлах, буде такое всё-таки случается...
Ещё одним правилом у меня вводить в такие сишные "модули" функции с именами ModuleName_Init(). Собсна их и вызываю "по дереву" из main во первых строках... Практически полная эмуляция обероновского подхода при загрузке-инициализации... Пробовал извращаться с инициализацией в функциях, вызываемых до main, ... ненаглядно, не стандартно, трудно потом сопровождать! Если в языке, как в си, нет предусмотренного средства, лучше - явно...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: О локализации состояния
СообщениеДобавлено: Среда, 12 Ноябрь, 2008 18:48 

Зарегистрирован: Суббота, 26 Ноябрь, 2005 18:38
Сообщения: 1857
Владимир Лось писал(а):
Ну, и где говорить "ах!"? :twisted:


Вы принципиально не хотите общаться без ненужных эмоций?

Владимир Лось писал(а):
С чего это вдруг стало проблемой, что глобальная функция станет работать опять же с уровнем своего контекста (видимости) глобальных объектов???


Блин. Да не в этом проблема. Пусть работает. Проблема начинается тогда, когда результат работы этой глобальной функции может влиять на другие компоненты. Пример:
Код:
void set_current_database(db *); // вот в этой функции ничего страшного нет, пусть делает что угодно
db *get_current_database();       // а вот при добавлении этой функции мы кладем большие грабли


Владимир Лось писал(а):
Нет, я правда не пойму: В ЧЁМ проблема?


Проблема в данном примере будет в том, что компонента1 пойдет совсем не в ту базу, которая ожидает компонента2, потому что компонента3 без ведома компоненты2 вызвала set_current_database.

Владимир Лось писал(а):
Легче всего представлять то, что собрано в единице компиляции, как "синглтон".


Да-да. Паттерн "синглтон" один из самых разрушительных при неправильном использовании.

Владимир Лось писал(а):
Ещё одним правилом у меня вводить в такие сишные "модули" функции с именами ModuleName_Init(). Собсна их и вызываю "по дереву" из main во первых строках...


Вот про это я и говорю - "инициализация в одном обозримом месте".


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: О локализации состояния
СообщениеДобавлено: Среда, 12 Ноябрь, 2008 21:08 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9459
Откуда: Россия, Орёл
Vlad писал(а):
Проблема в данном примере будет в том, что компонента1 пойдет совсем не в ту базу, которая ожидает компонента2, потому что компонента3 без ведома компоненты2 вызвала set_current_database.
...
Да-да. Паттерн "синглтон" один из самых разрушительных при неправильном использовании.

Тем не менее, модульность с инкапсуляцией состояния - лучшее, видимо, что возможно в общем случае при процедурном программировании (и mainstream-ООП как его вариации). Можно по-другому, но надо уже уходить от понятия "вызов процедуры". Тут Сергей Губанов об этом помечтал немного, и я его поддерживаю (владея кое-какими конкретными штуками).


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: О локализации состояния
СообщениеДобавлено: Среда, 12 Ноябрь, 2008 21:30 

Зарегистрирован: Воскресенье, 28 Май, 2006 22:12
Сообщения: 1693
Илья Ермаков писал(а):
Можно по-другому, но надо уже уходить от понятия "вызов процедуры". Тут Сергей Губанов об этом помечтал немного, и я его поддерживаю (владея кое-какими конкретными штуками).

Дайте ссылок, Илья... А то у меня потуги в сторону подобного мечтания в постах с примерно 1999 года...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: О локализации состояния
СообщениеДобавлено: Среда, 12 Ноябрь, 2008 23:35 
Модератор
Аватара пользователя

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: О локализации состояния
СообщениеДобавлено: Четверг, 13 Ноябрь, 2008 00:30 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 18:55
Сообщения: 2272
Откуда: Россия, Нижний Новгород
А я не помню где это. Там про исключения речь шла. Но исключения ведь имеют смысл только если у нас есть стек вызовов процедур. Если от стека вызовов процедур отказаться в пользу ассинхроного обмена сообщениями так сказать "на одном уровне", то кидать исключение будет не в кого - ты и есть крайний.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 61 ]  На страницу Пред.  1, 2, 3, 4  След.

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


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

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


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

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