{"id":421,"date":"2017-12-18T22:43:54","date_gmt":"2017-12-18T21:43:54","guid":{"rendered":"http:\/\/blog.uclm.es\/grupochico\/?page_id=421"},"modified":"2017-12-18T22:43:54","modified_gmt":"2017-12-18T21:43:54","slug":"angela-visualizacion-multidimensional-de-programas-y-algoritmos-mediante-realidad-mixta","status":"publish","type":"page","link":"https:\/\/blog.uclm.es\/grupochico\/proyecto-iapro\/angela-visualizacion-multidimensional-de-programas-y-algoritmos-mediante-realidad-mixta\/","title":{"rendered":"ANGELA: Visualizaci\u00f3n multidimensional de programas y algoritmos mediante Realidad Mixta"},"content":{"rendered":"<h2>Introducci\u00f3n<\/h2>\n<p>El aprendizaje de la programaci\u00f3n mediante representaciones gr\u00e1ficas, con mayor o menor nivel de abstracci\u00f3n, es un campo en el que se est\u00e1 trabajando desde hace m\u00e1s de 25 a\u00f1os. La finalidad principal de estos trabajos es lograr reducir el nivel de abstracci\u00f3n que requiere la programaci\u00f3n para as\u00ed facilitar su comprensi\u00f3n. Las capacidades cognitivas del ser humano est\u00e1n optimizadas para procesar informaci\u00f3n de manera multimodal (visual, t\u00e1ctil y auditiva), y, sin embargo, los programas inform\u00e1ticos se suelen presentar de manera textual (una dimensi\u00f3n), desaprovechando as\u00ed toda la potencia de nuestro cerebro<\/p>\n<p>El uso de ciertas tecnolog\u00edas emergentes permite una interacci\u00f3n multimodal, facilitando as\u00ed el aprendizaje activo. Entre los distintos dispositivos que ofrecen este tipo de interacciones, cabe destacar aquellos que integran capacidades de Realidad Mixta. \u00c9stos proporcionan un entorno de aprendizaje natural donde las acciones del estudiante en el mundo f\u00edsico repercuten en el virtual.<\/p>\n<p>Esto supone poder ampliar las capacidades de los sistemas tradicionales de aprendizaje de la programaci\u00f3n. Para ello, es necesario definir nuevas t\u00e9cnicas de representaci\u00f3n gr\u00e1fica y nuevas arquitecturas que permitan manipularlas.<\/p>\n<p>As\u00ed, en esta p\u00e1gina se introduce ANGELA (not<strong>A<\/strong>tio<strong>N<\/strong> of road si<strong>G<\/strong>ns to facilitat<strong>E<\/strong> the <strong>L<\/strong>earning of progr<strong>A<\/strong>mming) una notaci\u00f3n gr\u00e1fica basada en la met\u00e1fora de carreteras y se\u00f1ales de tr\u00e1fico utilizada para facilitar el aprendizaje de la programaci\u00f3n a alumnos de asignaturas de introducci\u00f3n a la programaci\u00f3n. Las representaciones pueden ser visualizadas tanto en 2D como 3D, e incluso mediante un dispositivo de Realidad Mixta que utilice el espacio del entorno f\u00edsico del usuario para ubicar y alinear la visualizaci\u00f3n en tiempo real. La elaboraci\u00f3n de estas visualizaciones (conjuntos de representaciones gr\u00e1ficas) se realiza de forma autom\u00e1tica mediante la implementaci\u00f3n de un plugin para Eclipse integrado en <a href=\"http:\/\/blog.uclm.es\/grupochico\/proyecto-iapro\/collece-2-0\/\"><strong>COLLECE-2.0<\/strong><\/a>, dotando as\u00ed a este entorno de nuevas capacidades de visualizaci\u00f3n de programas.<\/p>\n<h2>Notaci\u00f3n gr\u00e1fica<\/h2>\n<p>Las representaciones propuestas se plantean mediante una abstracci\u00f3n o met\u00e1fora basada en carreteras y se\u00f1ales de tr\u00e1fico. Este conjunto de carreteras y se\u00f1ales de tr\u00e1fico permiten visualizar el flujo de ejecuci\u00f3n de un programa de forma natural para el usuario, al encontrarse este familiarizado con ellas en su vida diaria.<\/p>\n<p>Cada una de estas representaciones se encuentran asociadas directamente a ciertas sentencias del lenguaje. El conjunto de sentencias a visualizar es lo suficientemente rico como para poder representar cualquier programa con ellas. Sin embargo, no se hace distinci\u00f3n entre los tipos de bucles, como los cl\u00e1sicos \u201cfor\u201d, \u201cwhile\u201d y \u201cdo \u2026 while\u201d, y sus distintas variantes, sino que todos ellos se engloban en una \u00fanica representaci\u00f3n, abstrayendo as\u00ed al usuario de los detalles de implementaci\u00f3n del lenguaje.<\/p>\n<p>La notaci\u00f3n permite representar tanto la estructura de los programas (visualizaci\u00f3n est\u00e1tica) como la ejecuci\u00f3n de estos (visualizaci\u00f3n din\u00e1mica). En el primer caso, el objetivo de la visualizaci\u00f3n est\u00e1 orientado a facilitar la comprensi\u00f3n del conjunto de sentencias que forman el programa. En el segundo caso, la visualizaci\u00f3n permite realizar el seguimiento de la ejecuci\u00f3n de un programa, a modo de depurador interactivo.<\/p>\n<p>As\u00ed, las representaciones gr\u00e1ficas que conforman la notaci\u00f3n ANGELA obedecen a distintas naturalezas en funci\u00f3n de su prop\u00f3sito, atendiendo a la taxonom\u00eda anterior. A\u00a0continuaci\u00f3n, y en base a la siguiente imagen de la notaci\u00f3n en su versi\u00f3n 2D y 3D, se procede a explicar cada una de las representaciones gr\u00e1ficas propuestas:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-696 size-large\" style=\"border: none;background: none\" src=\"https:\/\/blog.uclm.es\/grupochico\/wp-content\/uploads\/sites\/41\/2019\/07\/angela-comparativa-2d-vs-3d-visualizations-1024x392.png\" alt=\"\" width=\"956\" height=\"366\" srcset=\"https:\/\/blog.uclm.es\/grupochico\/wp-content\/uploads\/sites\/41\/2019\/07\/angela-comparativa-2d-vs-3d-visualizations-1024x392.png 1024w, https:\/\/blog.uclm.es\/grupochico\/wp-content\/uploads\/sites\/41\/2019\/07\/angela-comparativa-2d-vs-3d-visualizations-300x115.png 300w, https:\/\/blog.uclm.es\/grupochico\/wp-content\/uploads\/sites\/41\/2019\/07\/angela-comparativa-2d-vs-3d-visualizations-768x294.png 768w, https:\/\/blog.uclm.es\/grupochico\/wp-content\/uploads\/sites\/41\/2019\/07\/angela-comparativa-2d-vs-3d-visualizations-1536x589.png 1536w, https:\/\/blog.uclm.es\/grupochico\/wp-content\/uploads\/sites\/41\/2019\/07\/angela-comparativa-2d-vs-3d-visualizations-2048x785.png 2048w, https:\/\/blog.uclm.es\/grupochico\/wp-content\/uploads\/sites\/41\/2019\/07\/angela-comparativa-2d-vs-3d-visualizations-500x192.png 500w\" sizes=\"auto, (max-width: 706px) 89vw, (max-width: 767px) 82vw, 740px\" \/><\/p>\n<ol>\n<li><strong>Definici\u00f3n de funci\u00f3n<\/strong>: este tipo de representaciones se basa conceptualmente en la se\u00f1al de tr\u00e1fico de salida a poblaci\u00f3n desde autov\u00eda, indicando el inicio de una funci\u00f3n, que ser\u00e1 procedido de otro conjunto de representaciones indicando el cuerpo de la funci\u00f3n y finalmente el retorno de esta. Esta representaci\u00f3n muestra informaci\u00f3n sobre las variables que recibe como argumentos y el propio nombre de la funci\u00f3n.<\/li>\n<li><strong>Sentencia de condici\u00f3n<\/strong>: la representaci\u00f3n muestra una bifurcaci\u00f3n con dos ramas en la cual la rama izquierda supone la ejecuci\u00f3n en caso de que se cumpla la condici\u00f3n a evaluar, mientras que la rama derecha presenta la ejecuci\u00f3n en caso de que no se cumpla dicha condici\u00f3n. Esta representaci\u00f3n muestra informaci\u00f3n sobre la expresi\u00f3n a evaluar y el significado de ambas bifurcaciones en caso de que se cumpla o no la condici\u00f3n.<\/li>\n<li><strong>Sentencia de bucle<\/strong>: esta representaci\u00f3n se basa en una met\u00e1fora de rotondas, donde un veh\u00edculo puede circular indefinidamente y de forma c\u00edclica. Sin embargo, el concepto ha sufrido ciertas modificaciones para mejorar la escalabilidad (ej. soportar sentencias anidadas), haciendo un uso exhaustivo de los distintos carriles de la carretera. Conceptualmente para explicarlo, la visualizaci\u00f3n se interpreta mediante un supuesto veh\u00edculo \u2013que representar\u00eda la ejecuci\u00f3n paso a paso del programa\u2013 que llegar\u00eda a la rotonda por el norte, donde se evaluar\u00eda la condici\u00f3n del bucle. Si esta se cumple, el veh\u00edculo ejecutar\u00eda la iteraci\u00f3n del bucle tomando la segunda salida de la rotonda. Una vez se ha terminado de ejecutar la iteraci\u00f3n, el veh\u00edculo llegar\u00eda esta vez a la rotonda desde el sur, donde se evaluar\u00eda de nuevo la condici\u00f3n. En caso de que esta vez no se cumpla, el veh\u00edculo abandonar\u00eda el bucle tomando la tercera salida. Esta representaci\u00f3n muestra informaci\u00f3n sobre la expresi\u00f3n a evaluar y el significado de ambas bifurcaciones en caso de que se cumpla o no la condici\u00f3n.<\/li>\n<li><strong>Retorno de funci\u00f3n<\/strong>: esta representaci\u00f3n se presenta como una se\u00f1al de tr\u00e1fico que imita a la existente en la realidad y que denota fin de poblaci\u00f3n. Esta representaci\u00f3n muestra el nombre de la funci\u00f3n desde la que est\u00e1 retornando y la variable que devuelve.<\/li>\n<li><strong>Evaluaci\u00f3n de expresi\u00f3n<\/strong>: esta representaci\u00f3n se presenta como un t\u00fanel de carretera junto a una se\u00f1al que contiene la expresi\u00f3n a ejecutar. Con expresiones, nos referimos a asignaciones de variables o invocaciones a funciones, por ejemplo. Estos t\u00faneles se encuentran ubicados sobre las propias carreteras, representando la posici\u00f3n donde se encontrar\u00eda la expresi\u00f3n an\u00e1loga en el programa.<\/li>\n<li><strong>Punto de interrupci\u00f3n<\/strong>: esta representaci\u00f3n se presenta como un cono de tr\u00e1fico que act\u00faa a modo de <em>breakpoint<\/em> cuando la visualizaci\u00f3n se est\u00e1 realizando en modo din\u00e1mico. Estos puntos de interrupci\u00f3n pueden situarse sobre cualquiera de los elementos est\u00e1ticos para pausar la ejecuci\u00f3n del programa a petici\u00f3n del usuario.<\/li>\n<li><strong>Hilo de ejecuci\u00f3n<\/strong>: esta representaci\u00f3n se presenta como un cami\u00f3n que circula por los elementos de la representaci\u00f3n est\u00e1tica del programa. El cami\u00f3n contiene informaci\u00f3n sobre el identificador del hilo de ejecuci\u00f3n al que se refiere, pudiendo existir m\u00e1s de un cami\u00f3n en un contexto de programaci\u00f3n concurrente.<\/li>\n<\/ol>\n<p>Usando estas representaciones gr\u00e1ficas se puede construir la visualizaci\u00f3n tanto est\u00e1tica como din\u00e1mica de cualquier programa inform\u00e1tico. En la secci\u00f3n \u00ab<a href=\"http:\/\/blog.uclm.es\/grupochico\/proyecto-iapro\/angela-visualizacion-multidimensional-de-programas-y-algoritmos-mediante-realidad-mixta\/angela-ejemplos\/\">Ejemplos de visualizaciones con ANGELA<\/a>\u00bb se muestran algunos v\u00eddeos donde se hace uso de la met\u00e1fora propuesta.<\/p>\n<p>[\u00a0<a href=\"http:\/\/blog.uclm.es\/grupochico\/proyecto-iapro\/\">Volver<\/a>\u00a0]<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Introducci\u00f3n El aprendizaje de la programaci\u00f3n mediante representaciones gr\u00e1ficas, con mayor o menor nivel de abstracci\u00f3n, es un campo en el que se est\u00e1 trabajando desde hace m\u00e1s de 25 a\u00f1os. La finalidad principal de estos trabajos es lograr reducir el nivel de abstracci\u00f3n que requiere la programaci\u00f3n para as\u00ed facilitar su comprensi\u00f3n. Las capacidades &hellip; <\/p>\n<p class=\"link-more\"><a href=\"https:\/\/blog.uclm.es\/grupochico\/proyecto-iapro\/angela-visualizacion-multidimensional-de-programas-y-algoritmos-mediante-realidad-mixta\/\" class=\"more-link\">Continuar leyendo<span class=\"screen-reader-text\"> \u00abANGELA: Visualizaci\u00f3n multidimensional de programas y algoritmos mediante Realidad Mixta\u00bb<\/span><\/a><\/p>\n","protected":false},"author":198,"featured_media":0,"parent":351,"menu_order":1,"comment_status":"closed","ping_status":"closed","template":"page-fullwidth.php","meta":{"footnotes":""},"class_list":["post-421","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/blog.uclm.es\/grupochico\/wp-json\/wp\/v2\/pages\/421","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.uclm.es\/grupochico\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/blog.uclm.es\/grupochico\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/blog.uclm.es\/grupochico\/wp-json\/wp\/v2\/users\/198"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.uclm.es\/grupochico\/wp-json\/wp\/v2\/comments?post=421"}],"version-history":[{"count":0,"href":"https:\/\/blog.uclm.es\/grupochico\/wp-json\/wp\/v2\/pages\/421\/revisions"}],"up":[{"embeddable":true,"href":"https:\/\/blog.uclm.es\/grupochico\/wp-json\/wp\/v2\/pages\/351"}],"wp:attachment":[{"href":"https:\/\/blog.uclm.es\/grupochico\/wp-json\/wp\/v2\/media?parent=421"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}