Топором брились
Jun. 2nd, 2021 08:41 amЖил-был язык Паскаль, в котором Никлаус, да продлятся его дни, Вирт не придумал нормального форматного вывода,
и в первых реализациях языка с помощью встроенной процедуры WRITE целые числа можно было выводить только в десятичном виде (а надо в другом - так пиши процедурку сам).
Но хоть была возможность указывать ширину поля для вывода: WRITE(I:N) печатало число I в поле шириной N символов, обрезая старшие разряды или добавляя слева пробелы, а если N=0, то используя ровно столько символов, сколько надо. N могло быть как константой, так и переменной.
И жили-были советские программисты, которым хотелось видеть числа в виде, приближённом к битовому представлению, без необходимости самостоятельно писать процедурки. 16-ричное представление тогда было непопулярно, поэтому выводили в 8-ричном. А как же указывать в каком виде выводить, чтобы не сильно погрешить против стандарта?
А вот как: во-первых, будем считать, что переменная ширина поля для восьмеричных чисел не нужна; во-вторых, если ширина поля сама задана в восьмеричном виде, то и печатать число нужно в том же виде.
Для удобства пользователей в описании языка не предусматривалось никакого способа вводить восьмеричные числа, поэтому советские программисты, незнакомые с языком Си, придумали формат вида {восьмеричные цифры}B.
Ну и написали, реализовали, добавили фичу в компилятор. Пробуем:
Глаза вас не обманывают: у значений -1 и -2 младшая "цифра" - пробел.
Это, пожалуй, всё, что вы хотели узнать о советских программистах сегодня.
(Справедливости ради: официально наличие этой возможности в документации упомянуто не было.)
и в первых реализациях языка с помощью встроенной процедуры WRITE целые числа можно было выводить только в десятичном виде (а надо в другом - так пиши процедурку сам).
Но хоть была возможность указывать ширину поля для вывода: WRITE(I:N) печатало число I в поле шириной N символов, обрезая старшие разряды или добавляя слева пробелы, а если N=0, то используя ровно столько символов, сколько надо. N могло быть как константой, так и переменной.
И жили-были советские программисты, которым хотелось видеть числа в виде, приближённом к битовому представлению, без необходимости самостоятельно писать процедурки. 16-ричное представление тогда было непопулярно, поэтому выводили в 8-ричном. А как же указывать в каком виде выводить, чтобы не сильно погрешить против стандарта?
А вот как: во-первых, будем считать, что переменная ширина поля для восьмеричных чисел не нужна; во-вторых, если ширина поля сама задана в восьмеричном виде, то и печатать число нужно в том же виде.
Для удобства пользователей в описании языка не предусматривалось никакого способа вводить восьмеричные числа, поэтому советские программисты, незнакомые с языком Си, придумали формат вида {восьмеричные цифры}B.
Ну и написали, реализовали, добавили фичу в компилятор. Пробуем:
СИСТЕМА ПАСКАЛЬ ВЕРСИИ 1.7.76
1. _РRОGRАМ МАIN;
2. _VАR I:INТЕGЕR;
3. _ВЕGIN
4. _FОR I := 10 _DОWNТО -10 _DО
5. WRIТЕLN(I, ’ = ’, I:22В)
6. _ЕND.
ПАСКАЛЬ-АВТОКОД 9.(17.05.88)
10 = 12
9 = 11
8 = 10
7 = 7
6 = 6
5 = 5
4 = 4
3 = 3
2 = 2
1 = 1
0 = 0
-1 = 619168481189
-2 = 619168481189
-3 = 6191684811870
-4 = 6191684811870
-5 = 6191684811870
-6 = 6191684811870
-7 = 6191684811870
-8 = 6191684811870
-9 = 6191684811870
-10 = 6191684811870
ВСЕ СДЕЛАНО.
Глаза вас не обманывают: у значений -1 и -2 младшая "цифра" - пробел.
Это, пожалуй, всё, что вы хотели узнать о советских программистах сегодня.
(Справедливости ради: официально наличие этой возможности в документации упомянуто не было.)
no subject
Date: 2021-06-02 04:36 pm (UTC)no subject
Date: 2021-06-02 05:11 pm (UTC)no subject
Date: 2021-06-02 05:26 pm (UTC)no subject
Date: 2021-06-02 05:45 pm (UTC)no subject
Date: 2021-06-02 06:04 pm (UTC)no subject
Date: 2021-06-02 06:15 pm (UTC)В Паскаль-мониторе тоже были, опционально.
no subject
Date: 2021-06-02 06:07 pm (UTC)no subject
Date: 2021-06-02 06:17 pm (UTC)