Frage

Ich las gerade ein wenig über die HQ9 + Programmiersprache ( http://esolangs.org/wiki/HQ9 , http://en.wikipedia.org/wiki/HQ9%2B und http://www.cliff.biffle.org/esoterica/hq9plus.html), und es sagt mir etwas über einen so ‚Akkumulator‘ genannt, der erhöht werden kann, aber nicht zugegriffen werden. Auch die + mit manipuliert das Ergebnis nicht:

Code

H+H

führen

Hello World
Hello World

Kann mir jemand erklären, wie das funktioniert, was dies tut, und wenn es macht auch keinen Sinn? Dank

War es hilfreich?

Lösung

Nachdem eine schriftliche Implementierung , ich glaube, ich ohne Zweifel sagen kann, dass er macht haupt keinen Sinn. Ich rate Ihnen, sich darüber keine Sorgen; es ist eine sehr dumme Sprache, nachdem alle.

Andere Tipps

Es ist ein Witz.

Es gibt auch eine objektorientierte Erweiterung von HQ9 +, genannt HQ9 ++. Es hat einen neuen Befehl ++ das ein Objekt instanziert, und aus Gründen der Abwärtskompatibilität, erhöht auch das Akkumulatorregister zweimal. Und wieder, da es keine Möglichkeit zum Speichern ist, abzurufen, Zugang, manipulieren, drucken oder auf andere Weise ein Objekt beeinflussen, es ist völlig nutzlos.

Nachdem vor kurzem eine Implementierung in Clojure (was folgt) abgeschlossen Ich kann mit Sicherheit sagen, dass der Akku ist absolut zentrale Bedeutung für eine erfolgreiche Umsetzung von HQ9 +. Ohne sie würde man mit einer Implementierung von HQ9 gelassen werden, die zwar zweifellos würdig an und für sich, deutlich anders ist, und somit HQ9 + ohne einen Akkumulator, und der Befehl, es zu erhöhen, würde also nicht sein eine Implementierung von HQ9 +.

( Anmerkung der Redaktion: Bob hat seine Medikamente heute gemacht, aber sie haben nicht ganz in noch getreten, so wird eine weitere Erklärung vielleicht benötigt Was glaube ich, Bob versucht zu sagen ist, dass HQ9 + ist nutzlos als Programmierung. Sprache, per se, aber deren Umsetzung tatsächlich im Zusammenhang mit Lernen nützlich sein kann, wie in einer neuen Sprache etwas erfolgreich implementieren OK, ich werde gerade jetzt ruhig auf der Rückseite des Bobs Gehirn gehen und rollen sich ein und lassen sie ihn bekommen. zurück zu tun ... was auch immer es ist, er tut, wenn ich nicht den Laden zu kümmern ... ).

Wie auch immer ... Implementierung in Clojure folgt:

(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))))

Beachten Sie, dass diese Implementierung akzeptiert nur Befehle in die Funktion als Parameter übergeben; es liest nicht, eine Datei für sein Programm. Dies kann in zukünftigen Versionen behoben werden. Beachten Sie, dass es sich um eine „strikte“ Umsetzung der Sprache - die ursprüngliche Seite (auf der Wayback Machine ) zeigt deutlich, dass nur 'die H und' UPPER CASE Q sollte, obwohl es akzeptiert bedeutet , dass Kleinbuchstaben kann auch angenommen werden. Da ein Teil des Punktes beliebigen Programmiersprache der Implementierung ist strikt zur Einhaltung der Spezifikation diese Version von HQ9 + geschrieben wird nur geschrieben akzeptieren Großbuchstaben. Sollte die Notwendigkeit Ich bin voll und ganz bereit entstehen, eine Religion zu gründen, vorläufig die EINBERUFUNG DER HEILIGEN CAPS LOCK genannt, die die Verwendung von Großbuchstaben erklären kommandiert von FRED (unser Gott zu sein - Fred - es scheint, wie so ein freundlich Name für einen Gott, nicht wahr?), und wird die Verwendung von Kleinbuchstaben halten sein Anathema ... ich meine, sEIN ANATHEMA!

Teile und genießen.

Es erhöht etwas nicht zugänglich, nicht spezifikations definiert, und anscheinend nicht wirklich selbst verwendet. Ich würde sagen, dass Sie es umsetzen können, wie Sie wollen oder möglicherweise gar nicht.

Die richtige Antwort ist eine, die auf die von den anderen Antworten angedeutet wurde, aber nicht ganz explizit angegeben:. Die Wirkung des Speichers erhöht wird durch die Sprachspezifikation und links als eine Wahl der Umsetzung nicht definiert ist

Eigentlich bin ich falsch.

Der Akkumulator ist das Register, zu dem das Ergebnis der letzten Berechnung gespeichert wird. In einem Intel x86, kann jedes Register als Akkumulator angegeben werden, außer im Fall von MUL.

Quelle:

http://en.wikipedia.org/wiki/Accumulator_(computing)

Ich war ziemlich das erste Mal überrascht Ich besuchte die dritte Stelle in Ihrem Frage, um herauszufinden, ein Schulfreund von mir die OCaml Umsetzung am unteren Rand der Seite geschrieben.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top