- Можно будет запускать все доступные алгоритмы, но часть требует разных аппаратных устройств типа терминалов, информации о которых у нас нет. Поскольку «Сетунь-70» существовала в единственном экземпляре, для нее не так много программного обеспеченья, как для первой «Сетуни». Она использовалась по большей части для нужд МГУ.
- Как программировали «Сетунь-70»?
- У программистов «Сетуни-70» был достаточно развитый инструментарий. В нём имелся, по-моему, ассемблер даже и то ли транслятор Фортрана, то ли компилятор Алгола.
- В коде приходилось как-то учитывать троичность?
- Есть операции перехода, которые в зависимости от знака тебя переводят. Если минус, то по одному адресу за одну операцию, если ноль — то по другому, если плюс — то по третьему.
- Какие алгоритмы больше всего выигрывают от троичной логики? Обход бинарного дерева?
- Да, с ними троичные машины работают эффективнее, чем двоичные. В двоичном при обходе можно либо «попасть», либо «не попасть», а тут ты либо «перелетел», либо «попал», либо «не долетел». Так значительно проще понять, что делать дальше.
Собственно говоря, разницу между двоичными и троичными подходами в строении вычислительных машин можно проиллюстрировать на примере пешеходного перехода. Если рассматривать с точки зрения двоичного — ты можешь двигаться по переходу только в одну сторону. Если с точки зрения троичного подхода — ты можешь переходить как в одну сторону, так и в другую. Не приходится, как в случае с двоичным, бежать до следующего перехода, если этот только в обратную сторону. К тому же при троичном представлении данных в ячейке памяти умещается больше значений — диапазон шире. Это значит, что для того, чтобы представить число, этих ячеек понадобится меньше.
Плюс у уравновешенного троичного кода (его по-разному называют — уравновешенный, сбалансированный) есть преимущество: каждый разряд содержит знак того значения, которое содержится в этом разряде. В данном случае у нас минус один, ноль и плюс один. Для того чтобы выяснить, какой знак у всего числа, содержащегося в ячейке, достаточно взять первый ненулевой разряд и посмотреть, какой у него знак.
В двоичной системе берёшь ячейку и смотришь: если там единица, то соответствующую степень двойки надо добавить к общей сумме. В случае с троичной системой если в ячейке плюс, то степень тройки необходимо добавить, а если минус, то вычесть. И соответственно там может лежать и отрицательное число, и положительное, и нулевое. Здесь очень интересно проявляется особенность, которая есть во всех уравновешенных системах счисления — у них наилучшее округление. Не нужно никаких специальных алгоритмов для того, чтобы округлить число, достаточно просто отбросить ненужные знаки, и в оставшихся разрядах автоматически получится лучшее приближение числа.
Уравновешенное троичное представление имеет интересную особенность: поскольку оно уравновешенное, то содержит как положительные, так и отрицательные значения. То есть можно в некоторых алгоритмах добиться существенного прироста, например при сжатии. Здесь не нужно всегда только увеличивать словарь — в какой-то момент его можно и уменьшать. Это тоже даст небольшой выигрыш. Результат сжатия файла будет поменьше, чем у двоичного с тем же самым алгоритмом.
- Говорят ещё про удачное применение в механике, где троичный разряд описывает не только наличие тока, но и направление вращения ротора.
- Да, по своей природе уравновешенная троичная система исчисления позволяет обозначить одним разрядом не только включение и выключение мотора, но и включение со вращением в одну сторону и включение со вращением в другую сторону. Например, минус один — налево, плюс один — направо, ноль — не крутить вообще. Это удобнее, чем в двоичной системе, где сначала надо задать направление, а потом включить двигатель. На одно действие меньше.
- Если бы сегодня было возможно создать троичные процессоры, в какой области они пригодились бы?
- Это, прежде всего, обработка статистической информации. Там математика, где требуется работа с большими числами с высокой точностью. В принципе, никто не мешает сделать троичную машину, где будет неограниченное количество разрядов в числе, и оперировать с ней будет проще, просто принимая во внимание природу уравновешенного кодирования, где округление и некоторые другие операции выполняются значительно проще и экономнее.
- Сейчас очень актуален поиск и распознавание образов — в них троичная логика пригодилась бы?