Если считать это верным, то напрашиваются следующие выводы:
— Объекты удовлетворяли бы этому условию, если бы не могли дать доступ к частям внутреннего состояния. Даже передача сообщений не спасает, умолчание не то. Поэтому объекты этому условию скорее не удовлетворяют.
— Монады состояния скорее удовлетворяют этому условию, чем наоборот, поскольку состояние (в большинстве случаев) может быть доступно только на выходе.
— Изменяемые переменные не удовлетворяют условию.
— Подход Эрланга — я могу передать значение части состояния куда-либо, но извне оно не видно, — скорее удовлетворяет условию, чем наоборот.
Yours truly, Serguey Zefirov (thesz NA mail TOCHKA ru)
Re: Почему монады лучше lvalue (глобальных переменных).
Здравствуйте, gandjustas, Вы писали:
G>А вот что такое "named state" не очень понятно.
Дак в статью-то загляни:
...To do this, we add an abstract notion of time to the program. This abstract time is simply a sequence of values in time that has a single name. We call this sequence a named state.
ну пожалуйста, используйте тэг code только по назначению!!! — Кодт
По сути дела это понятие "переменной".
Re[3]: Почему монады лучше lvalue (глобальных переменных).
Здравствуйте, Курилка, Вы писали:
К>Здравствуйте, gandjustas, Вы писали:
G>>А вот что такое "named state" не очень понятно.
К>Дак в статью-то загляни: К>
К>...To do this, we add an abstract notion of time to the program. This abstract time is simply a sequence of values in time that has a single name. We call this sequence a named state.
К>По сути дела это понятие "переменной".
Мда... порвало мозг окончательно.
Re[4]: Почему монады лучше lvalue (глобальных переменных).
T>Если считать это верным, то напрашиваются следующие выводы: T>- Объекты удовлетворяли бы этому условию, если бы не могли дать доступ к частям внутреннего состояния. Даже передача сообщений не спасает, умолчание не то. Поэтому объекты этому условию скорее не удовлетворяют. T>- Монады состояния скорее удовлетворяют этому условию, чем наоборот, поскольку состояние (в большинстве случаев) может быть доступно только на выходе. T>- Изменяемые переменные не удовлетворяют условию. T>- Подход Эрланга — я могу передать значение части состояния куда-либо, но извне оно не видно, — скорее удовлетворяет условию, чем наоборот.
Ты уж до конца цитируй
The main advantage of named state is that the program becomes modular. The main disadvantage is that a program can become incorrect.
T>>Если считать это верным, то напрашиваются следующие выводы: T>>- Объекты удовлетворяли бы этому условию, если бы не могли дать доступ к частям внутреннего состояния. Даже передача сообщений не спасает, умолчание не то. Поэтому объекты этому условию скорее не удовлетворяют. T>>- Монады состояния скорее удовлетворяют этому условию, чем наоборот, поскольку состояние (в большинстве случаев) может быть доступно только на выходе. T>>- Изменяемые переменные не удовлетворяют условию. T>>- Подход Эрланга — я могу передать значение части состояния куда-либо, но извне оно не видно, — скорее удовлетворяет условию, чем наоборот.
J>Ты уж до конца цитируй J>
J>The main advantage of named state is that the program becomes modular. The main disadvantage is that a program can become incorrect.
Я с этим не согласен, поскольку это противоречие.
max(модульность) ≡ min(взаимозависимость).
min(взаимозависимость) ≡ min(вероятность ошибки при изменении части).
Yours truly, Serguey Zefirov (thesz NA mail TOCHKA ru)
Re[3]: Почему монады лучше lvalue (глобальных переменных).
Здравствуйте, Курилка, Вы писали:
G>>А вот что такое "named state" не очень понятно.
К>Дак в статью-то загляни: К>
К>...To do this, we add an abstract notion of time to the program. This abstract time is simply a sequence of values in time that has a single name. We call this sequence a named state.
К>
К>По сути дела это понятие "переменной".
... изменяемой. Короче, с чем боролись на то и...
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[4]: Почему монады лучше lvalue (глобальных переменных).
Здравствуйте, VladD2, Вы писали:
VD>Здравствуйте, Курилка, Вы писали:
G>>>А вот что такое "named state" не очень понятно.
К>>По сути дела это понятие "переменной".
VD>... изменяемой. Короче, с чем боролись на то и...
Вообще-то значение слова "переменный" подразумевает под собой изменения. Это уже программисты понапридумывали изменяемые/неизменяемые переменные (хотя лучше , возможно, было бы иметь другой термин).
Ну и кто боролся, если не секрет? Peter van Roy?
Re[5]: Почему монады лучше lvalue (глобальных переменных).
Здравствуйте, thesz, Вы писали:
T>Я с этим не согласен, поскольку это противоречие.
T>max(модульность) ≡ min(взаимозависимость).
Откуда берется тождество? Модульность, если не ошибаюсь, это скрытие деталей реализации. Но система может состоять из множества модулей, которые очень сильно связаны друг с другом на уровне интерфейсов.
SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[4]: Почему монады лучше lvalue (глобальных переменных).
Здравствуйте, eao197, Вы писали:
E>Здравствуйте, thesz, Вы писали:
T>>Я с этим не согласен, поскольку это противоречие.
T>>max(модульность) ≡ min(взаимозависимость).
E>Откуда берется тождество? Модульность, если не ошибаюсь, это скрытие деталей реализации. Но система может состоять из множества модулей, которые очень сильно связаны друг с другом на уровне интерфейсов.
Модульность, по-моему, степень независимости при разработке отдельных частей системы.
Если её считать, как простое число модулей (частей) системы, то она не даёт ничего нового при оценке стоимости разработки.
Yours truly, Serguey Zefirov (thesz NA mail TOCHKA ru)
Re[5]: Почему монады лучше lvalue (глобальных переменных).
Здравствуйте, thesz, Вы писали:
E>>Откуда берется тождество? Модульность, если не ошибаюсь, это скрытие деталей реализации. Но система может состоять из множества модулей, которые очень сильно связаны друг с другом на уровне интерфейсов.
T>Модульность, по-моему, степень независимости при разработке отдельных частей системы.
T>Если её считать, как простое число модулей (частей) системы, то она не даёт ничего нового при оценке стоимости разработки.
T>>Если её считать, как простое число модулей (частей) системы, то она не даёт ничего нового при оценке стоимости разработки.
E>Похоже, здесь разная интерпритация терминов.
E>Есть модульность (Modularity).
Modular programming is a software design technique that increases the extent to which software is composed from separate parts, called modules. Conceptually, modules represent a separation of concerns, and improve maintainability by enforcing logical boundaries between components.
E>Есть связанность (Coupling).
E>Ты, похоже, трактуешь модульность в смысле связности.
Трактовка википедии недалеко ушла от моей.
Yours truly, Serguey Zefirov (thesz NA mail TOCHKA ru)
Re[7]: Почему монады лучше lvalue (глобальных переменных).
Здравствуйте, thesz, Вы писали:
E>>Есть модульность (Modularity). T>
Modular programming is a software design technique that increases the extent to which software is composed from separate parts, called modules. Conceptually, modules represent a separation of concerns, and improve maintainability by enforcing logical boundaries between components.
E>>Есть связанность (Coupling).
E>>Ты, похоже, трактуешь модульность в смысле связности.
T>Трактовка википедии недалеко ушла от моей.
Модульность, по-моему, степень независимости при разработке отдельных частей системы.
Похоже, я многое в этой жизни пропустил, поскольку теперь "степень независимости" является синонимом "software design technique".
SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[6]: Почему монады лучше lvalue (глобальных переменных).
Здравствуйте, eao197, Вы писали:
E>Здравствуйте, thesz, Вы писали:
E>>>Откуда берется тождество? Модульность, если не ошибаюсь, это скрытие деталей реализации. Но система может состоять из множества модулей, которые очень сильно связаны друг с другом на уровне интерфейсов.
T>>Модульность, по-моему, степень независимости при разработке отдельных частей системы.
T>>Если её считать, как простое число модулей (частей) системы, то она не даёт ничего нового при оценке стоимости разработки.
E>Похоже, здесь разная интерпритация терминов.
E>Есть модульность (Modularity). E>Есть связанность (Coupling).
E>Ты, похоже, трактуешь модульность в смысле связности.
По-моему ты тут зачем-то противопоставляешь 2 очень взаимосвязных термина: модульность говорит о том, что прогамма "побита" на части, т.е. модули, так вот внутри этих модулей хорошая связность, а между ними она должна быть минимальной для реализации separation of concerns.
Правда, вот с Хаскелем ситуация выходит, что даже отдельные функции становятся модулями, если не рассматривать классы типов.
Re[7]: Почему монады лучше lvalue (глобальных переменных).
Здравствуйте, Курилка, Вы писали:
E>>Есть модульность (Modularity). E>>Есть связанность (Coupling).
E>>Ты, похоже, трактуешь модульность в смысле связности.
К>По-моему ты тут зачем-то противопоставляешь 2 очень взаимосвязных термина: модульность говорит о том, что прогамма "побита" на части, т.е. модули, так вот внутри этих модулей хорошая связность, а между ними она должна быть минимальной для реализации separation of concerns.
Еще раз: модульность -- это подход к разработке ПО, при котором система строится из модулей со строго определенными внешними интерфейсами, а детали модулей скрыты внутри и недоступны снаружи. Поэтому само понятие max(модульность) для меня выглядит странным. Надо полагать, что max(модульность) -- это "хороший дизайн", а это очень субъективно.
Связность как раз показывает степень взаимосвязи между компонентами системы. И как раз у связности можно определять min и max.
Но в таком случае не понятно, почему "хороший дизайн" эквивалентен минимальной связанности.
Ну и кроме того, когда речь заходит о "степени независимости", то значит разговор идет именно о "связности", а не о "модульности" (если брать за основу определения из Wikipedia).
К>Правда, вот с Хаскелем ситуация выходит, что даже отдельные функции становятся модулями, если не рассматривать классы типов.
Это проблемы Хаскеля.
SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[8]: Почему монады лучше lvalue (глобальных переменных).
Здравствуйте, eao197, Вы писали:
E>Здравствуйте, Курилка, Вы писали:
E>>>Есть модульность (Modularity). E>>>Есть связанность (Coupling).
E>>>Ты, похоже, трактуешь модульность в смысле связности.
К>>По-моему ты тут зачем-то противопоставляешь 2 очень взаимосвязных термина: модульность говорит о том, что прогамма "побита" на части, т.е. модули, так вот внутри этих модулей хорошая связность, а между ними она должна быть минимальной для реализации separation of concerns.
E>Еще раз: модульность -- это подход к разработке ПО, при котором система строится из модулей со строго определенными внешними интерфейсами, а детали модулей скрыты внутри и недоступны снаружи. Поэтому само понятие max(модульность) для меня выглядит странным. Надо полагать, что max(модульность) -- это "хороший дизайн", а это очень субъективно.
E>Связность как раз показывает степень взаимосвязи между компонентами системы. И как раз у связности можно определять min и max.
Тут в терминологии я, видимо, напутал, получается я имел в виду cohesion
Забавно, что оно вики переводится как связность, а coupling как связанность.
Re[9]: Почему монады лучше lvalue (глобальных переменных).