Сапунов Павел : другие произведения.

Как Я Выбросил Минус

Самиздат: [Регистрация] [Найти] [Рейтинги] [Обсуждения] [Новинки] [Обзоры] [Помощь|Техвопросы]
Ссылки:


 Ваша оценка:


КАК Я ВЫБРОСИЛ МИНУС

  
   Сказка со счастливым концом
  
  
  
   Однажды, давным-давно, так давно, что это было даже не в прошлой жизни, а скорее в позапрошлой, я был королевским программистом. Кое-кто скажет, что у королей тогда, давно, не было ни компьютеров, ни программистов. И это правда : давно не было.
   Так вот, давным-давно, я был королевским программистом. Нет, не так : опять вру. Я был Королевским Программистом. Это значит, что я не просто сидел за компьютером, а сидел за компьютером по-королевски ( не по восемь часов в сутки, а по пять, плюс кондиционер ).
   Кстати, мало кто из нынешних программистов знает, почему на клавиатуре два "энтера". Да, да, мои дорогие : один из "энтеров" - это Королевский "Энтер", то есть "энтер", сделанный специально для указательного пальца Его Величества Короля. И этот "Энтер" запрещалось нажимать программистам под страхом наисуровейшего королевского наказания. Сами же короли, как правило, ничего кроме "Энтера" ( правая нижняя клавиша ) не нажимали. Иногда лишь, чтобы выразить своё несогласие, они нажимали левую верхнюю клавишу, и поэтому впоследствии её назвали "Эскэйп". Эту клавишу программистам тоже следует нажимать пореже.
   Так вот, однажды, давным-давно, сижу я по-королевски за компьютером : нажимаю разные клавиши, а иногда, чтобы доставить себе королевское удовольствие - клавиши "Энтер" и "Эскэйп" ( когда рядом - никого, то можно ).
   Вдруг, слышу - шаги по коридору. Не просто шаги, а Королевские Шаги. Я приготовился. Жду.
   Входит Король. А я сижу - весь в работе ( программистам разрешается сидеть даже в присутствии Его Высочества ) . Король ко мне подходит, чуть нагибается ( не подумайте, что кланяется ), и видит на моём мониторе фразу :
  
   Да здравствует Его Величество Король !
  
   - Что Вы ещё умеете ? ,- задаёт мне вопрос, зевая, Король.
   - А всё , Ваше Величество ! ,- браво отвечаю я. Дело в том, что так всегда следует отвечать королям, иначе они могут подумать, что вы слишком скромны, а короли скромность в своём королевстве не ценят : они любят героев, дорогих арабских скакунов, золото, алмазы и всякую иную роскошь.
   - Например ? ,- ласково зевнул вопросом довольный Король.
   Я набрал три строчки новой программы ( и это было моей роковой ошибкой : надо было набрать две ). Король нагнулся ( не подумайте, что наклонился ), прочитал, и ткнул Королевским Пальцем в третью строчку, прямо в монитор ( такое разрешается только королям и их шутам ), и зевнул раздражённо :
   - Что это такое ?
   - Это минус, Ваше Величество ! ,- от-рапортовал я.
   - Что такое "МИНУС" ? ,- не зевая спросил Король, не по-королевски серьёзно.
   Я понял, что это серьёзно : Король не знал операции вычитания. Если он не знал такой простой операции, значит всех, кто пытался объяснить ему её, казнили. Или разжаловали из Королевских Программистов в Королевские Администраторы. А я не хотел быть администратором : они тоже нажимали только "энтер" и "эскэйп".
   - Ваше Величество! ,- тут я упал на колени ,- Минус - это такой маленький, совершенно не достойный Вашего Королевского Внимания, математический знак, можно сказать значок-с. Этот мизерный, презренный, никому не нужный значок - всего лишь знак, обратный плюсу ,- и тут я страшно перепугался, что Король не знает и плюса ,- А плюс, это ведь очень просто : если я дам Вам десять монет, то у Вас в казне прибавится +10 монет.
   - Ну, давай ! ,- обрадованно зевнул Король.
   Пришлось отдать Его Величеству десять золотых монет. Его Величество был очень доволен.
   - А если плюс двадцать ? ,- вежливо зевнул Король, а затем вежливо принял от меня двадцать золотых монет.
   Я почти успокоился, но вдруг по лицу Короля пробежала тень:
   - А минус, значит, это когда наоборот ? Да как ты мог предположить, несчастный, что я, Король, буду отдавать кому-то мои деньги, золотые монеты с профилем Меня ? Если отдавать, то зачем тогда быть королём ?
   И хоть я и был уже на коленях, пришлось упасть на них же, но ещё ниже :
   - Ваше Величество! Минусы придумал не я! Минус - это изобретение бунтарей! Минус - это всего лишь тень плюса! Минусов не должно быть!
   - Правильно, в моём королевстве не должно быть никаких теней! ,- Король перестал зевать , и это было ужасно.
   - Ваше Величество, только прикажите, и я уничтожу все минусы! Я переделаю их на плюсы! Ни в одной Королевской Программе не будет ни одного минуса! Даю слово!
   - Плюс одно слово к тридцати золотым монетам! Нет, ты не похож ни на мошенника, ни на бунтаря. Хорошо, даю тебе три дня на борьбу с этими гадкими минусами, уж извини, больше дать не могу : ты сам говорил, что минусы мизерны и никчёмны. Пусть через три дня в наших Королевских Программах будут только плюсы - мы уверены, это положительно повлияет на нашу Королевскую Экономику. Сделай это, и ты будешь назначен Первым Королевским Программистом. Не сделаешь - станешь администратором.
   Я был страшно расстроен и морально подавлен. Ведь всем известно, что администратор супротив программиста, всё равно, что плотник супротив столяра.
  
   Итак, мне было дано настоящее Королевское Задание : за три дня уничтожить все минусы. Я был уверен, что если бы мне поручили за тридцать дней уничтожить всех крыс в королевстве, то и то я не успел бы. А ведь крыс гораздо меньше, чем минусов ! Правда, король соблаговолил дать мне в помощь трёх своих пажей. А вы знаете, кто такие эти самые пажи ? Нет, вы не знаете...
   Первый сказал, что необходимо срочно пересчитать все минусы, и ушел считать. Второй сказал, что надо посоветоваться со всемирно известными программистами, и тут же покинул пределы королевства. Третий высказал предположение, что необходимо проанализировать весь предыдущий опыт, что в свою очередь невозможно без внимательнейшего прочтения всех существующих программ, и тут же ушел читать, и тоже не вернулся. Я понял, что всё придётся делать самому. Ведь настоящий программист не должен ни пересчитывать, ни советоваться, ни читать чужие или свои программы, так как иначе не останется времени думать, решать и писать. И ещё: у плохого программиста не может быть помощников, а хорошему они не нужны.
  
   Итак, надо было действовать : сроку дали три дня. В первый день поставленная задача показалась мне слишком сложной, я весь день пытался найти подход к ней, но так ничего и не придумал. На второй день поставленная задача показалась мне слишком простой, и я весь день писал программы, ни одна из которых так и не решила поставленной проблемы. И лишь на третий день я решил эту королевскую задачу. Это произошло наверно благодаря тому, что лишь на третий день я посмотрел на задачу не как на очень сложную, и не как на очень простую , а как на просто задачу. А обычные задачи решаются на третий день. Обычно так бывает. Про это знают все программисты. А я тогда забыл...
  
  
  
   Когда на четвёртый день пришел Король, готовый возвысить или унизить меня, я гордо подал ему лист из королевской, очень красивой, позолоченной бумаги, на котором был напечатан тоже очень красивый, я считаю, текст :
  
  
   Program Without_Minus ;
   uses crt;
   const up9 : array [0..9] of byte=(9,8,7,6,5,4,3,2,1,0);
   {-------------------------------------------------------------}
   Function Up10( K:word; A:word ):word;
   var n,NN,kk,zz,La:word; As:string ii:integer;;
   BEGIN
   str(A,As); La:=length(As);
   if La<K then for ii:=1 to K-La do As:='0'+As;
   NN:=1; for kk:=K downto 1 do
   begin
   val(As[kk],zz,ii); n:=up9[zz];
   NN:=NN+round(n*exp((K-kk)*ln(10)));
   end; up10:=NN;
   END;
   {-------------------------------------------------------------}
   var N,A,B,Z,X:word; As:string;
   Begin clrscr; A:=2000; B:=1999;
   if B>A then begin X:=A;A:=B;B:=X; end;
   write(A,' minus ',B,' = ');
   str(A,As); N:=length(As);
   Z:=Up10(N,A); X:=Z+B; Z:=Up10(N,X);
   writeln(Z); readln;
   end.
  
  
   Я, конечно, мог бы объяснить вам, как работает эта программа - Но зачем ? Ведь я даже Его Величеству Королю ничего не объяснял...
  
   Его Величество Король в благодарность за то, что я избавил его от минусов, которые напугали его больше крыс, назначил меня Первым Королевским Программистом. Отныне мне разрешалось не только сидеть в присутствии Его Величества, но даже лежать и бегать, чем я вскоре и воспользовался : я убежал от этого короля к другому, к более умному и мудрому, как мне сначала показалось. Когда-нибудь я ещё расскажу об этом...
  
  
  
   Павел Сапунов
   2004 г.
   Опубликовано в сборнике "+7"
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
 Ваша оценка:

Связаться с программистом сайта.

Новые книги авторов СИ, вышедшие из печати:
О.Болдырева "Крадуш. Чужие души" М.Николаев "Вторжение на Землю"

Как попасть в этoт список

Кожевенное мастерство | Сайт "Художники" | Доска об'явлений "Книги"