8 заметок с тегом

айрхеология

«ВАМПИР»

Я не очень-то интересуюсь гештальт-терапией, поэтому всё, что я про неё знаю, мне рассказал больше десяти лет назад один мой старый приятель. С его слов, гештальт — это незавершённые поступки, которые хочется завершить. А терапия каким-то образом помогает это сделать.

Одному из моих гештальтов в этом определении почти 30 лет — в начале 90-х у нас в семье не было своего компьютера и мы ходили в гости к нашему родственнику, у которого был самосборный «Радио-86РК». Там у меня был первый опыт отладки чужой программы — игры «ВАМПИР», написанной на «Бейсике», которая никак не хотела запускаться.

Игру удалось починить и возможно поэтому она мне так запомнилась, что через много лет мне захотелось её найти и сыграть. Тем более, что эмуляторов «Радио-86РК» в наше время, как грязи.

Но не тут-то было, никаких следов игры «Вампир» для этого компьютера в интернете не нашлось. Сюжет я худо-бедно помнил — в этой текстовой игрушке нужно было бродить по комнатам и убивать вампира, кроме того, в «дневниках жизни» нашлась фраза из неё: «американская народная игра убей вампира». Правда это никак не помогало найти саму игру.

Шли годы, я без особой надежды регулярно гуглил эту игрушку, но она никак не находилась.

«HUNT THE WUMPUS» By Gregory Yob, рисунок из статьи в «The Best of Creative Computing Volume 1», 1976

Но тут недавно, когда я подбирал чего бы мне такого портировать на «Фортран», в списке старых игр на «Бейсике» увидел игру «Hunt the Wumpus» 1972 года и по листингу понял, что передо мной — исходный вариант игры «Вампир», следы которой я до сих пор никак не мог разыскать!

Хоть какая-то реальная зацепка!

Все программы для этого компьютера в те времена набирались вручную из печатных источников — из журналов, возможно из каких-то книг по программированию. Осталось узнать где в те годы напечатали переведённую и адаптированную игру «Hunt the Wumpus» для «Радио-86РК», набрать её в эмулятор и наконец сыграть в неё ещё раз!

 2 комментария    278   8 дн   айрхеология   программирование

Архив программ

Честно сказать, я считаю проект «Архив Интернета» более важным проектом, чем «Википедия», жаль что ему достаётся незаслуженно мало внимания. За 20 лет существования моего сайта, в старых заметках поумирало 100% ссылок и только «Архив Интернета» позволяет понять что когда-то по ним было.

В нём же я нередко ищу старые книги, подшивки газет и прочие бумажные материалы — некоторые издания можно найти в интернете только там. Но кроме этого, как оказалось, там бывают старые компьютерные программы, причём запускаемые прямо в окне браузера!

Препроцессор Ратфора в Фортран, запущенный в ДОСБоксе

Я тут заинтересовался препроцессором «Ратфор», который был разработан в 1970-х — он транслировал си-подобный синтаксис в популярный тогда язык программирования «Фортран». Кстати, Фортран до сих пор встречается в современных математических библиотеках, возможно поэтому и он сам, и «Ратфор» без проблем ставятся из «брю» на «Мак».

Пока гуглил информацию по «Ратфору» (литературы не так уж и много), в «Архиве Интернета» нашёл реализацию, запускаемую в окне браузера под портированным ДОСБоксом. Очень здорово придумано — можно сразу бегло посмотреть требуемое.

 1 комментарий    279   1 мес   айрхеология   программирование   фортран

JUnix

Вкратце: выложил на гитхаб свой старый проект «эмулятора» Линукса, который я писал в 90-е и начале 2000-х

В 90-е мало кто видел потенциал применения ДжаваСкрипта в браузерах, тогда он, в основном, использовался для несложного интерактива — покрасить кнопки при наведении мышкой и прочие задачи того же уровня.

Мне тогда этот язык невероятно нравился, я был в бешеном восторге и такое вот несерьёзное к нему отношение меня очень задевало. Как-то я фантазировал на тему того, что можно было бы такого интересного сделать в браузере, чтобы показать значимость ДжаваСкрипта, и как-то мало-помалу в голову пришла идея запрограммировать эмулятор «Линукса» — я как раз активно изучал эту ОС в те годы.

Эта фантазия меня так увлекла, что примерно год я посвящал ей все вечера, в ущерб учёбе в Университете и личной жизни. Позже я ещё долго возвращался к этому проекту, правда моя активность всё угасала, пока в 2003-м году я не забросил эмулятор окончательно.

Старый, пыльный JUnix в современном браузере. Пришлось немного повозиться, чтобы запустить

Конечно настоящий эмулятор у меня не получился, да я и не пытался его создать, получилась имитация командной строки «Линукса» на том уровне знаний, который у меня был в те годы.

Реализованы кое-какие горячие клавиши, работа с историей и буфером обмена, основные команды (список выводится по команде «?»), перенаправление ввода-вывода, «пайп», работа с переменным, ветвления и циклы, виртуальная файловая система с возможностью написания плагинов и многое другое.

Поскольку шеллом по-умолчанию у меня тогда был tcsh, некоторые конструкции выглядят непривычно, кроме того, ряд команд я просто неправильно понимал и реализовал в соответствии со своими заблуждениями.

В своё время появление этого «эмулятора» понаделало шуму — о нём написали все основные российские сайты про программирование, а я каждый день получал письма от тех, кому понравилась моя игрушка.

Постепенно домен, на котором это всё располагалось, потерялся, а потом со старым винтом умер и бакап сайта. Осталась только копия в «Веб-архиве».

Так бы он там и лежал, но вчера в разговоре Леонидом Кагановым я случайно помянул почивший проект и Леонид, который его моментально вспомнил, предложил забрать сохранившееся с «Веб-архива» и куда-нибудь выложить.

Честно говоря, я и сам давно об этом думал — всё-таки, учитывая сколько души и времени вложено в этот «эмулятор», у меня с ним связано много хороших эмоций.

И вот вчера я наконец выкачал слепок первой попавшейся качалкой, поправил очевидные баги, чтобы всё заработало в современных браузерах — они всё-таки ушли далеко вперёд за это время, немного почистил от мусора и залил на «Гитхаб».

Кстати, если вам нравится в таком копаться, можете посмотреть сколько костылей в то время приходилось городить и как беден был раньше этот ДжаваСкрипт.

Я потестировал кое-какие основные команды, как будто теперь всё работает, но это не точно — всё-таки внутри больше пяти тысяч строк нетривиального кода без юнит-тестов. Интересующихся приглашаю ознакомиться с проектом по ссылкам ниже.

Репозиторий проекта: https://github.com/bolknote/junix.

Сайт проекта, где можно посмотреть всё в действии: https://bolknote.github.io/junix.

 1 комментарий    455   3 мес   javascript   айрхеология   программирование

99 бутылок: Старсет

Семьдесят четвёртый выпуск считалочки «песни о пиве», которую я пишу на разных языках программирования, для разнообразия сделаю на языке родом из СССР. Как-то я мало такому уделяю внимания, а ведь это тоже история!

74. Старсет — язык программирования высокого уровня, разработанный в Институте программных систем РАН в 1991 году. К сожалению, мне не удалось обнаружить компиляторов или интерпретаторов этого языка, и даже упоминания, что они вообще когда-либо были реализованы.

Поэтому программировать пришлось исключительно по описанию языка, почерпнутого из книжки, купленной за двести рублей с рук в интернете.

Книга «Язык программирования Старсет», М. М. Гилула, А. П. Столбоушкин, М., «Наука», 1991

Язык, кстати говоря, небезынтересный — в наличие имеется развитая работа со множествами и свой язык регулярных выражений («образцов»), который может применяться не только на скалярах, но и на множествах! Кроме того имеются операторы, позволяющие распараллеливать вычисления!

Помимо скаляров и множеств, язык поддерживает «классы» — насколько я понял, своеобразные вычисляемые «срезы» множеств по какому-либо условию (вроде того как это делается в numpy), но могу и ошибаться, книга написана очень сухим, академическим языком и иногда вообще не удаётся понять, что имеется ввиду.

Например, попробуйте разобраться в этом отрывке («каноническая запись», как утверждается выше процитированного — это когда отброшены все незначащие нули):

Каноническим числовым представлением нуля будем считать слово 0. В частности, каноническим числовым значением слова 1 является оно само, каноническим представлением слова 2 является слово −6, каноническим представлением слова 3 — слово 67000000000000000.

Я, сколько ни пытался, не смог уловить закономерность.

Программы по внешнему виду сильно напоминают «Паскаль» — совпадают некоторые конструкции и принципы, но, конечно же, есть и вещи, которые сильно отличаются.

Выполнение программы выполняется с первой процедуры и завершается с выходом из неё. Возврат значения из функции (тут она называется «процедура-функция») осуществляется через переменную, совпадающую с именем функции. Все переменные, включая переменную для возврата, должны быть задекларированы в специальном блоке. Скалярные переменные декларируются в секции word, множества — в set, классы — в секции class.

/* Считалочка про пиво на языке «Старсет». Написал Евгений Степанищев */
/* https://bolknote.ru */

Func Бутылки(колво)
    Word: Бутылки, колво;

    Choice
        Case колво = 1 Do Бутылки := '1 bottle' End
        Case колво = 0 Do Бутылки := 'no bottles' End
        Otherwise Do Бутылки := колво^' bottles' End
Endfunc

Proc Песня()
    Word: колво, бутылок;

    колво := 99;
    бутылок := Бутылки(колво);

    While колво > 0 Do
        Write бутылок^' of beer on the wall, '^бутылок^' of beer.';
        колво := колво - 1;
        бутылок := Бутылки(колво);
        Write 'Take one down and pass it around, '^бутылок^' of beer on the wall.';
        Write ''
    End

    Write 'No more bottles of beer on the wall, no more bottles of beer.';
    Write 'Go to the store and buy some more, 99 bottles of beer on the wall.'
Endproc

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

Ещё необычно выглядит операция конкатенации — ^ и повторения строки — ^^. Из-за того, что в языке есть неявные преобразования, можно делать вот такое:

Write 'МА' ^^ '2 раза' /* Будет выведено «МАМА», так  как «2 раза» преобразуется к двойке */

С удовольствием познакомился с языком, благо он не выглядит, как что-то, сделанное «в стол», для «галочки» или исключительно для обучения школьников или студентов.

 Нет комментариев    464   4 мес   99   айрхеология   программирование

ФИДО

Не знаю как кратко объяснить что такое Фидонет (Фидо) тем, кто никогда о нём не слышал. Наверное можно сказать, что это одна из первых социальных сетей, некогда связавшая очень специфичных людей — в те времена, когда интернет ещё не был распространён. Сложность подключения была своеобразным тестом на интеллект, а строгие правила требовали владения социальными навыками, из-за чего многие фидошники до сих пор остаются очень интересными личностями.

В моём случае так получилось, что высокоскоростной доступ к интернету я получил раньше, чем Фидо смогло заинтересовать меня своими преимуществами, поэтому я как-то особо не фанател от этой сети, хотя иногда её читал через ньюс-конференции (погуглите «fido7», это оно).

Самое моё значимое участие в жизни Фидо — как-то я умудрился намертво повесить компьютер с OS/2 своего знакомого, где работал тоссер — программа, обслуживающая один из сегментов казанской сети.

Гипертекстовый векторный фидонет на экране обычного смартфона; используется клиент HotdogEd под Андроид

Для айтишника старой школы, к которой я себя отношу, отсутствие интереса к легендарному Фидонету как-то нетипично. Наверное подсознательно меня это тяготило и неожиданно для себя, под Новый год я под влиянием момента подал заявку на вступление. Опоздал лет на 20, но лучше поздно, чем никогда — подожди я ещё 20 лет и подключаться было бы некуда.

Сегодня заявку одобрили и дали мне поинта (адрес) 2:5020/723.67. Скачал клиента HotdogEd под Андроид, установил ему плагин HotdogEd Fidonet Provider, заполнил настройки из присланного в ответ на заявку письма, и вот я в Фидо.

Для меня названия настроек были настолько не самоочевидны, что я было приуныл, но оказалось, что обязательных всего четыре. Если вдруг тоже захотите подключиться, то указывать надо следующее:

  • «Boss 3D FTN address» — адрес ноды (в моём случае — 2:5020/723)
  • «Your name» — «имя» из ответного на заявку письма
  • «Your 4D FTN address» — ваш поинт-адрес (в моём случае — 2:5020/723.67)
  • «Password» — пароль из письма

Потом останется подписаться на интересующие вас «эхи» (каналы) и можете начинать общаться. Я пока подписался на две локальные и на su.talks — всероссийскую болталку.

Пока причастности к легенде не почувствовал, но гештальт, надеюсь, закрыл.

 13 комментариев    147   2019   айрхеология

«Chomp!»

Игрушка «Chomp!», входящая в состав плеера Cosmo VRML Player — вы играете за акулу, поедающую разное

Где-то в конце девяностых, копаясь в папках популярного тогда браузера компании «Нетскейп», я натолкнулся на игрушку, написанную с использованием VRML — языка для демонстрации трёхмерной интерактивной графики. Сейчас он практически забыт, а в те годы активно пытался завоевать популярность.

С тех пор, в те редкие моменты, когда кто-то из собеседников вспоминал VRML, я рассказывал про ту игру. Всё, что я о ней помнил — играть надо за акулу, которая плавает и что-то там поедает. За все эти годы мне не встретился ни один человек, который бы понимал о чём я говорю.

Иногда я её пытался нагуглить, но без результата, и уже начал думать, что это какое-то ложное воспоминание.

Вчера решил предпринял очередную попытку, гуглил до изнеможения, пока не нашёл где-то упоминание, что компания «Нетскейп» когда-то распространяла свой браузер с вместе с «Cosmo VRML Player».

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

У меня на ноутбуке уже есть виртуализация — «Parallels Desktop» какой-то бородатой версии, так что я просто скачал в интернете первую попавшуюся загрузочную дискету ДОС с поддержкой сидирома, образ «Виндоуз 95» и всё установил.

Потом поставил внутрь «Нетскейп Навигатор 4.04», «Космо Плеер 2.1», «DCOM95», «DirectX 8.0a» и универсальный видеодрайвер. Именно с таким набором ПО всё завелось и довольно шустро заработало.

Файлы передавал через образы, монтируя их в виртуальной среде как сидиром. Оказалось «Дисковая утилита» «Мака» умеет такие образы создавать (только надо выбирать гибридный формат без сжатия).

Всё как я помнил — плавает акула, что-то там ест (рыб и уток). Не захватывающе, но вполне играбельно даже по нынешним временам, портировать на смартфон и можно продавать за небольшую цену.

 4 комментария    44   2018   netscape   айрхеология

99 бутылок: Cmm, интернет-археология

61. Cmm. Язык «Cmm» был разработан в 1992 году компанией «Nombas». Основной идеей языка было упрощение языка «Си», отсюда и название — C minus minus. Официальное руководство говорит, что это «Си, минус объявление типов, минус указатели». Позже язык был переименован в ScriptEase, так как упоминание «Си» отпугивало людей. Язык существовал для ДОСа, Виндоуз, ОС/2 и операционной системы компании «Новелл».

В конце 1995 года компания создала версию скриптового языка для веб-страниц, внедрённую в браузер Нетскейп. Таким образом «Си-минус-минус» был одним из первых языков фронтенда!

Язык действительно простой — типы выводятся из использования, массивы без указания размера, нет явного выделения и освобождения памяти, указателей не видно.

Массивы и строки, хоть и являются указателями (есть даже арифметика с ними), но этого не замечаешь — выглядят, как обычные переменные. Все lvalue передаются по указателю, для передачи по значению есть специальный синтаксис. Забавно, кстати, что точка с запятой не обязательна, прямо как в ДжаваСкрипте.

Остальные отличия от «Си» не столь заметны. Языки почти что близнецы, есть даже ограниченный предпроцессор, да и встроенные функции, в основном, сишные. Язык, видимо, претендовал сразу на несколько ниш, на нишу коммандных оболочек в том числе — в составе предпроцессора есть команда, позволяющая импортировать куски программ, указывая с какой по какую строку производить импорт. Насколько я смог заметить, это широко используется, чтобы внедрять «СиЭмЭм» внутрь шелл-скриптов различных ОС.

// Written by Evgeny Stepanischev, 2017

BottlesPlural(Beer)
{
    switch ( Beer )
    {
        case 0:
            return `no bottles`
        case 1:
            return `1 bottle`
        default:
            sprintf(Bottles, `%d bottles`, Beer)
            return Bottles
    }
}

i = 99
Bottles = BottlesPlural(i)

while ( i > 0 ) {
    printf("%s of beer on the wall, %s of beer.\n", Bottles, Bottles)
    Bottles = BottlesPlural(--i)
    printf("Take one down and pass it around, %s of beer on the wall.\n\n", Bottles)
}

printf("No more bottles of beer on the wall, no more bottles of beer.\n")
printf("Go to the store and buy some more, 99 bottles of beer on the wall.\n")

Если кому-то интересно, в интернете легко гуглятся интерпретаторы языка с описанием. Я брал 32-битный интерпретатор версии 2.11 под Виндоуз. Кстати, под ОС/2 находится и более ранняя — 1.008, выпущенная в 1993 году.

 2 комментария    77   2017   99   айрхеология   программирование

Тег HYPE (Netscape HYPE tag sound)

Скриншот MacOS 9 с открытым окном браузера

Пятнадцать лет назад, ковыряя исходники браузера «Нетскейп», я наткнулся, в частности, на тег HYPE — в интернете того времени писали, что он воспроизводит какой-то звук, но только в старых версиях браузера и не под «Виндоуз». «Мака» у меня тогда не было, как и доступа к «Линуксу» с графическим интерфейсом, поэтому безуспешно поискав по интернету подробности, я исследование забросил.

Сегодня за завтраком, по другому случаю наткнувшись на свою же статью об этом теге, я подумав, что теперь-то в интернете найдётся всё, попробовал разыскать тот самый звук. По-прежнему безуспешно. Есть только несколько чудом сохранившихся страничек, где этот тег упоминается в контексте перечня «пасхальных яиц» «Нетскейпа» и это всё.

Но времена же изменились! Теперь у нас есть виртуализация, образы виртуальных машин и быстрый интернет! Где-то полчаса ушло на поиск и скачивание второй версии «Нетскейпа», готовой виртуалки с девятой «МакОСью», установку всего найденного, разбирательство как всё запускается. Но при вводе заветного тега меня ждало препятствие, к счастью, устранимое — виртуалка заявила, что у меня нехватает какой-то Sound Machine и, вместо проигрывания звука, предложила скачать звуковой файл.

Файл оказался в формате .snd, который нормально открылся и проигрался уже в современном «Маке». Его содержимое — фраза «What is global hypermedia?» (из документа NCSA Mosaic Demo 1993 года, как объясняется на одной из страниц в интернете). Я сконвертировал его в обычный МП3 и, если ваш браузер достаточно современный, можете послушать как звучит тот самый секретный тег:

Кстати, жаль, что я не догадался проиграть его на оригинальном «Макинтоше» в музее Эпл, в Москве. Если представиться случай, обязательно попробую!

 2 комментария    23   2015   html   netscape   айрхеология   программирование