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

И эти «семинары» шли в присутствии Соны, Яны и Марьяны: девушкам тоже было очень интересно то, что парень рассказывал, а Сона — она просто «за компанию» рядом сидела. Но, как оказалось, рассказываемое очень внимательно слушала:

— Лёш, а ты все время говоришь, что разрабатывается транслятор с языка низкого уровня. То есть ты хочешь сказать, что есть еще какой-то язык высокого уровня? А почему ты тогда о нем ничего не рассказываешь?

— Потому что такого языка нет. То есть еще нет, его требуется сначала разработать, а затем и для него написать транслятор.

— Понятно. То есть непонятно, зачем такой язык вообще нужен?

— Я думаю, что он нужен для того, чтобы человек, пишущий программу для вычислительной машины, мог не изучать предварительно устройство этой машины.

— Я что-то не очень поняла…

— Вот смотри, допустим тебе, как математику, нужно составить программу вычисления… скажем, квадрата суммы двух чисел. Уравнение вычисления выглядит так? А плюс б в скобках, снаружи знак квадрата… или вообще любой степени. Все просто и понятно, так?

— Так.

— А программа выглядит следующим образом: надо сначала из памяти извлечь первое число, поместить его в регистр, извлечь второе число и сложить его с содержимым регистра, результат записать в память и потом полученное содержимое регистра умножить на такое же значение, только что записанное в память. Чтобы это выполнить, программисту нужно знать, какие регистры как используются, где хранятся нужные числа, как их из памяти вытаскивать и туда записывать — в общем, кучу бесполезных для математика вещей.

— Как же бесполезных, ведь без них программу-то не написать!

— Зато если написать программу, которая разберет запись в виде формулы и сама сгенерирует требуемые машинные коды, то математику будет достаточно знать именно математику, а о том, что в машине есть какие-то регистры или память как-то хитрым образом организована, ему вообще знать будет не нужно.

— Вот теперь поняла. То есть… да, поняла, вот только написать транслятор, который будет формулы понимать, не кажется, будет очень непросто.

— И человек, который транслятор будет писать, сам должен будет очень хорошо архитектуру машины представлять. Потому что в зависимости от того, какого типа исходные числа и от самой задачи даже команды сложения и умножения должны будут использоваться разные. Тут же только команд сложения заложено три типа…

— Зачем? Ведь сложение — это когда два числа просто складываются. Арифметика, первый класс начальной школы.

— Но ты-то давно уже не в первом классе, а на втором курсе мехмата. И прекрасно знаешь, что числа бывают разные. Целые, дробные, вещественные и мнимые, и форма записи у них бывает в том числе и экспоненциальная…

— А как программисту отличить целое от вещественного? Ведь в машине все они изображаются векторами из нулей и единичек.

— А ты еще говорила, что ты дура, но смотришь-то в суть! Нужно заранее дать указание машине, какие последовательности нулей и единиц как интерпретировать. То есть отдельно описать типы всех используемых в программе данных. Вот смотри, например это можно сделать так…

— Хитро ты придумал, даже жалко, что машинку свою этому Рамееву отдал, а то я бы попробовала что-то такое написать. А теперь что уж…

— Сона, ты знаешь, чем отличается Аксель Иванович от Башира Искандаровича?

— Аксель Иванович уже старый…

— И это тоже, но главное отличие заключается в том, что Аксель Иванович — адмирал. Он приказал — и сейчас сто, а то и двести военных математиков сидят и рисуют хитрые диодные схемы. Благодаря которым упрощенная тридцатидвухразрядная машинка сможет работать точно так же, как и машина на шестьдесят четыре разряда, только раз в пять помедленнее. И в производстве окажется раз в десять дешевле. А еще он приказал — и заводик в Крюково, который делал схемы для армейских раций, теперь делает и схемы для этих машин, так что уже к лету у нас будет и своя машинка, по командам практически ничем не отличающаяся от большой. У нас в кабинете будет.