Выбрать главу

Снежана хмыкнула. Мама Тереза поморщилась: хмыкание напомнило клубного доктора, как там его? Симпак? Стимпак? А, Сумрак! Вздохнула тихонько: сколько на ее памяти приходило молодых, горячих – столько и перегорело. Выпихнуть его на стажировку, пока не поздно?

Дочка же ответила:

– Бомж, тут и думать нечего.

– А-а… Почему бомж?

– Наверчено тряпок. И воняет!

– А раздевают-то его зачем?

Снежана кивнула на маму:

– Попал в больницу.

Кивнула на папу:

– Или его обыскивают.

Важный дядя заметно стушевался и вернулся к застольной беседе с такими же пингвинами: черный пиджак, белая грудка-рубашка из воротника.

Слева наклонился дядя Витя:

– Снежана, а как ты так быстро выучила английский?

Змей говорил: дядя Витя программист. Настоящий, из какой-то там крупной конторы. Программировал что-то серьезное. Черт знает что, но жутко серьезное. Так что ему Снежана ответила:

– Чего там учить? Они почти все слова из С++ взяли!

Дядя Витя, разумеется, слышал о программистах “Факела”: он с дочкой гостил у Змеева папы, друга еще по студенческой молодости. Но дядя Витя полагал кружок собранием обычных детишек, слабо понимающих разницу между кодом символа и скан-кодом клавиши. Не то, чтобы выпендреж девочки его сильно удивил – но глубоко внутри дяди Вити шевельнулось нечто… Нечто, позабытое давно и прочно. То ли радость, когда адреса банков sVGA, наконец, перестали наползать друг на дружку и спрайты на экране перестали разъезжаться пельменеподобно. То ли злость на идиотскую архитектуру 8080, то ли горечь сообщения, что Макинтоши отказались-таки от Alpha-процессоров… То ли шок от скорости рабочей станции Silicon Grafics под Iris – совершенно инопланетное изделие, особенно рядом со страшной в те годы девяносто пятой виндой…

– Так вы там изучаете С++?

Снежана помотала головой:

– Всего по чуть-чуть.

– Что-то конкретное делаете? Или так, учебные примеры?

Снежана вздохнула. Не получилась из нее маленькая девочка! Эх, говорил же Змей на балу: “Фарш невозможно провернуть назад”. Вспомнив свой ответ Змею, Снежана внезапно развеселилась. Программист, говорите? Сейчас изобразим:

– Лично я пишу компилятор.

Дядя Витя вздрогнул и сел прямо, но не сказал ни слова. Карие глаза у дяди Вити. И довольно широкие. Снежана улыбнулась:

– Компиляция понимается, как перевод входного потока символов в выходной поток – команды процессора. То есть, в машинный код. Более широкое определение компиляции – замена символов входного языка символами выходного языка, на основании набора правил такой замены. Но там сложно!

Дядя Витя глянул на дочь – та только что не обвивалась вокруг Стасика. Предложил:

– Отойдем?

Снежана подмигнула папе, мило улыбнулась маме. Выскользнула из-за стола. Дядя Витя смотрел на девочку с непонятным выражением лица. То ли удивлялся – то ли сожалел.

Отошли к дверям гостиной, где братья разметили место под елку, но саму елку пока что не поставили.

– И какие же… Сложности?

Девочка театрально вздохнула:

– Как найти нужный элемент в памяти? То есть, какова должна быть форма адресации, чтобы поиск заканчивался в разумный срок? И какой срок считать разумным? Структура хранения для быстрого поиска? Особенно, если средняя задача сто мегабайт чистых, не считая разметочной информации?

Папа, слушающий краем уха, вздрогнул и мало не уронил с вилки рыбку. Мама безнадежно развела руки: такая вот выросла. Не запихивать же обратно!

Снежана улыбнулась родителям еще милее, повернулась к собеседнику:

– Что делать, если команда или данные не найдены? Вы же знаете, основная ошибка виндовс – вылет за пределы отведенного сегмента. Кроме того, необходимо дать пользователю языка возможность включить и выключить кусок структуры данных на горячую. Иначе никакой сети, никакого распараллеливания.

Дядя Витя икнул. Дядя Витя мигнул. Дядя Витя поднял обе руки к галстуку и зачем-то подергал его вниз:

– И как… Вы решаете?

– Для начала, Шарк предложил переформулировать задачу. Чтобы проблемная область не сплошая масса данных, а некоторая упорядоченная иерархия объектов, типа BSP/PVS-структур в 3D-шутерах. Такие иерархии понятий символьные языки обрабатывают лучше. Ошибиться в связном дереве труднее, чем в сырой массе цифр.

– А что за символьные языки?

– Делим все данные на две группы. Символьные и числовые. Символом назовем последовательность знаков, представляющую что-то из моделируемого мира. Тогда число – символ, представляющий самого себя. Новые процессоры все числовые. Символьных сейчас нет. Шарк рассказывал, последние попытки делали финны, лисп-машины, еще при живом СССР. Соответственно, и языки сейчас ориентированы на числодробилку. Однако, поскольку множество символов включает в себя числа, как подмножество, то символьные процессоры, в теории, могут лучше работать с числами, чем числовые процессоры с символами. Соответственно, символьный язык – ассемблер для символьного процессора. Или эмулятора, это понятно.