Почему монады лучше lvalue (глобальных переменных).
От: thesz Россия http://thesz.livejournal.com
Дата: 25.06.09 14:55
Оценка: 1 (1)

<b>A component without named state, once proved correct, always stays correct</b>. Correctness is not so simple to maintain for a component with named state. A good rule is that named state should never be invisible: there should always be some way to access it from the outside.


Если считать это верным, то напрашиваются следующие выводы:
— Объекты удовлетворяли бы этому условию, если бы не могли дать доступ к частям внутреннего состояния. Даже передача сообщений не спасает, умолчание не то. Поэтому объекты этому условию скорее не удовлетворяют.
— Монады состояния скорее удовлетворяют этому условию, чем наоборот, поскольку состояние (в большинстве случаев) может быть доступно только на выходе.
— Изменяемые переменные не удовлетворяют условию.
— Подход Эрланга — я могу передать значение части состояния куда-либо, но извне оно не видно, — скорее удовлетворяет условию, чем наоборот.
Yours truly, Serguey Zefirov (thesz NA mail TOCHKA ru)
Re: Почему монады лучше lvalue (глобальных переменных).
От: gandjustas Россия http://blog.gandjustas.ru/
Дата: 25.06.09 15:19
Оценка:
Здравствуйте, thesz, Вы писали:

T>

<b>A component without named state, once proved correct, always stays correct</b>. Correctness is not so simple to maintain for a component with named state. A good rule is that named state should never be invisible: there should always be some way to access it from the outside.


Это означает что stateless компоненты рулят, это вроде и так известно.

А вот что такое "named state" не очень понятно.
Re[2]: Почему монады лучше lvalue (глобальных переменных).
От: Курилка Россия http://kirya.narod.ru/
Дата: 25.06.09 18:45
Оценка:
Здравствуйте, 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 Россия http://blog.gandjustas.ru/
Дата: 25.06.09 18:53
Оценка:
Здравствуйте, Курилка, Вы писали:

К>Здравствуйте, 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 (глобальных переменных).
От: Курилка Россия http://kirya.narod.ru/
Дата: 25.06.09 19:28
Оценка:
Здравствуйте, gandjustas, Вы писали:

G>Здравствуйте, Курилка, Вы писали:


[cut]

К>>По сути дела это понятие "переменной".


G>Мда... порвало мозг окончательно.


Чем тут рвать-то? Всё предельно просто
Re[2]: Почему монады лучше lvalue (глобальных переменных).
От: thesz Россия http://thesz.livejournal.com
Дата: 25.06.09 19:52
Оценка:
Здравствуйте, gandjustas, Вы писали:

G>Здравствуйте, thesz, Вы писали:


T>>

<b>A component without named state, once proved correct, always stays correct</b>. Correctness is not so simple to maintain for a component with named state. A good rule is that named state should never be invisible: there should always be some way to access it from the outside.

G>Это означает что stateless компоненты рулят, это вроде и так известно.

Не stateless, а с неизменным состоянием.

G>А вот что такое "named state" не очень понятно.


Это когда у него есть identity. Указатель на него, короче.
Yours truly, Serguey Zefirov (thesz NA mail TOCHKA ru)
Re: Почему монады лучше lvalue (глобальных переменных).
От: jazzer Россия Skype: enerjazzer
Дата: 26.06.09 02:49
Оценка: 1 (1)
Здравствуйте, thesz, Вы писали:

T>

<b>A component without named state, once proved correct, always stays correct</b>. Correctness is not so simple to maintain for a component with named state. A good rule is that named state should never be invisible: there should always be some way to access it from the outside.


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.

jazzer (Skype: enerjazzer) Ночная тема для RSDN
Автор: jazzer
Дата: 26.11.09

You will always get what you always got
  If you always do  what you always did
Re[2]: Почему монады лучше lvalue (глобальных переменных).
От: thesz Россия http://thesz.livejournal.com
Дата: 26.06.09 10:14
Оценка:
Здравствуйте, jazzer, Вы писали:

J>Здравствуйте, thesz, Вы писали:


T>>

<b>A component without named state, once proved correct, always stays correct</b>. Correctness is not so simple to maintain for a component with named state. A good rule is that named state should never be invisible: there should always be some way to access it from the outside.


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 (глобальных переменных).
От: VladD2 Российская Империя www.nemerle.org
Дата: 29.06.09 15:24
Оценка:
Здравствуйте, Курилка, Вы писали:

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 (глобальных переменных).
От: Курилка Россия http://kirya.narod.ru/
Дата: 29.06.09 16:34
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Здравствуйте, Курилка, Вы писали:


G>>>А вот что такое "named state" не очень понятно.


К>>По сути дела это понятие "переменной".


VD>... изменяемой. Короче, с чем боролись на то и...


Вообще-то значение слова "переменный" подразумевает под собой изменения. Это уже программисты понапридумывали изменяемые/неизменяемые переменные (хотя лучше , возможно, было бы иметь другой термин).
Ну и кто боролся, если не секрет? Peter van Roy?
Re[5]: Почему монады лучше lvalue (глобальных переменных).
От: VladD2 Российская Империя www.nemerle.org
Дата: 29.06.09 16:45
Оценка:
Здравствуйте, Курилка, Вы писали:

К>Ну и кто боролся, если не секрет? Peter van Roy?


Ну, таких хватает. Тот же thesz постоянно борется.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[3]: Почему монады лучше lvalue (глобальных переменных).
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 30.06.09 13:29
Оценка:
Здравствуйте, thesz, Вы писали:

T>Я с этим не согласен, поскольку это противоречие.


T>max(модульность) ≡ min(взаимозависимость).


Откуда берется тождество? Модульность, если не ошибаюсь, это скрытие деталей реализации. Но система может состоять из множества модулей, которые очень сильно связаны друг с другом на уровне интерфейсов.


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[4]: Почему монады лучше lvalue (глобальных переменных).
От: thesz Россия http://thesz.livejournal.com
Дата: 30.06.09 14:39
Оценка:
Здравствуйте, eao197, Вы писали:

E>Здравствуйте, thesz, Вы писали:


T>>Я с этим не согласен, поскольку это противоречие.


T>>max(модульность) ≡ min(взаимозависимость).


E>Откуда берется тождество? Модульность, если не ошибаюсь, это скрытие деталей реализации. Но система может состоять из множества модулей, которые очень сильно связаны друг с другом на уровне интерфейсов.


Модульность, по-моему, степень независимости при разработке отдельных частей системы.

Если её считать, как простое число модулей (частей) системы, то она не даёт ничего нового при оценке стоимости разработки.
Yours truly, Serguey Zefirov (thesz NA mail TOCHKA ru)
Re[5]: Почему монады лучше lvalue (глобальных переменных).
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 30.06.09 15:16
Оценка:
Здравствуйте, thesz, Вы писали:

E>>Откуда берется тождество? Модульность, если не ошибаюсь, это скрытие деталей реализации. Но система может состоять из множества модулей, которые очень сильно связаны друг с другом на уровне интерфейсов.


T>Модульность, по-моему, степень независимости при разработке отдельных частей системы.


T>Если её считать, как простое число модулей (частей) системы, то она не даёт ничего нового при оценке стоимости разработки.


Похоже, здесь разная интерпритация терминов.

Есть модульность (Modularity).
Есть связанность (Coupling).

Ты, похоже, трактуешь модульность в смысле связности.


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[6]: Почему монады лучше lvalue (глобальных переменных).
От: thesz Россия http://thesz.livejournal.com
Дата: 30.06.09 18:47
Оценка:
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 (глобальных переменных).
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 30.06.09 19:37
Оценка:
Здравствуйте, 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 (глобальных переменных).
От: Курилка Россия http://kirya.narod.ru/
Дата: 30.06.09 19:45
Оценка:
Здравствуйте, eao197, Вы писали:

E>Здравствуйте, thesz, Вы писали:


E>>>Откуда берется тождество? Модульность, если не ошибаюсь, это скрытие деталей реализации. Но система может состоять из множества модулей, которые очень сильно связаны друг с другом на уровне интерфейсов.


T>>Модульность, по-моему, степень независимости при разработке отдельных частей системы.


T>>Если её считать, как простое число модулей (частей) системы, то она не даёт ничего нового при оценке стоимости разработки.


E>Похоже, здесь разная интерпритация терминов.


E>Есть модульность (Modularity).

E>Есть связанность (Coupling).

E>Ты, похоже, трактуешь модульность в смысле связности.


По-моему ты тут зачем-то противопоставляешь 2 очень взаимосвязных термина: модульность говорит о том, что прогамма "побита" на части, т.е. модули, так вот внутри этих модулей хорошая связность, а между ними она должна быть минимальной для реализации separation of concerns.
Правда, вот с Хаскелем ситуация выходит, что даже отдельные функции становятся модулями, если не рассматривать классы типов.
Re[7]: Почему монады лучше lvalue (глобальных переменных).
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 30.06.09 21:51
Оценка:
Здравствуйте, Курилка, Вы писали:

E>>Есть модульность (Modularity).

E>>Есть связанность (Coupling).

E>>Ты, похоже, трактуешь модульность в смысле связности.


К>По-моему ты тут зачем-то противопоставляешь 2 очень взаимосвязных термина: модульность говорит о том, что прогамма "побита" на части, т.е. модули, так вот внутри этих модулей хорошая связность, а между ними она должна быть минимальной для реализации separation of concerns.


Еще раз: модульность -- это подход к разработке ПО, при котором система строится из модулей со строго определенными внешними интерфейсами, а детали модулей скрыты внутри и недоступны снаружи. Поэтому само понятие max(модульность) для меня выглядит странным. Надо полагать, что max(модульность) -- это "хороший дизайн", а это очень субъективно.

Связность как раз показывает степень взаимосвязи между компонентами системы. И как раз у связности можно определять min и max.

Но в таком случае не понятно, почему "хороший дизайн" эквивалентен минимальной связанности.

Ну и кроме того, когда речь заходит о "степени независимости", то значит разговор идет именно о "связности", а не о "модульности" (если брать за основу определения из Wikipedia).

К>Правда, вот с Хаскелем ситуация выходит, что даже отдельные функции становятся модулями, если не рассматривать классы типов.


Это проблемы Хаскеля.


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[8]: Почему монады лучше lvalue (глобальных переменных).
От: Курилка Россия http://kirya.narod.ru/
Дата: 01.07.09 04:17
Оценка:
Здравствуйте, eao197, Вы писали:

E>Здравствуйте, Курилка, Вы писали:


E>>>Есть модульность (Modularity).

E>>>Есть связанность (Coupling).

E>>>Ты, похоже, трактуешь модульность в смысле связности.


К>>По-моему ты тут зачем-то противопоставляешь 2 очень взаимосвязных термина: модульность говорит о том, что прогамма "побита" на части, т.е. модули, так вот внутри этих модулей хорошая связность, а между ними она должна быть минимальной для реализации separation of concerns.


E>Еще раз: модульность -- это подход к разработке ПО, при котором система строится из модулей со строго определенными внешними интерфейсами, а детали модулей скрыты внутри и недоступны снаружи. Поэтому само понятие max(модульность) для меня выглядит странным. Надо полагать, что max(модульность) -- это "хороший дизайн", а это очень субъективно.


E>Связность как раз показывает степень взаимосвязи между компонентами системы. И как раз у связности можно определять min и max.


Тут в терминологии я, видимо, напутал, получается я имел в виду cohesion
Забавно, что оно вики переводится как связность, а coupling как связанность.
Re[9]: Почему монады лучше lvalue (глобальных переменных).
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 01.07.09 05:35
Оценка:
Здравствуйте, Курилка, Вы писали:

К>Тут в терминологии я, видимо, напутал, получается я имел в виду cohesion


Вот и мне кажется, что здесь сначала нужно было бы определиться с терминами.


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.