Что такое «аккумулятор» в HQ9 +?
-
03-10-2019 - |
Вопрос
Я просто немного читал о языке программирования HQ9 + ( http://esolangs.org/wiki/hq9. , http://en.wikipedia.org/wiki/HQ9%2B. а также http://www.cliff.biffle.org/esoterica/hq9plus.html. ), и это говорит мне что-то о так называемом «аккумуляторе», которое можно увеличить, но не доступно. Также, используя +
Не манипулирует результатом:
код
H+H
результат
Hello World
Hello World
Может кто-нибудь объяснить мне, как это работает, что это делает, и если это даже имеет смысл? Спасибо
Решение
Написав А.Н. реализация, Я думаю, что могу сказать без сомнения, что это не имеет смысла вообще. Советую вам не беспокоиться об этом; Ведь это очень глупый язык.
Другие советы
Это шутка.
Существует также объектно-ориентированное расширение HQ9 +, называемого HQ9 ++. У этого есть новая команда ++
Что касается объекта, и, по причинам обратной совместимости, также приравляет регистр аккумулятора дважды. И снова, поскольку нет способа хранить, извлекать, доступ, манипулировать, печать или иным образом влиять на объект, это совершенно бесполезно.
Недавно выполнив реализацию в Clojure (который следует) Я могу безопасно сказать, что аккумулятор абсолютно центральный до успешной реализации HQ9 +. Без этого можно было бы оставить с реализацией HQ9, который, хотя, несомненно, достойным в и сам по себе, явно отличается и, следовательно, HQ9 + без аккумулятора, а инструкция по увеличению, НЕТ быть реализацией HQ9 +.
(Примечание редактора: Боб сегодня взял свои лекарства, но они еще не совсем не выгнали; Таким образом, дальнейшее объяснение возможно, возможно, необходимо. То, что я считаю, что Боб пытается сказать, что HQ9 + бесполезный в качестве языка программирования, как SE; Однако реализация на самом деле может быть полезно в контексте обучения, как успешно реализовать что-то на новом языке. Хорошо, я просто пойду и спокойно свернувшись в спину мозга Боба, и пусть он вернется к тому, что все, что он делает, когда я не считаю, что магазин ...).
В любом случае ... Реализация в Cljure следует:
(defn hq9+ [& args]
"HQ9+ interpreter"
(loop [program (apply concat args)
accumulator 0]
(if (not (empty? program))
(case (first program)
\H (println "Hello, World!")
\Q (println (first (concat args)))
\9 (apply println (map #(str % " bottles of beer on the wall, "
% " bottles of beer, if one of those bottles should happen to fall, "
(if (> % 0) (- % 1) 99) " bottles of beer on the wall") (reverse (range 100))))
\+ (inc accumulator)
(println "invalid instruction: " (first program)))) ; default case
(if (> (count program) 1)
(recur (rest program) accumulator))))
Обратите внимание, что эта реализация принимает только команды, переданные в функцию в качестве параметров; Это не читает файл для его программы. Это может быть исправлено в будущих выпусках. Также обратите внимание, что это «строгая» реализация языка - оригинальная страница (на WAPEBAK MACHITE) четко показывает, что только верхний регистр 'ч и' q должен быть принят, хотя это подразумевает что строчные буквы также могут быть приняты. Поскольку часть точки внедрения любого языка программирования состоит в том, чтобы строго придерживаться спецификации, как написано, эта версия HQ9 + записывается только для принятия заглавных букв. Должна ли необходимость возникнуть, я полностью готов найти религию, ориентировочно названную созывом замка святых колпачков, что объявит использование прописных веществ, которые будут командовали Фред (наш Бог - Фред - кажется, что такое дружелюбный Имя для Бога, не так ли?) И будет сочетать использование строчных букв, чтобы быть анафемой ... Я имею в виду, чтобы быть анафемой!
Поделитесь и наслаждайтесь.
Это увеличивает что-то не доступное, не определено, и, по-видимому, не очень даже не использовалось. Я бы сказал, что вы можете реализовать это, однако, что вы хотите или, возможно, совсем не.
Правильный ответ - это то, что он намекал на другие ответы, но не совсем указал явно: эффект увеличения аккумулятора не определен спецификацией языка и оставлен в качестве выбора реализации.
На самом деле, я ошибаюсь.
Аккумулятор - это регистр, к которому сохраняется результат последнего расчета. В Intel X86 любой регистр может быть указан в качестве аккумулятора, кроме случая MUL.
Источник:
http://en.wikipedia.org/wiki/accumulator_(computing)
Я был довольно удивлен, первый раз, когда я посетил третий сайт В вашем вопросе, чтобы узнать, что школьный участок написал реализацию OCAML внизу страницы.