Вопрос

Я просто немного читал о языке программирования 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 внизу страницы.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top