скачать книгу бесплатно
– Это еще какие приключения? – насторожился Борис.
– Помнишь моего племянника Алексея?
– Это который в университете информатику преподает?
– Да преподает. Теперь он Доцент, кандидат наук, зав кафедры Информационных Технологий. Так вот, когда он еще не был кандидатом и доцентом, я ему показал свою Эволюцию. Ему она очень понравилась, и он попросил исходные тексты для изучения. Ну я конечно-же дал.
По выражению лица Бориса Сергей понял, что эта информация не очень ему нравится, но продолжил.
– Через некоторое время я случайно узнал, что Алексей защитил кандидатскую. На очередном праздничном сходняке родственников начал к нему приставать мол расскажи тему, на которую защитился, а он ни в какую. Глаза прячет и с темы сваливает. А мне же интересно, я ведь его азам программирования учил. Полез дома в интернет и нашел его диссертацию. И знаешь как его работа называется? – Сергей задал риторический вопрос и сам же на него ответил – Эволюционное моделирование по теории Дарвина для построения интеллектуальных систем.
– Так что, у тебя исходников уже нет, а они есть у племянника и он по ним диссертации пишет?
– Не думаю, что сейчас ему мои исходники нужны. Защитился, цели своей достиг и забыл. Я ему потом таких п… выписал. Не мог честно прийти к дяде и попросить использовать программку? Неужели думал, что я ему откажу? Я бы еще помог текст статьи написать, племянник же, родная кровь.
– Да, интересная история, – произнес Борис – надеюсь, что этот алгоритм больше никто не обнаружит.
Монотонный гул самолета сморил Сергея. Очнулся уже при посадке. Сергей никогда не был в Швейцарии и не думал, что когда-нибудь сюда попадет, поэтому с интересом рассматривал окрестности Женевы. Вот миновали легендарное Женевское озеро, проскочили центр города и опять углубились в пригородную зону. Справа мелькнуло всемирно известное здание "Глобус науки и инноваций" и Сергей догадался, что почти приехали. И действительно автомобиль свернул в тихую улочку, открылись зеленые ворота и они оказались во дворе трехэтажного здания. Зеленый аккуратный газон и несколько дополнительных хозяйственных построек ничем не намекали, что это центр для исследования чего-либо. Скорее частная гостиница.
Выгрузились, и разминая затекшие ноги, Сергей последовал за Борисом в дом, на пороге которого стоял и улыбался крупный полноватый парень.
– Вот знакомитесь, это Родион, твое техническое обеспечение, – представил Борис – а я сейчас покажу вам ваше хозяйство и уеду на доклад к начальству.
– На первом этаже кухня, столовая, сауна и бассейн. Это зона отдыха, а работать вы будете на втором этаже.
Борис поднялся по деревянной лестнице и остальные за ним.
– Ну что здесь есть, тебе Родик лучше меня объяснит. А выше на следующем этаже несколько номеров, выбирай себе любой свободный и селись. Короче знакомьтесь, отдыхайте, а завтра с утра начнем ударно трудиться.
Сергей с одобрением заметил на втором этаже солидный кофейный аппарат и несколько кожаных диванов, кроме того был большой летний балкон с плетенными креслами под навесами от солнца. Все остальное не вызывало эмоций: офисные перегородки, удобные кресла на колесах и рабочие места с несколькими экранами мониторов на каждом.
Борис сел в автомобиль, который тихо зашуршал колесами по гальке, а Сергей пошел искать место для будущего ночлега. Номер выбрал с хорошим видом на лужайку с полем для гольфа и пошел принимать душ.
Шикарно даже слишком – подумал Сергей – обстановка номера и шикарная ванна к ударной работе не располагали. Хотелось плюнуть на все и ничего не делать. Валяться в шезлонге с бутылкой пива и ни о чем не думать.
После водных процедур спустился на первый этаж и встретил Родиона за столом в небольшой уютной столовой. Незаметная женщина принялась сервировать перед ним обед, а Родион с радостью изголодавшегося по собеседнику человеку принялся рассказывать.
– Вы с персоналом не разговаривайте, им запрещено с нами общаться. Вот меню, а в этой тетрадке вы можете отметить на неделю вперед, что будете есть в будущем. Есть все, даже икра черная. А сейчас вам дадут дежурные блюда.
– Отлично. Давай поедим, а потом вы мне все расскажете.
– Сергей Викторович вы ко мне на ты обращайтесь и можете Родиком называть, меня еще в шутку Риддиком обзывают, но я не обижаюсь. И чего обижаться, Риддик крутой чувак.
– Тогда и ты меня можешь на ты величать.
– Ну вы же руководитель группы…
– Да какой там руководитель! вся наша группа, ты да я.
После обеда Родион повел Сергея на второй этаж показывать хозяйство.
Начало трудовой деятельности
На столе Сергея стояло 3 монитора и две клавиатуры. На полке под столешницей тихо гудели два системных блока.
– Родик покажи пожалуйста что здесь и к чему. – позвал Сергей системщика.
– Мне Борис говорил, что вы предпочитаете Линукс[3 - Linux – семейство Unix-подобных операционных систем на базе ядра Linux, включающих тот или иной набор утилит и программ проекта GNU, и, возможно, другие компоненты.]. Ой забыл, ты предпочитаешь. Вот так этот Линукс вызывается – и Родион начал щелкать клавиатурой и мышкой – я там поставил несколько средств для разработки и редактирования. Если чего не хватает, обращайся установлю.
– Да я и сам в состоянии установить. Что нужно качну из интернета.
– А вот и не качнешь, интернета нету.
– Как нету? Это в Швейцарии и нету.
– В Швейцарии он везде есть, это у нас нет. Ты внимательно читал второе приложение к контракту?
– Нет не очень. Не думал, что контракт такой не стандартный.
– Понятно, а на телефон свой давно смотрел?
– А чего на него смотреть?
– А ты посмотри или попробуй кому-нибудь позвонить или в интернете полазить.
Сергей вытащил телефон и с удивлением обнаружил, что действительно нет ни какой связи с внешним миром.
– А как же с родственниками общаться или еще личные дела какие-нибудь.
– Это без проблем. – Родион вытащил из-за монитора стационарный кнопочный телефон аля конец двадцатого века. – Вот на нем номер написан. Можешь его сообщить своим родственникам и знакомым. Такой же и в номере у тебя стоит, только учти все переговоры прослушиваются и записываются.
– Концлагерь какой-то. Я привык по каждому чиху в гугл заглядывать, как же теперь.
– А теперь тебе придется ко мне обращаться, а я буду заказывать через смежников нужный тебе софт и любые справочники.
А кто такие смежники?
– Смежники это первая группа специалистов, которая разрабатывает основной софт для вакуумного компьютера. Там много людей и все идет через них.
– У меня такое ощущение, что из-за этой супер секретности нас в конце контракта грохнут. – Полушепотом произнес Сергей.
– У меня тоже. – Так же тихо подтвердил Родион.
– Ладно показывай дальше.
– Второй монитор это для эмулятора[4 - Эмуля?ция в вычислительной технике – комплекс программных средств, предназначенных для копирования (или эмулирования) функций одной вычислительной системы на другой, отличной от первой.] целевого вакуумного компьютера. – продолжил экскурсию системщик. – Здесь ты будешь отлаживать свои написанные алгоритмы. Эмулятор имеет ту же систему адресации и систему команд, что и вакуумный, но работает в миллиарды раз медленней. Этот эмулятор сделали смежники, он сырой еще и иногда глючит, но они обещали скоро все исправить. На монитор можно выводить протокол выполнения команд или графику, если использовать их графическую библиотеку.
Родик сделал театральную паузу и продолжил показывая на третий монитор:
– А вот это самое главное, монитор связи с главным персонажем то есть вакуумным компьютером. Работать с ним можно так же как и с эмулятором, только всё будет в миллиарды раз быстрее и без глюков. К сожалению он сейчас не работает, заглох недавно, но смежники запустили его новую раскачку и через две недели ты сможешь на нем испытывать свои алгоритмы, а пока проводи отладку и тестируй на эмуляторе.
– А где сам этот вакуумный компьютер находится?
– Он в нескольких километрах от нас под землей, точно не знаю. Но от него к нам толстенный оптоволоконный кабель проложен. Скорость обмена данными фантастическая.
Родик полюбовался произведенным эффектом и продолжил:
– На рабочем столе Линукса лежит папка где хранится вся справочная информация. Там описание ассемблера, и документация по среде разработки. Кстати есть даже недоделанный С++[5 - C++ – компилируемый, статически типизированный язык программирования общего назначения.] для среды разработки.
– А почему недоделанный?
– Сам транслятор[6 - Трансля?ция програ?ммы – преобразование программы, представленной на одном из языков программирования, в программу на другом языке. Транслятор обычно выполняет также диагностику ошибок, формирует словари идентификаторов, выдаёт для печати текст программы.] вполне нормальный, все конструкции языка правильно интерпретирует, но многих стандартных библиотек не хватает.
– Слушай Родик, я бы конечно Java [7 - Java – строго типизированный объектно-ориентированный язык программирования общего назначения, разработанный компанией Sun Microsystems (в последующем приобретённой компанией Oracle).]предпочёл, но си с плюсами тоже неплохо. На нем писать гораздо быстрее получится чем на ассемблере. Ты не можешь договориться со смежниками, чтобы они исходники[8 - Исхо?дный код (жарг. исходники) – текст компьютерной программы на каком-либо языке программирования или языке разметки, который может быть прочтён человеком. В обобщённом смысле – любые входные данные для транслятора. Исходный код транслируется в исполняемый код целиком до запуска программы при помощи компилятора или может исполняться сразу при помощи интерпретатора.] подкинули. Я и сам тогда смогу стандартные библиотеки дописывать по мере разработки.
– Нет проблем, я думаю договорюсь. На одну организацию работаем. А почему Java лучше? Сейчас самый модный язык программирования Python[9 - Python ( пито?н или па?йтон) – высокоуровневый язык программирования общего назначения с динамической строгой типизацией и автоматическим управлением памятью.]. Я вот пытаюсь его изучать.
– Пайтон это же интерпретирующий язык, жрёт кучу памяти и процессора. Такое же дерьмо как и PHP[10 - PHP– язык программирования]. Знаешь Родион, я за свою долгую программистскую жизнь, много новомодных языков видел, которым светлое будущее пророчили. А кончилось тем что мода прошла и о них все забыли. А Си и Джава это классика и как всякая классика будут жить вечно.
– Сильно сказано, пойду тогда Джаву учить. – Заулыбался системщик.
– Спасибо за экскурсию Родик. Ну а теперь дай мне самому потыкаться и всё попробовать. Если появятся вопросы к тебе можно обращаться?
– Обижаете Сергей Викторович, я здесь зарплату получаю, чтобы исполнять любые ваши желания. – Системщик пошел в угол к своему столу, одел наушники и начал энергично стучать по клавиатуре.
– Понятно! – подумал Сергей – Игровая зависимость на лицо. Все эти системщики игровые наркоманы. Даже на этот очень секретный объект любимую игрушку протащил. Интересно, а Борис об этом знает?
Остаток дня прошел очень плодотворно. Сергей влил в себя тонну информации и протестировал все средства разработки. Все оказалось понятным и потому не сложным. Писать эволюцию он решил завтра с утра а сегодняшний вечер завершить перевариванием впитанной информации разбавленной небольшим количеством местного пива.
Вечером сидели на веранде в плетенных креслах, любовались прекрасным швейцарским закатом и слушали пение птичек. Сергей с пивом, а Родион с чипсами и кока-колой. Громко пыхтя и топая ввалился Борис с бутылкой пива и плюхнулся в свободное кресло.
Эволюция
С утра работа пошла хорошо. Несмотря на то что Родиона и Бориса на втором этаже не было, на рабочем столе линукса Сергей обнаружил папку с исходниками Си с плюсами. И когда это Родик успел?
Через час появились оба, и вся компания отправилась завтракать. Вчера Сергей решил обнаглеть и заказал себе на завтрак "Запеченные устрицы а-ля Рокфеллер", И чуть было не пожалел. После завтрака отправились перекурить и Родион начал приставать к Сергею и Борису с вопросами.
– Ну расскажите добрые люди над чем мы работаем, что это за эволюция такая.
– Пусть тебе лучше Боря покажет, она у него на ноутбуке есть, а я пока поработаю слегка.
Только Сергей сосредоточился и начал строчить код, как прибежал возбужденный Родион с ноутбуком Бориса.
– Сергей! Я понял, что когда эти кляксы наедятся прилично, то начинают размножаться делением и при этом дети всегда слегка отличаются от родителей, то есть мутируют. А может такое получиться, что они в процессе естественного отбора могут стать умнее и там засады друг на друга устраивать к примеру.
– Нет не могут. У них мутируют только свойства. Ну там тяжелее становятся или легче. Может коэффициент злости добавиться или уменьшиться, размер, скорость. Но сама программа управляющая этими кляксами одна на всех и она не меняется. Вот если бы я сделал так, чтобы каждая особь свою программу с собой носила и эта программа случайным образом изменялась у потомков, то тогда да. Нежизнеспособные программы вымирали бы, а случайно сделанное полезное изменение наоборот давало преимущество и такие особи бы выживали. Что-то типа нашей ДНК[11 - Дезоксирибонуклеи?новая кислота? (ДНК) – макромолекула, обеспечивающая хранение, передачу из поколения в поколение и реализацию генетической программы развития и функционирования живых организмов.]. Но это гораздо сложнее сделать сроки нужны другие.
– Ну сделай пожалуйста. – взмолился Родион. – У нас же суперкомпьютер скоро заработает. Там скорость бешеная. Эволюция до разумной кляксы за пару дней пройдет. Очень хочется на это посмотреть!
– Родион отстань от дяди! – донесся голос Бориса. – дядя Сережа будет делать только то, что дяде Боре надо. Понятно?
– Понятно.
Родион поплелся на свое место, одел наушники и начал молотить по клавиатуре.
– Нужно ему сказать – подумал Сергей, – что при надетых наушниках, он не слышит собственных звуков и скоро всех достанет.
Сергею приходилось иногда писать небольшие программы второй раз при потере исходных текстов, но он никогда не повторялся на все сто процентов. Для второй реализации он выбирал новый путь, где использовал новые идеи и пытался сделать программу с большими возможностями и более эффективным алгоритмом. Так и с этой эволюцией. В прошлый раз он использовал поле для жизни виртуальных организмов размером с экран монитора, такое же прямоугольное как и сам монитор. В этот раз ему нужно было использовать поле гораздо больших размеров и без прямых углов. Лучше всего подходил виртуальный шар, а двумерные животные должна были ползать по его поверхности. Пришлось применить сферическую систему координат, что значительно изменяло алгоритм, но зато позволяло избежать аномалий в углах пространства, которых теперь не было.
Но самым большим новшеством было то, что алгоритм писался для суперкомпьютера с почти бесконечным числом процессоров и такой же почти бесконечной памятью для данных. Раньше для обсчета происходящего в виртуальном мирке эволюции применялся один бесконечный цикл, который пробегал по всем существам и вычисляя взаимодействия каждого существа с окружающей средой вносил изменения в его сущность, такие как новые координаты, скорость, направление движения и так далее. По сути этот алгоритм был рассчитан на один процессор. Теперь же для каждого нового существа запускался новый параллельный поток[12 - Параллельный поток – объект, выполняемый параллельно с основным потоком приложения и с другими параллельными потоками.], для которого выделялся персональный процессор и в этом потоке работал свой бесконечный цикл обсчитывающий изменения для своего существа. Ассемблер, то есть система инструкций вакуумного суперкомпьютера была очень хорошо настроена на параллельные вычисления и поэтому новшества на величину кода почти не повлияли. Писалось вполне легко и быстро и с каждым часом производительность увеличивалась. Уже к вечеру основной костяк алгоритма был почти готов. Осталась отладка кода.
Для отладки требовалось изображение на экране монитора этой виртуальной жизни в компьютере, а вот эта задача была уже посложней чем алгоритм эволюции, так как изменилась форма виртуального пространства и так просто выводить на экран эти кляксы не получится. Но решение этой проблемы Сергей решил отложить на завтра, времени еще много и он всё успеет.
Вечер с бутылкой пива был на веранде. Похоже зарождалась новая традиция. Рассказал Борису и Родиону, что удалось сделать и что наметил на будущее.
– Вечно ты себе придумываешь новые головняки – пробурчал Борис. – Сделал бы один в один как было раньше и все дела.
– Не бойся дружище, все успеем вовремя. – Успокоил приятеля Сергей. Он понимал, что Борис, как ответственное лицо опасается, что Сергей влезет в дебри и надолго застрянет. – Во-первых понимаешь, натура у меня такая, не могу писать одно и тоже, хоть под пистолетом заставляй, а во-вторых я боюсь, что программа, которая использует всего один процессор из миллиардов вызовет у суперкомпьютера такую скуку, что он опять заснет от безнадеги.
– А ДНК к ним приделаешь? – Робко влез в разговор Родион.
– Ты знаешь Родион, пока нет, чтобы не травмировать нежную психику Бориса, но в следующей версии возможно и приделаю. Во всяком случае задел для этого я уже сделал.
– Вот отчитаемся перед заказчиком, что вакуум не засыпает, тогда и будете приделывать. Можете хоть гениталии к своим кляксам приделывать. – Строго произнес Борис.
– А знаешь Боря, с гениталиями это очень интересная идея. Я еще когда в первый раз писал, думал как туда встроить половое размножение. – Задумчиво произнес Сергей. – Половое размножение это было великое изобретение природы, позволившее перейти эволюции к настоящему видообразованию.
– Если я про гениталии на совете директоров вякну, то нам быстро дадут коленом по этим самым гениталиям. – Пробурчал Борис, а остальные хором заржали.
Демонстрация эволюции
– Ну давай показывай! – Раздался голос Бориса над ухом Сергея. – Говорил, что за неделю успеешь, а уже третья неделя началась.
– Так основной алгоритм я еще в первый рабочий день сделал. – Начал оправдываться Сергей. – Пришлось с графикой и управлением повозится. Графическая библиотека, которую сделали смежники абсолютно сырая. Глюк на глюке, я её почти полностью переписал, теперь можно виртуальными пейзажами любоваться. Сделал задел, чтобы в трехмерном виде можно было-бы смотреть.
– Так у тебя мир двумерный, зачем 3D?
– Это я задел на будущее сделал, хочу после сдачи эволюции один интересный эксперимент замутить. Я уже начал над этим работать.
– Подожди Сергей со своими экспериментами, – недовольно дернулся Борис – давай свою новую эволюцию показывай. Я должен убедиться, что мы не зря в столовой бутерброды едим и дальше будем есть с чистой совестью.
К компании старых коллег и друзей пристроился Родион и тихонько вытаращив глаза наблюдал за демонстрацией.
– Ну вот смотри – начал показывать программист – Чистый экран. Теперь я подвожу курсор к любому месту и нажимаю F2. В это место попадает зародыш растения. Это основа пищевой цепочки, энергетическая база экосистемы.
На месте курсора появилась зелёная точка и начала в темпе обрастать такими же. Появился узорчатый орнамент из зелени, который стремительно заполнял свободное пространство. Алгоритм разрастания растений был не такой простой, при больших скоплениях в одном месте они отмирали и стремились размножиться на свободных местах. Поэтому на экране все мерцало и изменялось как в калейдоскопе. Растения с каждым квантом времени становились темнее, это они накапливали энергию и могли стать совсем тёмно зелеными, а новые только появившиеся начинали свою жизнь со светло зеленного состояния.
– Это что и вся эволюция? – Разочарованно спросил Родион.