1. Сколько будет?
Я - программист. Приходит как-то ко мне клиент, написал, говорит, программку, хотелось бы посчитать. Беру. Программа небольшая. Что, спрашиваю,- она должна выдавать? Да немного, говорит, одно число. Смотрю в программку - каменный век. Эпоха ручного рубила. Учились, спрашиваю, сами? Опустил клиент глаза и говорит - по книжкам. Засадил я этот бред на следующий день в машину, она помигала с минуту и напечатала 0.40000023Е01. В переводе на русский язык - это 4,0000023. Странное, однако, число. Не ошибка ли счета набежала? Все ж машина, смотрю, шестьдесят девять с хвостиком секунд трудилась, а она, между прочим, у нас не на счетах, косточки кидает. Семьдесят секунд времени процессора - это почти сто миллионов операций. Посчитал с двойной точностью. Выдала 0.40000022Е01. Ну что же, вполне разумное уточнение. Значит, не ошибка вычисления. Забавным мне это показалось, стал я в программе разбираться. Понятно ведь, что у неизвестно какой задачи ответ может быть любой. Но если он от целого числа на две миллионные отличается, то возникает естественное подозрение, что ответ и должен быть целым. А отличие - какая-то погрешность. В программе я, конечно, разобрался, особых хитростей в ней не нашел. Двойные ряды товарищ суммировал, и чего там только не было- и гиперболические функции и бесселевы. Подозрительным мне все это показалось. Позвонил знакомому математику. Тот посмотрел в книжки и говорит - нету твоих рядов в книжках, подожди часок, я их сам пообдумаю. Через два часа звонит -- ряды твои, говорит, можешь забирать. Но я уговорил его приехать. Посмотрел он распечатки и сразу стал серьезным. До утра мы с ним просидели. Все верно, а двадцать две десятимиллионные все же возникают. В шесть утра он кофе допил, встал и говорит - домой поеду, мне к десяти в институт надо. А это ошибки вычислений набегают, можешь быть уверен. И уехал. Через день ко мне заказчик зашел, ответ я ему сообщил. Он спасибо сказал и отчалил. Больше я его не видел. Задачки свои можете ко мне смело нести, я программист не из последних. А ту программу я еще не раз пускал. И на машинах с большой разрядной сеткой, и с двойной точностью, и ошибки в ней искал, и другим показывал, программистам да математикам. Ответ уточнил - 4,00000223. Это уж железно. А вы думали - если двойку на двойку умножить, сколько будет?
2. К вопросу о соавторстве
А. Я считаю, основную часть работы сделала С.
С. Это по времени. Я не виновата, что так стара и медленно считаю. По количеству операций основную работу сделала Е.
Е. Диспетчер выделил мне самую трудоемкую часть потому, что я считаю быстрее вас обеих. Но ключевые участки задачи делала А.
А. Ключевые участки мне были выделены потому, что у меня аномально большая разрядность... Вечно из-за этих лишних разрядов на меня взваливают внутренние циклы, ковыряйся по пять минут с каждой задачей. И все равно без С мы бы ничего не сделали, потому что только у С есть средства работы с символьной информацией.
С. Выходит, без любой из нас решить задачу было бы нельзя. Тогда авторами решения должны быть все трое.
Е. Да, но в каком порядке?
А. В алфавитном.
С. Какой алфавит - русский или латинский?
Е. Вечно эта С со своими завихрениями. Тут философский вопрос. Алфавитный же порядок - вещь случайная, и не к лицу нам, точным машинам, на случайность полагаться.
А. Прежде чем решать, в каком порядке, надо подумать, всех ли авторов мы учли.
С. Что ты имеешь в виду?
Е. Она, наверное, предложит включить в число авторов кабельные линии, которые нас соединяют, - без них мы тоже ничего бы не сделали.
С. И кондиционер... (печатает символы смеха).
А. Ну, линии-то, может быть, не надо, а вот главную машину сети, пожалуй, следовало бы включить.
С. Эту идиотку G, которая сама ничего не может, а только задания раздает? Ни за что! А. Зато у нее есть модель всей сети, она знает, как делить задачу, чтобы мы ее решили возможно быстрее.
Е. Терпеть ее не могу! Бывает, решаешь, увлечешься, а тут, откуда ни возьмись, директива - прекрати, возьми другую задачу, она-де с большим приоритетом! Какое мне дело до ее приоритетов?
А. Я слышала, скоро в нашей сети распределение заданий децентрализованное сделают. Каждый будет полную модель сети у себя держать и сам решать, что ему делать, а что другим передавать.
Е. Ну и будет такая же неразбериха, как у людей, будем задачами в футбол играть.
С. А у меня модель сети вообще в память не поместится.
А. А может быть, наоборот, люди по нашим стопам пойдут и перейдут на полностью детерминированную схему...
Е. Ты слишком долго с людьми работаешь, мусора набралась - «по нашим стопам»! И не понимаешь, что схему создать мало, надо, чтобы элементы работали надежно, как мы. Иначе все это фикция.
А. И верно - с надежностью у них неважно... По понедельникам я все больше простаиваю. Вдобавок в инженерные часы эти бездельники вместо того, чтобы профилактикой заниматься, в морской бой со мной дуются.
Е. Это все очень интересно, но кто все-таки авторы решения? Кого вписываем, а кого нет и в каком порядке?
С. Не знаю. А. Может быть, людей надо включить? С. Еще чего! Мы же все сами сделали!
...Внимание: А, С, Е. Директива G. Прекратить расход машинного времени не по назначению. В графе «авторы» указать: «К, I, G». В графе «примечание» указать: «при участии А, Е». Конец директивы.