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