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

start [/forum/topic.php?fid=16&msg=35284704&tid=1345324]: |
0ms |
get settings: |
9ms |
get forum list: |
18ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
199ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
34ms |
get tp. blocked users: |
1ms |
| others: | 221ms |
| total: | 502ms |

| 0 / 0 |
