Pregunta

Yo estaba leyendo un poco sobre el lenguaje de programación + HQ9 ( http://esolangs.org/wiki/HQ9 , http://en.wikipedia.org/wiki/HQ9%2B y http://www.cliff.biffle.org/esoterica/hq9plus.html), y me dice algo sobre lo que se denomina 'acumulador', que puede ser incrementado, pero no puede acceder. Además, el uso del + no manipula el resultado:

código

H+H

resultado

Hello World
Hello World

¿alguien puede explicar cómo funciona este, lo que hace esto y si es que tiene algún sentido? Gracias

¿Fue útil?

Solución

Después de haber escrito un aplicación , creo que puedo decir sin duda que hace no tiene ningún sentido en absoluto. Le aconsejo que se preocupe de él; que es un lenguaje muy tonto después de todo.

Otros consejos

Es una broma.

También hay una extensión orientada a objetos de HQ9 +, llamado HQ9 ++. Tiene un nuevo ++ comando que crea la instancia de un objeto, y, por razones de compatibilidad hacia atrás, también incrementa el registro acumulador dos veces. Y de nuevo, ya que no hay manera de almacenar, recuperar, acceder, manipular, imprimir o afectar de otro modo un objeto, es completamente inútil.

Después de haber completado recientemente una implementación en Clojure (que sigue) Puedo decir con seguridad que el acumulador es absolutamente esencial para una implementación exitosa de HQ9 +. Sin ella sólo quedaría con una implementación de HQ9 que, aunque sin duda digno de por sí, es claramente diferente, y por lo tanto HQ9 + sin un acumulador, y la instrucción para incrementarlo, lo haría por lo tanto no será una implementación de HQ9 +.

( Nota del editor: Bob ha tomado sus medicinas hoy, pero bastante no han pateado en todavía, por lo tanto, una explicación más detallada es quizás necesita Lo que creo que Bob está tratando de decir es que HQ9 + es inútil como la programación. idioma, per se, sin embargo, implantando en realidad puede ser útil en el contexto de aprender cómo poner en práctica algo con éxito en un nuevo lenguaje OK, voy a ir y acurrucarse en silencio en la parte posterior del cerebro de Bob ahora y dejar que se. volver a hacer ... lo que sea que hace cuando no estoy importando de la tienda ... ).

De todas formas ... implementación en Clojure sigue:

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

Tenga en cuenta que esta aplicación sólo acepta comandos pasados ??a la función como parámetros; no se lee un archivo para su programa. Esto se puede remediar en futuras versiones. También señalan que se trata de una aplicación "estricta" de la lengua - la página original (en el Wayback Machine ) muestra claramente que deben ser aceptadas sólo MAYÚSCULAS 'de H y' Q de, a pesar de que implica que las letras minúsculas también puede ser aceptada. Ya que parte del punto de aplicación de cualquier lenguaje de programación es estrictamente se adhieren a la especificación como por escrito esta versión de HQ9 + está escrito para aceptar sólo las letras mayúsculas. Si surge la necesidad Estoy totalmente preparado para fundar una religión, tentativamente llamado la convocatoria de los CAPS SANTOS LOCK, que declaran el uso de mayúsculas a ser comandado por Fred (nuestro dios - Fred - parece como una amigable nombre para un dios, ¿no?), y se considere el uso de letras minúsculas a ser anatema ... es decir, para ser aNATEMA!

Compartir y disfrutar.

Se incrementa algo no accesible, sin especificación definida, y al parecer no muy utilizado aún. Yo diría que se puede implementar sin embargo que usted quiere o posiblemente no en todos.

La respuesta correcta es aquella que ha sido insinuado por las otras respuestas, pero no del todo se indique explícitamente:. El efecto de incrementar el acumulador está definido por la especificación del lenguaje y la izquierda como una opción de la aplicación

En realidad, yo estoy equivocado.

El acumulador es el registro a la que se almacena el resultado del último cálculo. En un Intel x86, cualquier registro puede especificarse como el acumulador, excepto en el caso de MUL.

Fuente:

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

Me ha sorprendido la primera vez que visité el tercer sitio en su cuestión de saber un compañero de escuela mío escribió la implementación OCaml en la parte inferior de la página.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top