Г-н Фаршеклоакин (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

  • Парадоксальное наоборот

    Все (интересующиеся подобными вещами) помнят хрестоматийный ответ на вопрос, сколько людей должно быть в группе, чтобы с вероятностью больше 50%…

  • Занимательная математика

    Посмотрим на числа от 1 до 10. Среди них 4 простых: 2, 3, 5, 7. И во втором десятке, от 11 до 20, тоже 4 простых: 11, 13, 17, 19. Таких четверок…

  • Простенькая задачка

    Бывший сослуживец-американец, ныне живущий в Неваде, на прошлой неделе посещал наши края, и на нашей с ним встрече-прогулке задал задачку: Даны 10…

  • 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

  • Парадоксальное наоборот

    Все (интересующиеся подобными вещами) помнят хрестоматийный ответ на вопрос, сколько людей должно быть в группе, чтобы с вероятностью больше 50%…

  • Занимательная математика

    Посмотрим на числа от 1 до 10. Среди них 4 простых: 2, 3, 5, 7. И во втором десятке, от 11 до 20, тоже 4 простых: 11, 13, 17, 19. Таких четверок…

  • Простенькая задачка

    Бывший сослуживец-американец, ныне живущий в Неваде, на прошлой неделе посещал наши края, и на нашей с ним встрече-прогулке задал задачку: Даны 10…