b'\n_START_ARTICLE_\nGobstones\n_START_PARAGRAPH_\nGobstones\xe2\x80\x8b\xe2\x80\x8b es un lenguaje de programaci\xc3\xb3n dise\xc3\xb1ado para la ense\xc3\xb1anza de ideas b\xc3\xa1sicas de programaci\xc3\xb3n. Fue utilizado por primera vez en una materia de Introducci\xc3\xb3n a la Programaci\xc3\xb3n de la Universidad Nacional de Quilmes en el a\xc3\xb1o 2009. Se diferencia de otros lenguajes dedicados a tal fin, como puede ser Logo, debido a varias caracter\xc3\xadsticas. La m\xc3\xa1s importante es que busca orientar al programador a un pensamiento denotacional (el "qu\xc3\xa9" de los programas), en lugar del tradicional pensamiento operacional (el "c\xc3\xb3mo" o secuencia de instrucciones). Otra de esas caracter\xc3\xadsticas es que el pasaje de este lenguaje a otros utilizados en la industria resulta m\xc3\xa1s sencillo, pues posee conceptos fundamentales comunes a todos los lenguajes (pero con una separaci\xc3\xb3n mucho m\xc3\xa1s clara que en ellos), y por la utilizaci\xc3\xb3n de una sintaxis similar a la de estos. La sintaxis del lenguaje fue dise\xc3\xb1ada para ser similar a lenguajes como C y Java (posee bloques de c\xc3\xb3digo encerrados por llaves, definiciones de procedimientos y funciones, par\xc3\xa1metros por valor, variables exclusivamente locales, etc.)._NEWLINE_Su primera implementaci\xc3\xb3n fue hecha en el lenguaje Haskell, para ser usado en el int\xc3\xa9rprete Hugs a trav\xc3\xa9s de comandos de l\xc3\xadnea, y los resultados se visualizaban exclusivamente en ASCII. Actualmente existen implementaciones en otros lenguajes como Python (denominada PyGobstones) y C++. PyGobstones implementa un ambiente de desarrollo integrado para Gobstones, proveyendo edici\xc3\xb3n del programa, validaci\xc3\xb3n de sintaxis, edici\xc3\xb3n de tableros y algunas otras caracter\xc3\xadsticas adicionales. Es la \xc3\xbanica herramienta que se encuentra activa en su desarrollo._NEWLINE_Su nombre proviene del juego del mismo nombre proveniente de la historia de Harry Potter (cf. http://es.harrypotter.wikia.com/wiki/Gobstones), puesto que en las bolitas son parte fundamental de su universo de discurso.\n_START_SECTION_\nUniverso de Discurso del Lenguaje\n_START_PARAGRAPH_\nGobstones posee tipos primitivos que intentan ser intuitivos, pertenecientes a un universo de discurso dise\xc3\xb1ado especialmente para este lenguaje. Presenta un tablero que posee un elemento activo, denominado "cabezal", que apunta en todo momento a una celda del mismo. El cabezal puede realizar diversas acciones, tales como poner y sacar bolitas de diferentes colores, moverse a otras celdas del tablero y otras. Si el cabezal se mueve a una celda no existente o intenta sacar bolitas de una celda vac\xc3\xada, el programa finaliza de forma anormal._NEWLINE_El lenguaje adem\xc3\xa1s posee una diferenciaci\xc3\xb3n clara entre comandos y expresiones puras. Los comandos describen acciones que realiza el cabezal sobre el tablero, y por lo tanto generan efectos. Las expresiones se limitan solo a denotar valores (no poseen efectos laterales). El usuario puede definir procedimientos (que dan nombre a comandos nuevos) y funciones puras._NEWLINE_El lenguaje no posee entrada y salida de datos. Al final de la ejecuci\xc3\xb3n de un programa Gobstones se visualiza un tablero final que resulta de los efectos descritos en el programa. Esta es una forma de no favorecer el pensamiento operacional, ya que no es sencillo ir viendo los estados intermedios, y as\xc3\xad se minimiza la posibilidad de programaci\xc3\xb3n por "prueba y error".'