Удел Могултая (/cgi-bin/wirade/YaBB.pl)
Разное >> Юмор >> Системно-программистский глюк||Miracles
(Message started by: Emigrant на 11/19/04 в 23:10:49)

Заголовок: Системно-программистский глюк||Miracles
Прислано пользователем Emigrant на 11/19/04 в 23:10:49
Как открыл наш великий соотечественник, "сколько бы где в одном месте ни убавилось, столько же прибавится в другом" (или как-то похоже). С другой стороны, всякому программисту, слушавшему когда-либо курс по операционным системам, известно, что для обеспечения этого свойства в "виртуальном мире" требуется потратить немалые усилия на так называемую синхронизацию одновременно выполняемых процессов. Пока один процесс читает некоторую переменную, выражающую количество объектов, и что-то с ней делает -- скажем, отнимает единицу и перекладывает ее в другой карман -- другой процесс может делать то же самое, прочитав ту же самую переменную до того, как ее уменьшенное значение будет записано обратно в переменную первым процессом. В результате общий счет объектов увеличится на единицу, назло Ломоносову-Лавуазье. Во избежание этого эффекта (подумаем, например, про банкоматы) употребляются всякие locks, семафоры, мониторы и т.д., заставляющие  один процесс ждать, пока другой полностью закончит свои операции.

Это присказка, а вот и сказка. Недавно мне пришлось отлаживать именно такую проблему, в результате которой "вещи" пропадали в никуда и появлялись ниоткуда, умножаясь. И тут мне стало понятно, как проще всего осуществить Чудо об Умножении Хлебов ("И ели все и насытились; и набрали оставшихся кусков семь корзин полных"). Для этого надо всего лишь локально нарушить синхронизацию мира! Я думаю, что при тщательной проверке выяснилось бы, что умножались (или исчезали непонятно куда) и другие предметы, с которыми люди в том момент что-то делали. Это классический hack, известный также под названием  time-to-check-to-time-to-use (TOCTTOU), т.е. между проверкой условия и собственно действием вклинивается другое действие (несколько нечеткое описание, ну да ладно).

Geeky revelations :-)


Заголовок: Re: Системно-программистский глюк||Mirac
Прислано пользователем Mithrilian на 11/20/04 в 00:42:16
Т.е. по-твоему, Он - программист? А Христос - Сын Программиста? Ой.  8)  Тогда понятно, про кого анекдот "Папа, а солнце на востоке всегда встает и на западе всегда заходит?" - "Проверял - работает?" - "Проверял." - "Только ничего не трогай, сынуля, ничего не меняй!!!"

Заголовок: Re: Системно-программистский глюк||Mirac
Прислано пользователем Antrekot на 11/20/04 в 02:51:33
Ну конечно делали - делили же.  Вот куски в процессе деления и размножались.  

Высокий класс...

С уважением,
Антрекот

Заголовок: Re: Системно-программистский глюк||Mirac
Прислано пользователем R2R на 11/20/04 в 03:19:47
В ADnD так магические и прочие ценные предметы у партии умножаются. "Один записал, другой не вычеркнул".  ::)

Заголовок: Re: Системно-программистский глюк||Mirac
Прислано пользователем Antrekot на 11/20/04 в 03:26:14
Так программирование оно вообще, по существу, магия и есть - целевое изменение мира посредством правильно организованного текста.

С уважением,
Антрекот

Заголовок: Re: Системно-программистский глюк||Mirac
Прислано пользователем Emigrant на 11/20/04 в 05:42:49

on 11/20/04 в 00:42:16, Mithrilian wrote:
Т.е. по-твоему, Он - программист?


Конечно, среди прочего :-) -- "Гончар,  Кузнец,  Ткач,  Плотник,
Гефест, Гу, Ильмаринен, Хнум, Вишвакарман, Птах, Яхве, ,..." и далее по тексту :-)


Quote:
А Христос - Сын Программиста? Ой.  8)  Тогда понятно, про кого анекдот "Папа, а солнце на востоке всегда встает и на западе всегда заходит?" - "Проверял - работает?" - "Проверял." - "Только ничего не трогай, сынуля, ничего не меняй!!!"


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

С другой стороны, как раз это чудо отвечает хакерскому характеру: такой tour-de-force, с малым вмешательством в работающий механизм, приносящим неожиданные и полезные результаты. Ни один хакер перед таким не устоит.


Quote:
Так программирование оно вообще, по существу, магия и есть - целевое изменение мира посредством правильно организованного текста.


Right on! Exactly so.


Заголовок: Re: Системно-программистский глюк||Mirac
Прислано пользователем Antrekot на 11/20/04 в 06:30:45

Quote:
Right on! Exactly so.

Я своих студентов по мифологии регулярно этим обстоятельством дразню.

С уважением,
Антрекот

Заголовок: Re: Системно-программистский глюк||Mirac
Прислано пользователем Emigrant на 11/20/04 в 07:47:03
It gets better :-). Программирование - это ведь не что иное, как искусство описания сложных поведений. Это не просто текст, это текст, производящий текст :-)

P.S.: Есть такая хакерская поговорка (не понимаю, как я мог не вспомнить о ней вчера): I'd rather write programs that write programs than write programs.  Именно так дело и обстоит :-)
                                 






Удел Могултая
YaBB © 2000-2001,
Xnull. All Rights Reserved.