Михаил Бобров – Запиханка из всего (страница 69)
– А что ваш робот сделал?
Стас помялся:
– Ничего, в общем.
– Так за что место дали?
– За уверенность! – и Стас подмигнул тут же расцветшей брюнетке. Вот что в ней такого? Решив спросить Ингу… Хотя, можно и Шарка. Не Змея же, еще в самом деле выяснять примется… Девочка плотнее прижала к себе розового плюшевого мишку. Эх, как жаль, что “Голубую сталь” дальше не снимают!
А взрослые действительно видят в ней ребенка. Важный дядя, и не нашел ничего лучше, чем спросить:
– Отгадай загадку. Сидит дед, во сто шуб одет. Кто его раздевает, слезы проливает.
Снежана хмыкнула. Мама Тереза поморщилась: хмыкание напомнило клубного доктора, как там его? Симпак? Стимпак? А, Сумрак! Вздохнула тихонько: сколько на ее памяти приходило молодых, горячих – столько и перегорело. Выпихнуть его на стажировку, пока не поздно?
Дочка же ответила:
– Бомж, тут и думать нечего.
– А-а… Почему бомж?
– Наверчено тряпок. И воняет!
– А раздевают-то его зачем?
Снежана кивнула на маму:
– Попал в больницу.
Кивнула на папу:
– Или его обыскивают.
Важный дядя заметно стушевался и вернулся к застольной беседе с такими же пингвинами: черный пиджак, белая грудка-рубашка из воротника.
Слева наклонился дядя Витя:
– Снежана, а как ты так быстро выучила английский?
Змей говорил: дядя Витя программист. Настоящий, из какой-то там крупной конторы. Программировал что-то серьезное. Черт знает что, но жутко серьезное. Так что ему Снежана ответила:
– Чего там учить? Они почти все слова из С++ взяли!
Дядя Витя, разумеется, слышал о программистах “Факела”: он с дочкой гостил у Змеева папы, друга еще по студенческой молодости. Но дядя Витя полагал кружок собранием обычных детишек, слабо понимающих разницу между кодом символа и скан-кодом клавиши. Не то, чтобы выпендреж девочки его сильно удивил – но глубоко внутри дяди Вити шевельнулось нечто… Нечто, позабытое давно и прочно. То ли радость, когда адреса банков sVGA, наконец, перестали наползать друг на дружку и спрайты на экране перестали разъезжаться пельменеподобно. То ли злость на идиотскую архитектуру 8080, то ли горечь сообщения, что Макинтоши отказались-таки от Alpha-процессоров… То ли шок от скорости рабочей станции Silicon Grafics под Iris – совершенно инопланетное изделие, особенно рядом со страшной в те годы девяносто пятой виндой…
– Так вы там изучаете С++?
Снежана помотала головой:
– Всего по чуть-чуть.
– Что-то конкретное делаете? Или так, учебные примеры?
Снежана вздохнула. Не получилась из нее маленькая девочка! Эх, говорил же Змей на балу: “Фарш невозможно провернуть назад”. Вспомнив свой ответ Змею, Снежана внезапно развеселилась. Программист, говорите? Сейчас изобразим:
– Лично я пишу компилятор.
Дядя Витя вздрогнул и сел прямо, но не сказал ни слова. Карие глаза у дяди Вити. И довольно широкие. Снежана улыбнулась:
– Компиляция понимается, как перевод входного потока символов в выходной поток – команды процессора. То есть, в машинный код. Более широкое определение компиляции – замена символов входного языка символами выходного языка, на основании набора правил такой замены. Но там сложно!
Дядя Витя глянул на дочь – та только что не обвивалась вокруг Стасика. Предложил:
– Отойдем?
Снежана подмигнула папе, мило улыбнулась маме. Выскользнула из-за стола. Дядя Витя смотрел на девочку с непонятным выражением лица. То ли удивлялся – то ли сожалел.
Отошли к дверям гостиной, где братья разметили место под елку, но саму елку пока что не поставили.
– И какие же… Сложности?
Девочка театрально вздохнула:
– Как найти нужный элемент в памяти? То есть, какова должна быть форма адресации, чтобы поиск заканчивался в разумный срок? И какой срок считать разумным? Структура хранения для быстрого поиска? Особенно, если средняя задача сто мегабайт чистых, не считая разметочной информации?
Папа, слушающий краем уха, вздрогнул и мало не уронил с вилки рыбку. Мама безнадежно развела руки: такая вот выросла. Не запихивать же обратно!
Снежана улыбнулась родителям еще милее, повернулась к собеседнику:
– Что делать, если команда или данные не найдены? Вы же знаете, основная ошибка виндовс – вылет за пределы отведенного сегмента. Кроме того, необходимо дать пользователю языка возможность включить и выключить кусок структуры данных на горячую. Иначе никакой сети, никакого распараллеливания.
Дядя Витя икнул. Дядя Витя мигнул. Дядя Витя поднял обе руки к галстуку и зачем-то подергал его вниз:
– И как… Вы решаете?
– Для начала, Шарк предложил переформулировать задачу. Чтобы проблемная область не сплошая масса данных, а некоторая упорядоченная иерархия объектов, типа BSP/PVS-структур в 3D-шутерах. Такие иерархии понятий символьные языки обрабатывают лучше. Ошибиться в связном дереве труднее, чем в сырой массе цифр.
– А что за символьные языки?
– Делим все данные на две группы. Символьные и числовые. Символом назовем последовательность знаков, представляющую что-то из моделируемого мира. Тогда число – символ, представляющий самого себя. Новые процессоры все числовые. Символьных сейчас нет. Шарк рассказывал, последние попытки делали финны, лисп-машины, еще при живом СССР. Соответственно, и языки сейчас ориентированы на числодробилку. Однако, поскольку множество символов включает в себя числа, как подмножество, то символьные процессоры, в теории, могут лучше работать с числами, чем числовые процессоры с символами. Соответственно, символьный язык – ассемблер для символьного процессора. Или эмулятора, это понятно.
– Хм… Некая логика есть. А что дальше?
– А дальше в машинной памяти создается одинаково древовидная структура объектов, ссылающихся друг на друга. Сегодня вовсе неважно, на каком исходном языке писали программу. На момент исполнения процессор видит в памяти одну и ту же древовидную структуру: поля данных, переплетенные взаимными ссылками. Так вот, – Снежана опять улыбнулась, – “class” в том вашем С++, с его свойствами, и будет примерным описанием символа, как некоего понятия предметной области. Следовательно, любая программа – компилятор. В смысле, переводчик с языка предметной области на язык процессора.
Судя по лицу дяди Вити, он понял.
Судя по лицам всех остальных, понял только дядя Витя.
– Э-э… – дядя Витя вежливо и коротко наклонил голову. – Благодарю. Мне… Нужно подумать.
Снова поправил галстук и отошел.
Подошел заметно встревоженный папа:
– Снежана, ты что творишь? Ты себя со стороны видела?
Девочка бросила взгляд на ноги, руки, живот: с одеждой все в порядке. Покрутилась, заглядывая за спину: ничем не измазано, нигде не расстегнуто.
– А что?
– У тебя голос изменился, – генерал-майор госбезопасности поежился. – Металлический голос. Взрослый. Ты же это все вещала с чужих слов, так?
Снежана независимо вскинула голову:
– А что такого-то? Ты же сам говорил, что научиться можно только на реальных примерах.
– Но зачем же вам такие сложности?
– А что мне, дурой оставаться? Сам же говоришь, будущее за программистами. Если роботы везде, кто-то же их должен программировать, нет?
Папа оглянулся на вернувшихся к столу гостей, успокоительно махнул рукой жене. Покосился на дочку:
– Но тебе же только тринадцать лет.
– Папа, а что ты знаешь про тринадцатилетних? Вот из нашего класса? Ты в курсе, что Ирка и Светка литрами жрут пиво в туалете – типа, уже взрослые? Что Танька и Ленка на полном серьезе обсуждают, кто из парней лучше трахается? А как Юлька говорила про своего будущего мужа: “Найду такого, чтобы зарплата четыреста, это средняя по стране. Матиз маленький стоит сорок тысяч, как раз по четыреста в месяц на десять примерно лет. Жить будем у меня, на обеды я ему буду что-нибудь отдавать. А потом и развестись недолго.” И ей вообще по… Пофиг, что это будет за мужик, чего сам он будет хотеть или не хотеть. Папа, даже я понимаю, что мужик такого не потерпит!
Папа вздохнул. Хорошо, что дочка ему доверяет. Но что в обычной школе так вот запросто…