Г-н Фаршеклоакин (spamsink) wrote,
Г-н Фаршеклоакин
spamsink

Category:

Топором брились

Жил-был язык Паскаль, в котором Никлаус, да продлятся его дни, Вирт не придумал нормального форматного вывода,
и в первых реализациях языка с помощью встроенной процедуры 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 младшая "цифра" - пробел.

Это, пожалуй, всё, что вы хотели узнать о советских программистах сегодня.

(Справедливости ради: официально наличие этой возможности в документации упомянуто не было.)

This entry was originally posted at https://spamsink.dreamwidth.org/1214377.html. Please comment there using OpenID.
Tags: retrocomputing
Subscribe

  • Это что за орфографические новости?

    В одном ютубовском ролике, который автор стесняется озвучивать голосом, в субтитрах замечены слова вида puttx, poppx, havx, gettx, eatx, gox. Судя…

  • Юникод для новояза

    В списке кодов, предложенных к включению в юникод версии 14: 1AC9..1ACA 2 COMBINING DOUBLE PLUS SIGN ABOVE COMBINING DOUBLE PLUS SIGN BELOW Также…

  • Ни на что не намекаю, просто песенку пою

    Подсадил меня Ютуб в последние дни на песенный конкурс для детей, оставшихся без попечения родителей "Ты супер!" (по-моему, весьма полезное,…

  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

  • 11 comments

  • Это что за орфографические новости?

    В одном ютубовском ролике, который автор стесняется озвучивать голосом, в субтитрах замечены слова вида puttx, poppx, havx, gettx, eatx, gox. Судя…

  • Юникод для новояза

    В списке кодов, предложенных к включению в юникод версии 14: 1AC9..1ACA 2 COMBINING DOUBLE PLUS SIGN ABOVE COMBINING DOUBLE PLUS SIGN BELOW Также…

  • Ни на что не намекаю, просто песенку пою

    Подсадил меня Ютуб в последние дни на песенный конкурс для детей, оставшихся без попечения родителей "Ты супер!" (по-моему, весьма полезное,…