andrzejn: (Default)
Андрій Новосьолов ([personal profile] andrzejn) wrote2009-08-21 07:34 am
Entry tags:

Чем программа отличается от человека

Представим себе типичный алгоритм из тех, по которым работают программы.

Вы работаете клерком: берёте поступающие заявки из входящих, надписываете номер вашего отделения, кладёте в исходящие. По средам каждую вторую заявку откладываете в папку А. По пятницам каждую третью заявку откладываете в папку Б.

Если вы человек, то в начале рабочего дня вы смотрите на календарь и кладёте рядом с собой папку А или папку Б. Номер отделения вы знаете наизусть.

Если вы программа, то вы всегда держите под рукой обе папки и на каждой заявке смотрите в календарь. За номером отделения вы каждый раз быстро-быстро бегаете в настройки к табличке у входа. Если вы продвинутая программа, то номер отделения у вас закэширован на бумажке и лежит под стеклом на столе.

офф

[identity profile] richana.livejournal.com 2009-08-21 06:02 am (UTC)(link)
У тебя домашняя почта не поменялась? Которая волевская? Или ты в нее не заглядываешь? А то я сначала отправляла вопрос вопрос про ожидаемый Котькин День варенья, после поздравление - и как-то никакой реакции. Мне не так важен ответ на эти письма, как рабочесть контакта. Ы?

[identity profile] alex-mashin.livejournal.com 2009-08-21 06:33 am (UTC)(link)
В начале дня проверять день недели и присваивать folder&.

а как узнать что начало дня?

[identity profile] freedom_of_sea.livejournal.com 2009-08-21 07:22 am (UTC)(link)
человеку проще - он на ночь уходит. А как человек знает, что пора уходить? А он после каждой заявки смотрит на часы.

Программа конечно тоже могла бы не смотреть на часы, а поставить будильник на полночь. Но будильник, на самом деле, сам постоянно смотрит на часы.

[identity profile] gds.livejournal.com 2009-08-21 09:35 am (UTC)(link)
тоже задумывался о подобном -- для сортировки купюр по достоинству при наличии горизонтального пространства получается обычная bucket sort, а вот если есть только две руки, алгоритмы становятся более хитрыми и околоэвристическими.

[identity profile] gouriev.livejournal.com 2009-08-21 03:55 pm (UTC)(link)
У человека есть внешнее ОЗУ - стол, на котором выложены папки и выставлен календарь и часы,
и внутреннее ОЗУ, в котором у него номер отделения и день недели.
операции обращения к внутреннему ОЗУ, как правило, не фиксируются
внешним наблюдателем, да и внутренним тоже.

у программы нет разделения на внешнее и внутреннее ОЗУ.
с точки зрения внешнего наблюдателя, все ОЗУ - внешнее,
поэтому (слегка вооруженным глазом) заметно гораздо больше действий.

так что никакой разницы в действительности нет.
способ организации ОЗУ и информации в нем ИМХО
в нашем дискурсе несуществен

[identity profile] gouriev.livejournal.com 2009-08-21 04:03 pm (UTC)(link)
to be more strict,
во внутреннем ОЗУ человека хранится не день недели,
а вариант программы поведения, адаптированный для
данного дня недели. в человека довольно естественно
встроены "ленивые", или "обобщенные" вычисления.

нет никаких принципиальных преград сделать то же
с обычной программой. это не делается потому что
обычному программисту проще заставить комп выполнить
больше операций, чем разводить в программе такую
"заумь", да и риск ошибок меньше, а также - из
соображений безопасности - имеется аппаратный запрет
на модификацию кода программы во время ее исполнения,
и этот запрет обходится довольно-таки сложно.

бывают случаи, когда такая модификация абсолютно необходима, -
и обходятся запреты, и побеждается сложность.
в моей практике встречалось