Однажды, давным-давно, так давно, что это было даже не в прошлой жизни, а скорее в позапрошлой, я был королевским программистом. Кое-кто скажет, что у королей тогда, давно, не было ни компьютеров, ни программистов. И это правда : давно не было.
Так вот, давным-давно, я был королевским программистом. Нет, не так : опять вру. Я был Королевским Программистом. Это значит, что я не просто сидел за компьютером, а сидел за компьютером по-королевски ( не по восемь часов в сутки, а по пять, плюс кондиционер ).
Кстати, мало кто из нынешних программистов знает, почему на клавиатуре два "энтера". Да, да, мои дорогие : один из "энтеров" - это Королевский "Энтер", то есть "энтер", сделанный специально для указательного пальца Его Величества Короля. И этот "Энтер" запрещалось нажимать программистам под страхом наисуровейшего королевского наказания. Сами же короли, как правило, ничего кроме "Энтера" ( правая нижняя клавиша ) не нажимали. Иногда лишь, чтобы выразить своё несогласие, они нажимали левую верхнюю клавишу, и поэтому впоследствии её назвали "Эскэйп". Эту клавишу программистам тоже следует нажимать пореже.
Так вот, однажды, давным-давно, сижу я по-королевски за компьютером : нажимаю разные клавиши, а иногда, чтобы доставить себе королевское удовольствие - клавиши "Энтер" и "Эскэйп" ( когда рядом - никого, то можно ).
Вдруг, слышу - шаги по коридору. Не просто шаги, а Королевские Шаги. Я приготовился. Жду.
Входит Король. А я сижу - весь в работе ( программистам разрешается сидеть даже в присутствии Его Высочества ) . Король ко мне подходит, чуть нагибается ( не подумайте, что кланяется ), и видит на моём мониторе фразу :
Да здравствует Его Величество Король !
- Что Вы ещё умеете ? ,- задаёт мне вопрос, зевая, Король.
- А всё , Ваше Величество ! ,- браво отвечаю я. Дело в том, что так всегда следует отвечать королям, иначе они могут подумать, что вы слишком скромны, а короли скромность в своём королевстве не ценят : они любят героев, дорогих арабских скакунов, золото, алмазы и всякую иную роскошь.
- Например ? ,- ласково зевнул вопросом довольный Король.
Я набрал три строчки новой программы ( и это было моей роковой ошибкой : надо было набрать две ). Король нагнулся ( не подумайте, что наклонился ), прочитал, и ткнул Королевским Пальцем в третью строчку, прямо в монитор ( такое разрешается только королям и их шутам ), и зевнул раздражённо :
- Что это такое ?
- Это минус, Ваше Величество ! ,- от-рапортовал я.
- Что такое "МИНУС" ? ,- не зевая спросил Король, не по-королевски серьёзно.
Я понял, что это серьёзно : Король не знал операции вычитания. Если он не знал такой простой операции, значит всех, кто пытался объяснить ему её, казнили. Или разжаловали из Королевских Программистов в Королевские Администраторы. А я не хотел быть администратором : они тоже нажимали только "энтер" и "эскэйп".
- Ваше Величество! ,- тут я упал на колени ,- Минус - это такой маленький, совершенно не достойный Вашего Королевского Внимания, математический знак, можно сказать значок-с. Этот мизерный, презренный, никому не нужный значок - всего лишь знак, обратный плюсу ,- и тут я страшно перепугался, что Король не знает и плюса ,- А плюс, это ведь очень просто : если я дам Вам десять монет, то у Вас в казне прибавится +10 монет.
- Ну, давай ! ,- обрадованно зевнул Король.
Пришлось отдать Его Величеству десять золотых монет. Его Величество был очень доволен.
- А если плюс двадцать ? ,- вежливо зевнул Король, а затем вежливо принял от меня двадцать золотых монет.
Я почти успокоился, но вдруг по лицу Короля пробежала тень:
- А минус, значит, это когда наоборот ? Да как ты мог предположить, несчастный, что я, Король, буду отдавать кому-то мои деньги, золотые монеты с профилем Меня ? Если отдавать, то зачем тогда быть королём ?
И хоть я и был уже на коленях, пришлось упасть на них же, но ещё ниже :
- Ваше Величество! Минусы придумал не я! Минус - это изобретение бунтарей! Минус - это всего лишь тень плюса! Минусов не должно быть!
- Правильно, в моём королевстве не должно быть никаких теней! ,- Король перестал зевать , и это было ужасно.
- Ваше Величество, только прикажите, и я уничтожу все минусы! Я переделаю их на плюсы! Ни в одной Королевской Программе не будет ни одного минуса! Даю слово!
- Плюс одно слово к тридцати золотым монетам! Нет, ты не похож ни на мошенника, ни на бунтаря. Хорошо, даю тебе три дня на борьбу с этими гадкими минусами, уж извини, больше дать не могу : ты сам говорил, что минусы мизерны и никчёмны. Пусть через три дня в наших Королевских Программах будут только плюсы - мы уверены, это положительно повлияет на нашу Королевскую Экономику. Сделай это, и ты будешь назначен Первым Королевским Программистом. Не сделаешь - станешь администратором.
Я был страшно расстроен и морально подавлен. Ведь всем известно, что администратор супротив программиста, всё равно, что плотник супротив столяра.
Итак, мне было дано настоящее Королевское Задание : за три дня уничтожить все минусы. Я был уверен, что если бы мне поручили за тридцать дней уничтожить всех крыс в королевстве, то и то я не успел бы. А ведь крыс гораздо меньше, чем минусов ! Правда, король соблаговолил дать мне в помощь трёх своих пажей. А вы знаете, кто такие эти самые пажи ? Нет, вы не знаете...
Первый сказал, что необходимо срочно пересчитать все минусы, и ушел считать. Второй сказал, что надо посоветоваться со всемирно известными программистами, и тут же покинул пределы королевства. Третий высказал предположение, что необходимо проанализировать весь предыдущий опыт, что в свою очередь невозможно без внимательнейшего прочтения всех существующих программ, и тут же ушел читать, и тоже не вернулся. Я понял, что всё придётся делать самому. Ведь настоящий программист не должен ни пересчитывать, ни советоваться, ни читать чужие или свои программы, так как иначе не останется времени думать, решать и писать. И ещё: у плохого программиста не может быть помощников, а хорошему они не нужны.
Итак, надо было действовать : сроку дали три дня. В первый день поставленная задача показалась мне слишком сложной, я весь день пытался найти подход к ней, но так ничего и не придумал. На второй день поставленная задача показалась мне слишком простой, и я весь день писал программы, ни одна из которых так и не решила поставленной проблемы. И лишь на третий день я решил эту королевскую задачу. Это произошло наверно благодаря тому, что лишь на третий день я посмотрел на задачу не как на очень сложную, и не как на очень простую , а как на просто задачу. А обычные задачи решаются на третий день. Обычно так бывает. Про это знают все программисты. А я тогда забыл...
Когда на четвёртый день пришел Король, готовый возвысить или унизить меня, я гордо подал ему лист из королевской, очень красивой, позолоченной бумаги, на котором был напечатан тоже очень красивый, я считаю, текст :
Program Without_Minus ;
uses crt;
const up9 : array [0..9] of byte=(9,8,7,6,5,4,3,2,1,0);
Я, конечно, мог бы объяснить вам, как работает эта программа - Но зачем ? Ведь я даже Его Величеству Королю ничего не объяснял...
Его Величество Король в благодарность за то, что я избавил его от минусов, которые напугали его больше крыс, назначил меня Первым Королевским Программистом. Отныне мне разрешалось не только сидеть в присутствии Его Величества, но даже лежать и бегать, чем я вскоре и воспользовался : я убежал от этого короля к другому, к более умному и мудрому, как мне сначала показалось. Когда-нибудь я ещё расскажу об этом...