spamsink: (Default)
Брат нашел в лабазах каменных папку-скоросшиватель примерно 40+летней давности и отсканировал из него несколько страниц.

Read more... )
Собственно текст представляет лишь слабый исторический интерес, а вот кому не лень будет написать (с помощью ИИ, например) программу, которая: поправляет потенциальный завал горизонта; делит изображение на знакоместа; классифицирует символы; усредняет их, делая на ходу поправку на возможный сдвиг глифа в знакоместе; и, наконец, выдает идеализированные глифы?
spamsink: (Default)
Все мы знаем™, что в языке Си есть операторы простого цикла
while (condition) operator;
и
do operator; while (condition);.

Казалось бы хорошо, симметрично: в обоих случаях цикл выполняется, пока условие истинно. А в Паскале не так: в нём есть
while condition do operator;
и

repeat sequence of operators until condition;

Здесь из-за того, что операторные скобки в языке Паскаль - аж целые слова begin/end, пришлось ради избежания постоянного "repeat begin" и "end until" пожертвовать стройностью синтаксиса и сделать repeat/until тоже операторными скобками. Это более или менее понятно.

А вот зачем вот это всё repeat и until вместо уже существующих слов do и while?

Разгадка проста: при компиляции операторов с условными переходами, что if, что while, переход за внутренний оператор надо делать по ложности условия. Вот и repeat-until для удобства автора компилятора сделан так, чтобы переходить назад на начало надо было по ложности условия, и можно без труда переиспользовать процедуру, порождающую код для if и while. А в случае do-while, перед тем, как  использовать процедуру для if, условие инвертировать приходится.

Навеяно развлекательной активностью по пересобачиванию существующего Паскаль-компилятора (угадайте с трех раз, для какой платформы), написанного на самом себе, в Си-компилятор, стремясь не разбираться, как работает кодогенератор. 


spamsink: (Default)
Занёс меня вчера случай в библиотеку Стэнфорда, где я просматривал, ни много ни мало, подшивку журнала "Управляющие системы и машины. Орган Кибернетического центра АН УССР" за 1980 год. Помимо статьи-предмета основного интереса (см. по тегу чуть назад), которая оказалась весьма болтологической (из неё я узнал нового, разве что, официальную расшифровку акронима МАРС: микромодульная, оказывается, архивная система), из всей подшивки меня привлекла ещё всего одна:



Хак, конечно, забавный, но способ реализации рекурсивных процедур на Фортране был и получше. Но зато у тов. Лившица есть публикация.

Кстати говоря, на второй из страниц есть ответ на недавний неявный вопрос про хэш-функции. Их называли "функции рандомизации".
spamsink: (Default)
Почти три года назад я писал про систему нижнего уровня базы данных, которая работала с помощью микрокоманд. За прошедшие три года я с ней практически разобрался, и с точки зрения структуры данных она ничего особенного не представляет. Ну B+tree, ну записи с возможностью фрагментации на экстенты, ну иерархичность. В этом посте речь пойдёт про механизм работы микрокоманд, подобного которому я раньше не встречал. Дальше много технических деталей.

Caveat lector )
spamsink: (Default)
Короче, был такой программист по имени Эдсгер Дейкстра, который вместе с коллегой реально написал за первую половину 1960 года первый в мире компилятор с Алгола-60, по слухам, не имевший ошибок. Но не на таких напал, как мы с [personal profile] vak.
Дело в следующем (много слов) )
spamsink: (Default)
Со мной случилось странное: я стал находиться в ожидании конца шестилетнего эмбарго на публикацию одной нидерландской диссертации, который должен наступить через 6 месяцев.

Интересно, насколько распространена следующая система: независимо от источников финансирования исследования, по результатам которого написана диссертация, если диссертант объявляет о желании издать монографию, то материалы, вынесенные на защиту, не становятся публично доступны немедленно, а на них накладывается эмбарго на определенный срок.

Соберется диссертант с силами и издаст за этот срок - молодец; а если нет, то информация должна быть рано или поздно свободной.
spamsink: (Default)
Я сам не настоящий шахматист, но слышал я, что бывали специальные открытки для игры по переписке (боже, они до сих пор бывают!)

Оказывается, бывали и специальные карточки для программирования по переписке, ради тех, кто жил далеко от компьютера и не имел доступа к перфоратору.



На подобной карточке помещалось довольно много. Умная программа для перевода этих карточек в перфокарты якобы могла догадываться, в каких местах нужно вставлять выбранные ключевые слова.

Желающие могут попробовать запрограммировать на этой карточке какую-нибудь короткую программу: https://ub.fnwi.uva.nl/computermuseum/MarkAlgol.html
spamsink: (Default)
Знаковый для мирового программирования язык Алгол-60 был впервые реализован в том же 1960 году двумя молодыми людьми из Нидерландов на нидерландском же компьютере Electrologica X1 (длина слова 27 бит, адресуемая память 32 Кслова, первоначально у машины было около 4К слов физической памяти).
И так далее для интересующихся )
spamsink: (Default)
50+ лет назад народ печатал полутоновые картинки на алфавитно-цифровых печатающих устройствах таким образом, что издали они выглядели примерно так:



Оттенки серого достигались подбором отдельных символов в светлой части палитры и подбором комбинаций символов, в сумме накрывающих знакоместо в нужных пропорциях, в тёмной части. Искусство наложения символов - утраченный секрет древних цивилизаций, и для его имитации средствами HTML/CSS приходится прибегать к ухищрениям.

Картинка выше сгенерирована только что с помощью аутентичной программы на Фортране из


Или вот ещё примерчик:

spamsink: (Default)
Читаю я описание некой старой ("Рукопись поступила в издательский отдел 29 декабря 1979 года.") советской программы оптимизации графов. В разделе диагностики ошибок, в список которых входят, например, "пустой граф", "обнаружены кратные ребра", "обнаружены петли", "обнаружено висячее ребро" и т. п., вижу "5. ОМЕРЗИТЕЛЬНЫЙ ГРАФ - НЕСВЯЗНЫЙ ГРАФ".

В описательном тексте читаю:

Ошибка 5 фиксируется следующим образом. Выстраивается некоторый максимальный связный фрагмент / IOPT начинает построение фрагмента от корня/. Если найдется хотя бы одна варшина, не принадлежащая этому фрагменту /т.е. если фрагмент не совпадает с исходным графом/, то фиксируется ошибка - мы имеем граф, который принято называть [курсив мой - S.] омерзительным.


Что, правда, что ли? Ищу в интернете "омерзительный граф", получаю ровно один результат:
Раскраски Граф дракула (39 шт.) - скачать или ...

Омерзительный граф дракула раскраска.

Поиск "ugly graph" или "disgusting graph" ничего похожего на несвязность не находит.


Интересно, откуда ноги растут у этой омерзительности?

Замечу заодно, что рукопись была, как видно, напечатана на портативной пишущей машинке, на минимизированной клавиатуре которой не было круглых скобок, и что в издательском отделе сидели идиоты.
spamsink: (Default)
Читая старые - почти 60-летней давности - страницы инструкций по программированию, я наткнулся на забавность.
Представьте себе, что какой-то программе или процедуре передаются входные данные переменной длины, но эта длина указана не явно числом слов (блоков) информации фиксированного размера, а двоичным разрядом-признаком в определённой позиции в каждом слове: 1 - данное слово не последнее, 0 - данное слово последнее.

Так вот, в инструкции, изданной в 1968 году, значение этого разряда сформулировано как признак "еще не конец информационным словам".

Сейчас такое управление ("конец чему"), кроме как в шутку, даже представить себе трудно, по-моему. И я не помню, чтобы даже в моём детстве так говорили.



spamsink: (Default)
Как говорится, вы будете смеяться, но почти за 60 лет оно ещё не сдохло.

Т. е. на БЭСМ-6 практически с самого начала её существования был реализован в качестве стандартного общесистемного ПО калькулятор произвольной точности типа юниксного bc (или, точнее, dc), но интерактивный интерфейс к нему, насколько мне известно, не создавался - видимо, чтобы народ не баловался просто так.

Короче, вычисление квадратного корня из двух с удесятеренной точностью (120 значащих цифр) печатает
+0001+1414213562373095048801688724209698078569671875376948073176679737990732478462107038850387534327641572735013846230912297025

(знак-порядок-знак-мантисса - так им проще было), а упомянутый bc с точностью 121 знак печатает
     1.4142135623730950488016887242096980785696718753769480731766797379907324784621070388503875343276415727350138462309122970249

Такие дела.
spamsink: (Default)
Когда в 1967 году советским вычислительным математикам досталась очень большая (аж до 192 Кб адресуемой памяти, на более ранних, которые они могли видеть, было меньше 50 Кб) очень быстрая (аж до миллиона операций в секунду, на более ранних - не больше 50 тысяч) вычислительная машина, они тут же захотели сделать себе библиотеку программ, полезных для повседневной работы.
программистское )
spamsink: (Default)
Давно ли вы видели блок-схему программы в текстовом виде? Наверное, давно, и забыли как это выглядит.

Так я напомню )
spamsink: (Default)
В этом посте речь пойдёт о забавной конструкции для обработки исключений в одном из диалектов языка Паскаль.

знание языка Паскаль желательно, но не требуется )
spamsink: (Default)
До появления писишек в СССР на больших компьютерах использовались съёмные дисковые накопители (вставляемые в устройства размером со стиральную машину) довольно приличного объёма, вплоть до 100 МГб.

В качестве сокращения для слова "мегабайт" применялось именно буквосочетание "МГб", а не "Мб", ещё аж с 1970-х гг, хотя в других случаях приставка "мега-" сокращалась до М, как, например, в мегаом - МОм, и он никогда не был *МГОм.

Объясните явление.
spamsink: (Default)
Если бы я знал ответ на более или менее ретрокомпьютерный вопрос, который хочу задать, из него могла бы получиться неплохая задачка для олимпиад по лингвистике. А пока это только вопрос в воздух.

дальше интересно не всем )
spamsink: (Default)
При обсуждении машинной графики не всё же всякую математику рисовать! В книге "Машинная графика для системы БЭСМ-Алгол" в качестве примера преобразования графического объекта приведена следующая картинка:

spamsink: (Default)
Из найденных на диске исходных текстов стандартной математической библиотеки АЛГОЛА-60 (библиотечные процедуры хранились в текстовом виде, по-видимому, в силу каких-то особенностей автора системы, и в кодировке, в точности совпадающей с кодировкой перфокарт, т. е. с битом четности, что было довольно неочевидно при поиске интересностей во всех возможных кодировках), одна содержит довольно забавную диагностику об ошибке. Сейчас в такой манере вычислительные библиотеки с пользователями не общаются.
несколько десятков строк на птичьем языке )

Необходимое примечание: Название процедуры ЛАГРАНЖ2 вряд ли имеет отношение к точке Лагранжа L2, по направлению к которой сейчас летит телескоп имени Уэбба.

Profile

spamsink: (Default)
spamsink

May 2025

S M T W T F S
     123
4 567 8910
11121314151617
18 192021222324
25262728293031

Syndicate

RSS Atom

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated May. 21st, 2025 06:12 am
Powered by Dreamwidth Studios
OSZAR »