Шарлатан 3 (СИ) - Номен Квинтус
И я для начала стал помогать «родному минместпрому», написав простенькую программку по оптимизации перевозок того же паркета. Ведь из-за того, что его просто вовремя на стройку не доставили, почти половину жилых домов в Горьком готовились сдать под заселение с задержкой до полугода после того, как само строительство закончилось. Понятно, что именно «для начала» я даже не собирался замахиваться на хорошо мне известную «транспортную задачу» в масштабах всей страны: все же и комп был не особо для таких целей пригодным, и просто собрать все нужные для решении я задачи данные не представлялось возможным — а вот в масштабах области задачка изначально выглядела решаемой. Хотя бы потому, что я точно знал у кого можно спросить, где в области эту несчастную березу рубят, где ее пилят и строгают и куда готовую паркетную доску собираются везти.
И я спросил, все узнал. Затем целая бригада в круглосуточном режиме полученные циферки набивала на перфолентах (перфораторов нужных у меня теперь уже четыре штуки было), я составлял таблицы (не один я, еще Ю Ю этим занималась, сказав, что такая работа для нее поможет ей «лучше меня контролировать») с описанием маршрутов, а так же писал дополнительные функции, учитывающие скорость производства ценных деревяшек и скорость их расхода, прочие «вспомогательные» данные готовил — и перед самым Новым годом программа была торжественно запущена. Ну да, только подготовка данных для нее полтора месяца заняла — а машина все успела рассчитать примерно за полторы минуты. И результат получился… очень странным.
Вообще-то сама по себе «транспортная задача» — проста и незатейлива, но если ее совсем немного расширить и считать не только затраты на перевозку чего-то из пункта А в пункт Б, а добавить туда еще «из одной трубы втекает, а из другой вытекает», то результат может получиться совсем неочевидным. Саму-то перевозку бухгалтера-расчетчики вообще на счетах давно уже просчитали и столпившиеся вокруг машины женщины были уверены, что машина лишь немного подправит (в худшем для них случае) ранее составленные «расписания» — но все оказалось совсем не так.
Я в процессе подготовки данных для программы тоже много нового узнал. Например, что паркетную доску только в области делают дубовую и березовую. А еще делают ее кленовую и лиственничную, еще из ясеня, вяза, вишни, бука и даже из сосны (хотя последнюю в области делать попробовали — и тут же перестали). И разные деревообрабатывающие фабрички делали этот паркет каждая из «своего» дерева (а чаще — из двух-трех «своих») — а использовать в одном месте доски из разных пород было просто нельзя потому что в домашних условиях они себя вели очень по-разному. Даже при укладке вели по-разному, например, береза и бук могли от повышенной влажности просто распухнуть и паркет при этом вспучивался, а вот лиственница по каким-то причинам не могла класться на чаще всего применяемый сейчас «полусинтетический» клей, которым доски к полу приклеивались. Но прекрасно ложились на менее популярный «каучуковый» клей, а вот дубовый паркет при использовании такого клея быстро и очень неравномерно темнел.
Еще — что меня сильно удивило — производительность рабочего-паркетчика довольно сильно зависела от материала паркета: на укладку паркета из ясеня рабочий тратил в полтора раза больше времени, а из лиственницы — в два раза больше, чем на укладку дубового или березового. И я все это как-то (все же очень приблизительно, так как просто памяти на все нужные таблицы не хватало) сумел посчитать — и оказалось, что по стройкам с железнодорожных станций паркет дешевле и быстрее всего развозить на грузовых «Векшах». И не потому что сами перевозки получаются дешевле, а потому, что так выходит больше всего бригад паркетчиков одновременно материалами обеспечить.
Результат расчета всех очень удивил, ведь можно было на стройку и целый грузовик паркета сразу завезти — но оказалось, что «программа все верно подсчитала»: завозить любые материалы «в запас» можно когда этого материала некоторый избыток, а когда он буквально с колес уходит, то такие «запасы» сильно снижают общую производительность труда. Зинаида Михайловна, внимательно изучив результаты работы программы, именно к такому выводу и пришла — а потом мне пришлось ей очень долго объяснять, что это не «железка» сама все так качественно считает, а программа, при составлении которой нужно все подобные мелочи все же учесть. А затем долго рассказывал, как правильно составлять техзадание на разработку программ, какие при ее написании могут возникнуть трудности и как эти трудности следует преодолевать…
— Я поняла: ты придумал очень большой и очень дорогой арифмометр, а результат расчета зависит от того, крутит ручку этого арифмометра дитё несмышленое или вообще дикая обезьяна. Но если ручку будет крутить специально подготовленный инженер…
— Причем, обратите внимание, ручку специально подготовленный будет крутить один раз — и он ее так раскрутит, что если потом в арифмометр этот пихать правильные цифры, то и результат всегда… почти всегда будет верным.
— А почему «почти»? Нам «почти» не годится.
— Я же вам только что объяснил: в программе практически всегда будут какие-то мелкие ошибки. И иногда программа из-за таких ошибок результат может дать тоже ошибочный, поэтому все же обезьян к машине подпускать я бы не порекомендовал: оператор, то есть бухгалтер, считающий свои задачи, должен все же представлять хотя бы примерно, какие результаты могут считаться верными, а какие нет. По счастью, в чисто расчетных задачах при ошибке результат получается откровенно бредовый: вон, тут парень из политеха насчитал, что элементы конструкции железнодорожного моста можно соединять заклепками диаметром в пять миллиметров — явный же бред, и он ошибку в программе тут же побежал искать и исправлять. Но считать, что в программе изначально ошибок нет и быть не может — неправильно, нужно, наоборот, считать, что в программе куча ошибок и заранее предусмотреть способы и средства обнаружения и исправления этих ошибок — а этому нужно долго и упорно учиться. Причем, сразу скажу, это не каждому дано — зато, когда программа полностью отлажена, ее запускать и получать правильные результаты и обезьяна сможет.
— То есть мало ты миллионы на арифмометр потратил, так еще и кучу миллионов хочешь потратить на подготовку правильных крутильщиков ручек. Но я тут прикинула… только на перевозке паркета на стройки мы до лета сэкономим с полмиллиона, а программу эту, ты говоришь, вы за неделю написали…
— И полтора месяца готовили данные для расчета.
— Верно, но ты же сам говорил, что данные для расчета можно будет сразу по мере их поступления готовить.
— Ну… да. И если мне к лету хотя бы сделают парочку новых устройств…
— Сколько?
— Вот за что я вас, Зинаида Михайловна, так люблю и обожаю, так это за решительность… и мудрость. Но в данном случае ответ будет простой: нисколько: ребята в политехе уже все необходимые средства получили. И даже почти все сделали, теперь просто ждут, когда в институте тонких пленок им сделают то, что для использования их машинки необходимо.
— А там в чем загвоздка? Нужно кому-то вразумляющего пинка дать?
— Нет, а вот с дюжину орденов приготовить стоит. Потому что если они хотя бы к концу следующего года сделают, что обещали — это будет настоящий прорыв в бухгалтерской науке! И не только, кстати, бухгалтерской…
На самом деле «прорыв» уже случился, правда в науке совсем другой: предложенная-то мною вычислительная машина имела изначально «очень открытую архитектуру», в которой каждая команда реализовывалась отдельным, совершенно независимым от остальных, аппаратным модулем. И одним из совершенно новых модулей, разработанным совсем молодыми ребятами-второкурсниками, стал блок, загружающий из памяти в указанный регистр необходимые для следующей операции данные. Не за четыре машинных такта, как ранее изготовленный блок, а за шесть или даже за семь — но новый модуль «умел» адресовать уже не шестьдесят четыре килобайта, а восемь мегабайт, и семь тактов на операцию тратилось если нужные байты размещались на смежных «страницах» памяти, а не на одной. И вставили этот модуль уже в новую, изготовленную в начале декабря, машину — а в неё уже воткнули не восемь, конечно, мегабайт, а всего двести пятьдесят шесть килобайт, но воткнули так мало просто потому что больше готовых матриц памяти не было. Но и такая память позволяла довольно «размашисто» программы составлять — просто пока еще большие программы неоткуда было в машину запихивать. Пока неоткуда — но ведь в Дзержинске «тонкопленочники» героически трудились над новыми достижениями отечественной науки! И стимул теперь у них был чрезвычайно мощный…