|
|
|
Побочные эффекты и щапись в базу данных
|
|||
|---|---|---|---|
|
#18+
Функциональное программирование — это прежде всего отсутствие побочных эффектов, то есть когда "суперпозиция" функций дает один и тот же результат независимо от последовательности выполнения. Гарантией отсутствия побочного эффекта является невозможность функцией повлиять на внешние данные. Функция работает только со своими аргументами. Так пишется в книжках по функциональному программированию. Тогда как быть с записью и чтение в/из базы данных? Данные базы данных — это и есть внешние данные. И если одан функция помимо того что делает что то с аргументами, но еще и читает кое какие данные из базы данных, а другая, помимо того что тоже что то делает с аргументами — пишет что то в базу данных, то это и будет давать те самые побочные эффекты. Конечно смысла в этом никакого, результат непредсказуем, но, подключая модули к языкам типа Python или OCAML можно однако отклониться от генерального курса и опять попасть в пучину императивного стиля. Я к тому что — тут опять человеческий фактор влазит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.04.2008, 04:40 |
|
||
|
Побочные эффекты и щапись в базу данных
|
|||
|---|---|---|---|
|
#18+
Вот например, хотя и не совсем корректное суждение по поводу избегания побочных эффетов в ФЯ: авторИсключение побочных эффектов После всей проделанной работы по избавлению от совершенно осмысленных конструкций и замене их на невразумительные вложенные выражения, возникает естественный вопрос - "Зачем?!". Перечитывая мои описания характеристик FP, мы можем видеть, что все они достигнуты в Python. Но важнейшая (и, скорее всего, в наибольшей степени реально используемая) характеристика - исключение побочных эффектов или, по крайней мере, ограничение их применения специальными областями наподобие монад. Огромный процент программных ошибок и главная проблема, требующая применения отладчиков, случается из-за того, что переменные получают неверные значения в процессе выполнения программы. Функциональное программирование обходит эту проблему, просто вовсе не присваивая значения переменным. Однако, опять же, запись в базу данных - это и есть по сути присваивание переменных. А если так, то вслед за этим возможны и побочные эффекты. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.04.2008, 04:59 |
|
||
|
|

start [/forum/topic.php?fid=16&msg=35284707&tid=1345324]: |
0ms |
get settings: |
11ms |
get forum list: |
17ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
178ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
38ms |
get tp. blocked users: |
2ms |
| others: | 245ms |
| total: | 512ms |

| 0 / 0 |
