vak: (Улыбка)
[personal profile] vak
В дебрях сети обнаружились симулятор и примеры языка Эль-76:
http://web.archive.org/web/20030710092032/www.mstu.ru/studies/Others/War/IlbrusLanguage-emul.rar
http://web.archive.org/web/20030710091904/www.mstu.ru/studies/Others/War/IlbrusLanguage-docs.rar

Спасибо [livejournal.com profile] oboguev за наводку.  Язык в целом очень похож на Алгол-68, но семантически отражает особенности архитектуры Эльбруса: полиморфные операции, аппаратная защита массивов и т.п.  Переложил примеры в свою копилку.  Так выглядит обработка списков:
программа
  процедура печатьэл = проц(ф32 эл) начало
    ф32 к;
    для к от 1 до эл[0] цикл печать(эл[к]) повторить
  конец;
  процедура печатьсп = проц(ф32 список) начало
    если не естьпусто список то
      печатьэл(список[0]);
      печатькс();
      печатьсп(список[1])
    все
  конец;
  процедура добавсп = проц(ф32 список, знач) начало
    если не естьпусто список[1] то
      добавсп(список[1], знач)
    иначе
      ф32 с;
      список[1] := лок вект [2] ф32;
      с := список[1];
      с[0] := знач
    все
  конец;
  процедура вариант1 = проц(ф32 список) начало
    если не естьпусто список то
      ф32 слово := список[0];
      если слово[0] > 1 то
        ф32 слово2 := лок вект [слово[0] + 1] ф32, к;
        слово2[0] := 1;
        слово2[1] := слово[1];
        для к от 2 до слово[0] цикл
          если слово[к] <> слово[1] то
            слово2[0] := слово2[0] + 1;
            слово2[слово2[0]] := слово[к]
          все
        повторить;
        список[0] := слово2;
        вариант1(список[1])
      все
    все
  конец;
  процедура вариант2 = проц(ф32 список) начало
    если не естьпусто список то
      ф32 слово := список[0],
          слово2 := лок вект [слово[0]*2 + 1] ф32,
          к;
      слово2[0] := слово[0]*2;
      для к от 1 до слово[0] цикл
        слово2[к*2 - 1] := слово[к];
        слово2[к*2] := 0
      повторить;
      список[0] := слово2;
      вариант2(список[1])    все
  конец;
  ф32 список := лок вект [2] ф32;
  ф32 слово;
  слово := лок вект [4] ф32;
  слово[0] := 3;
  слово[1] := 3;
  слово[2] := 2;
  слово[3] := 3;
  добавсп(список, слово);
  слово := лок вект [7] ф32;
  слово[0] := 6;
  слово[1] := 7;
  слово[2] := 4;
  слово[3] := 7;
  слово[4] := 2;
  слово[5] := 3;
  слово[6] := 7;
  добавсп(список, слово);
  слово := лок вект [5] ф32;
  слово[0] := 4;
  слово[1] := 2;
  слово[2] := 2;
  слово[3] := 1;
  слово[4] := 2;
  добавсп(список, слово);
  печатьсп(список[1]);
  печатькс();
  вариант1(список[1]);
  печатьсп(список[1])
конец

Date: 2013-01-05 08:12 (UTC)
From: [identity profile] spamsink.livejournal.com
Я из Эль-76 помню, что там были циклы "спискомдо" и "цепьюдо", но что такое "цепьюдо" - не помню.

Date: 2013-01-05 08:40 (UTC)
From: [identity profile] spamsink.livejournal.com
Стоп-бит - это признак конца списка? Что же тогда "спискомдо" делает по концу списка?

Date: 2013-01-06 01:27 (UTC)
From: [identity profile] spamsink.livejournal.com
Вообще, книжка далеко не образец ясного и понятного текста.

Что есть, то есть. :)

Date: 2013-01-05 12:37 (UTC)
From: [identity profile] winpooh.livejournal.com
Звучит как какие-то восточные единоборства.

Date: 2013-01-05 13:59 (UTC)

Date: 2013-01-05 17:00 (UTC)
From: [identity profile] oboguev.livejournal.com
"Цепьюдо" -- это когда подразделение разворачивается в цепь и с автоматами Калашникова наперевес выдвигается до указанного рубежа.
Edited Date: 2013-01-05 17:02 (UTC)

Date: 2013-01-06 01:29 (UTC)
From: [identity profile] spamsink.livejournal.com
В уставной системе команд была такая команда?

Date: 2013-01-06 03:38 (UTC)
From: [identity profile] spamsink.livejournal.com
Досадно, но что уж поделать - не писать же новый, если запускать на нем нечего.

Date: 2013-01-05 08:51 (UTC)
From: [identity profile] raydac.livejournal.com
wayback клевая штука, но и иногда опасная ))) как то там нашел доку которую одна японская контора опубликовала по неосторожности, а потом решила убрать из публичного доступа, а было поздно, снимок в wayback оказался

Date: 2013-01-05 17:48 (UTC)
From: [identity profile] oboguev.livejournal.com
> если не естьпусто

Свято место пусто не бывает!

Никогда не мог понять использования русских слов в качестве языковых значков. Казалось бы, русским дано огромное богатство, которого нет даже у американцев и англичан -- English as a foreign language -- огромный набор легко распознаваемых иероглифов с абстрактным, обесполченым и неконтаминированным значением. Бери и пользуйся. Нет, обязательно млечный путь нужно назвать молочным.
Edited Date: 2013-01-05 17:51 (UTC)

Date: 2013-01-06 00:11 (UTC)
From: [identity profile] b0p0h0k.livejournal.com
Лет несколько назад был на лекции Дона, нашего, Кнута "Прекурсоры Фортрана".
Впечатлило, как он, обсуждая некий язык, созданный в ИПМе под командованием Баяковского, писал на доске фрагменты программы с русскими служебными словами, не заглядывая в шпаргалку.
Кстати, русское издание Первого Тома он мне тоже подписал по-русски.

Date: 2013-01-07 06:23 (UTC)
From: [identity profile] panchul.livejournal.com
Черт возми, действительно алголоподобный язык.
Мда, я ожидал чего-нибудь более экзотического.

Date: 2013-01-14 01:49 (UTC)
From: [identity profile] panchul.livejournal.com
Языков с динамическими типами есть до фига - например Dylan, которым я интересовался в 1995 году.

Они все реализуются достаточно эффективно если делать глобальный анализ всей программы компилятором (а не только анализ per compilation unit).

Date: 2013-01-14 03:35 (UTC)
From: [identity profile] panchul.livejournal.com
Отнюдь. На функции, входящие в OC API можно ставить специальные #pragma, чтобы они рассматривались оптимизатором как black box который требует специального протаскивания параметров с тагами типов. Это будет медленно но hopefully редко.

Date: 2017-01-27 01:18 (UTC)
From: [personal profile] ygam
Я использовал кусок этого кода в юнит-тесте для динамической компиляции: что делать, если нам задали язык, который мы не умеем компилировать?