В сообщении от 1116775148 секунд после начала Эпохи Unix Вы написали:
> > Это при чтении файла. А при записи? Как тогда записать ключи и
> > значения (возможно даже и комментарии), которые содержались в файле
> > при считывании, но небыли распознаны, и небыли занесены в ОЗУ?
> Нет при чтении надо распознавать все и хранить и имена ключей и их
> значения. Далее при изменении настроек нужно обновлять эту самую
> базу настроек. И тогда при записи в файл ничего не потеряется.
Вот так я и делаю - храню все ключи и значения в виде дерева DOM (та
самая база настроек, о которой вы говорите). Но дело в том что у меня
не просто ключи/значения, а несколько более сложная структура:
config
ключ1 = значение1
ключN = значениеN
1_ui
ключ1 = значение1
ключN = значениеN
N_ui
ключ1 = значение1
ключN = значениеN
default_account
ключ1 = значение1
ключN = значениеN
account_list
account1
ключ1 = значение1
ключN = значениеN
accountN
ключ1 = значение1
ключN = значениеN
Доступ к этому хозяйству в программе осуществляется примерно таким
образом:
config.ключ1
config.1_ui.ключ1
config.default_account.ключ1
accounts.get_account(1).ключ1
В последнем примере метод get_account() возвращает объект, который имеет
ссылку на определенную ветвь дерева DOM. Такие ссылки могут быть
разбросаны в программе, и обновление их, как я уже говорил будет
затруднительно. А при использовании сервера я просто модифицирую
интерфейсные классы, так чтобы они обращались к серверу для получения и
установки значений.
> > Думаю, много сложного из мира С превращается в легкое и простое в
> > мире Python. Мощь ООП + набор высокоуровневых инструментов делают
> > свое дело. Что самое удивительное - все работает быстро. Java
> > отдыхает!!! :-D
> Я о сложности архитектуры программы говорил. Ведь тут и CORBA
> можно использовать ;-)
А почему бы и нет? :) Если это не создаст дополнительные проблемы как
пользователю так и разработчику. Если бы поддержка CORBA шла в
стандартной поставке Python (что очень важно, так как пользователи
совсем не горят желанием качать дополнительные библиотеки) и этот
механизм работал бы быстро, и не требовал много системных ресурсов, то я
с радостью использовал бы CORBA. А так я использую программные гнезда,
что не создаст проблем ни пользователю, ни разработчику (т.е. мне).
Когда я работаю над архитектурой я стараюсь найти золотую середину между
простотой, расширяемостью, взаимозаменяемостью и производительностью.
Вообще это даже касается не только архитектуры, но и отдельного куска
кода.