Pull to refresh
71
32.6
Вадим Румянцев @vadimr

Разработчик аппаратно-программных комплексов

Send message

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

С точки зрения семантики, т.е. понятности для человека, декомпозиция действительно удобна.

Мы же пишем программы для процессора вместе с памятью, а не отдельно от неё. Переменные программы хранятся в памяти. Одна и та же команда процессора, скажем, LDA 10 даст разный результат в зависимости от содержимого памяти по адресу 10. Это даст нам недетерминированный конечный автомат, который ничего не даёт в смысле разговоров об алгоритмах и вычислимости.

Если мы будем рассматривать состояния только самой микросхемы 6502, то для детерминированности тогда и программы надо писать без использования обращений к памяти, а на четырёх регистрах общего назначения (включая SP, который в таком случае будет просто теневой копией X) много не насчитаешь.

В машине Тьюринга память представляется бесконечной лентой.

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

*** Спасибо, кстати, я увидел, что в статье ошибочно регистр PC обозвал SP :) Исправил.

Я не знаю, как они решают этот вопрос. Мейнфреймы – это большие деньги, которые любят тишину. Но современный мейнфрейм IBM технически невозможно эксплуатировать без возобновляемой лицензии на процессорное время, разве не так?

Некоторые из этих организаций в России использовали IBM z до недавнего времени, но санкции США в 2022 усложнили взаимодействие с IBM, а для мейнфрейма это очень важно по причине лицензионной политики.

  1. ECC снижает вероятность ошибки, но не обнуляет её.

  2. Ошибка может произойти в процессоре. Помнится, я читал, что в среднем раз в год микропроцессор процессор даёт единичный сбой из-за действия космического излучения. Процессоры мейнфреймов имеют параллельно работающие функциональные блоки для устранения таких ошибок, x86 нет.

  3. Ошибка может произойти во вводе-выводе, даже с учётом контрольных сумм. Я думаю, каждый имеет опыт чтения мусора с диска. Даже с raid это принципиально возможно в ряде сценариев.

С синхронизацией ВМ ещё проблема в том, что не обязательно ведь в результате ошибки ВМ упадёт. Там может просто измениться какой-нибудь битик в памяти, и фиг это заметит гипервизор.

Человек, поставивший мне минус в карму за "распространение рекламы" после публикации этой статьи, объясни, пожалуйста, своё действие! Это воспринимается как реклама инициальных детерминированных конечных автоматов?

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

Вопрос не в hot swap, а в продолжении работы программы.

но его в вузе не преподают

Скукоживается, скукоживается вузовский кругозор прямо на глазах!

Положа руку на сердце, лямбда-исчисление – далеко не первая вещь, нужная на практике инженеру-программисту. Это тема для аспирантуры, каковой на самом деле и является. Как бы мы с вами его не любили.

Лисп и практическое ФП нам преподавали, этого достаточно для высшего образования.

А откуда взялась неизменная часть памяти?

Если мы рассматриваем правило грамматики, например, для ситуации исполнения машинной команды записи значения 89 из аккумулятора в байт памяти по адресу 1234, то конкретно в этом правиле память за исключением адреса 1234 (и регистра PC) неизменна.

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

Фактически это китайская комната.

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

Это эмблема GNU Common Lisp.

А во многих других странах (например, в Скандинавии) для получения прав необходимо учиться гораздо больше, чем в России, включая курсы контраварийной подготовки. ИЧСХ, я бы однозначно при прочих равных условиях выбрал для себя водителя скандинава, нежели грузина.

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

И это очень важно, потому что в мТ есть такая семантичная вещь, как исполнительное устройство, которое обращается с лентой по определенным операционным правилам. А в грамматике вообще никакой семантики нет, как и в бестиповом лямбда-исчислении (но его в вузе не преподают).

Процессор, как грамматика, конечен и разрешим.

А что такое процессор компьютера, как не порождающая грамматика нулей и единиц на выводах?

Конечная, просто очень большая.

Ну нравится человеку поговорить с умными людьми.

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

Я к тому, что со скобками не должно бы работать. Вы там перестраховались немножко на входе в eval с try.

    if name == 'if':
        return eval(ast[2] if eval(ast[1]) else eval(ast[3]))

Что-то у вас тут со вложенностью eval напутано.

А посмотрел я туда, потому что у вас по синтаксису Лиспа лишние скобки в форме if:

(if (= n 1) (1) (* n (fac (- n 1)))))

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

Так как вы реализовали Лисп-1, то семантика формы (1) заключается в том, чтобы выполнить значение единицы, то есть число 1, как код. Что невозможно.

1
23 ...

Information

Rating
410-th
Location
Санкт-Петербург, Санкт-Петербург и область, Россия
Date of birth
Registered
Activity

Specialization

Project Manager, Software Architect
Lead