Введение
Программа dc (настольный калькулятор) — это кроссплатформенный калькулятор с обратной польской нотацией, поддерживающий арифметику произвольной точности. Она была написана Лориндой Черри и Робертом Моррисом в лабораториях Белла. Традиционно, программа калькулятора bc (с инфиксной нотацией) реализовывалась на основе dc. В этой статье приведены некоторые примеры, чтобы дать общее представление о языке; для получения полного списка команд и синтаксиса следует обратиться к справочной странице для конкретной реализации.
dc (desk calculator) is a cross platform reverse Polish calculator which supports arbitrary precision arithmetic. It was written by Lorinda Cherry and Robert Morris at Bell Labs. Traditionally, the bc calculator program (with infix notation) was implemented on top of dc. This article provides some examples in an attempt to give a general flavour of the language; for a complete list of commands and syntax, one should consult the man page for one's specific implementation.
История
dc — старейшая сохранившаяся программа на языке Unix. Когда компания Bell Labs получила PDP-11, dc, написанная на языке B, стала первым языком программирования, запущенным на новом компьютере, даже раньше ассемблера. Кен Томпсон полагает, что dc была самой первой программой, написанной для этой машины.
Струнки
Строковые значения заключаются в символы [ и ] и могут быть помещены в стек и сохранены в регистрах. Команда 'a' преобразует младший байт числового значения в символ ASCII, или, если на вершине стека находится строка, заменяет её первым символом этой строки. Не существует способов построения строк или выполнения строковых операций, кроме как обработки их командой 'x' или вывода на печать командой 'P'. Символ # начинает комментарий до конца строки.
Печать всех простых чисел
echo '2p3p[dl!d2+s!%0=@l!l^!<#]s#[s/0ds^]s@[p]s&[ddvs^3s!l#x0<&2+l. x]ds. x' | dc
Эта программа была написана Мишелем Шарпентье. Она выводит последовательность простых чисел. Обратите внимание, что существует более короткая реализация, которая читает четырнадцать символов меньше. echo '2p3p[pq]s$[l!2+ds!l^<$dl!%0<#]s#[+dvs^1s!l#x2l. x]ds. x' | dc
This program was written by Michel Charpentier. It outputs the sequence of prime numbers. Note that shorter implementation is possible, which reads fourteen symbols less. echo '2p3p[pq]s$[l!2+ds!l^<$dl!%0<#]s#[+dvs^1s!l#x2l. x]ds. x' | dc
Экологические переменные
Если существует переменная окружения DC LINE LENGTH и содержит целое число, большее 1 и меньшее, чем [не указано в оригинале], вывод количества цифр (в соответствии с основанием системы счисления) будет ограничен этим значением, после чего будут добавлены обратные слеши и переносы строк. Длина строки по умолчанию — 70. Специальное значение 0 отключает переносы строк.