{"id":333,"date":"2022-10-04T11:42:29","date_gmt":"2022-10-04T09:42:29","guid":{"rendered":"http:\/\/quadern-programacio.recursos.uoc.edu\/?page_id=333"},"modified":"2022-10-04T12:04:17","modified_gmt":"2022-10-04T10:04:17","slug":"1-5-lenguajes-y-entornos-para-la-programacion-creativa","status":"publish","type":"page","link":"http:\/\/quadern-programacio.recursos.uoc.edu\/es\/1-5-lenguajes-y-entornos-para-la-programacion-creativa\/","title":{"rendered":"1.5. Lenguajes y entornos para la programaci\u00f3n creativa"},"content":{"rendered":"<p>A la hora de programar, seg\u00fan la tarea que vayamos a realizar, podemos usar un tipo de lenguaje u otro. Al mismo tiempo, muchos lenguajes son capaces de realizar tareas muy diversas, por lo que la elecci\u00f3n de un lenguaje u otro puede ser compleja.<\/p>\n<div class=\"featured featured-grey\"><p>Por ejemplo, JavaScript se ha establecido en el lenguaje por excelencia de la web, pero ello no quita que podamos desarrollar un videojuego en JavaScript o que podamos usar Python para programar una web.<\/p>\n<\/div>\n<div class=\"featured featured-blue\"><p>Por suerte, los <strong>conceptos fundamentales de programaci\u00f3n<\/strong>, que aprenderemos a lo largo de la asignatura, son f\u00e1cilmente transferibles de un lenguaje a otro.<\/p>\n<\/div>\n<figure id=\"attachment_47\" aria-describedby=\"caption-attachment-47\" style=\"width: 600px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" class=\"wp-image-47\" src=\"\/wp-content\/uploads\/2022\/10\/PID_00290094_007.jpg\" alt=\"\" width=\"600\" height=\"361\" srcset=\"\/wp-content\/uploads\/2022\/10\/PID_00290094_007.jpg 800w, \/wp-content\/uploads\/2022\/10\/PID_00290094_007-300x180.jpg 300w, \/wp-content\/uploads\/2022\/10\/PID_00290094_007-768x462.jpg 768w\" sizes=\"(max-width: 600px) 100vw, 600px\" \/><figcaption id=\"caption-attachment-47\" class=\"wp-caption-text\">Figura 7. El algoritmo de conversi\u00f3n de Celsius a Fahrenheit desarrollado en el lenguaje Python<br \/>Fuente: elaboraci\u00f3n propia.<\/figcaption><\/figure>\n<p>En el mundo de la programaci\u00f3n creativa tambi\u00e9n tenemos m\u00faltiples opciones. A continuaci\u00f3n, haremos un repaso por varias de las m\u00e1s populares.<\/p>\n<h3>Lenguajes y librer\u00edas<\/h3>\n<ul>\n<li><strong><a href=\"https:\/\/processing.org\/\" target=\"_blank\" rel=\"noopener\">Processing<\/a><\/strong><strong>. <\/strong>Es uno de los primeros proyectos pensados desde su origen para acercar la programaci\u00f3n a artistas, dise\u00f1adores e interesados sin conocimientos previos. Es un lenguaje basado en Java y que, con el tiempo, ha ido tambi\u00e9n adapt\u00e1ndose a otros lenguajes, como Python con Processing.py o Javascript con Processing.js o P5.js.<\/li>\n<li><strong><a href=\"https:\/\/p5js.org\/\" target=\"_blank\" rel=\"noopener\">P5.js<\/a><\/strong>. Proyecto acogido por la fundaci\u00f3n Processing y con su misma meta: hacer accesible la programaci\u00f3n a artistas y dise\u00f1adores con un enfoque muy did\u00e1ctico. P5.js es una librer\u00eda (pensemos en ello como una extensi\u00f3n) de JavaScript y est\u00e1 pensada para la web. <strong>Es el entorno en el que programaremos a lo largo de la asignatura<\/strong>. Al estar basado en la web, nos facilita la tarea de aprender, ya que no necesitamos descargar nada ni utilizar un editor de texto, sino que podemos hacerlo todo en l\u00ednea.<\/li>\n<li><strong><a href=\"https:\/\/openframeworks.cc\/\" target=\"_blank\" rel=\"noopener\">Openframeworks<\/a><\/strong>.\u00a0Implementado en C++, lenguaje compilado, lo que implica un gran rendimiento a costa de cierta complejidad si queremos aprovechar todas sus capacidades.<\/li>\n<li><a href=\"https:\/\/libcinder.org\/\" target=\"_blank\" rel=\"noopener\"><strong>Cinder<\/strong><\/a>. Tambi\u00e9n implementado en C++, m\u00e1s minoritario que Openframeworks pero similar en sus capacidades.<\/li>\n<\/ul>\n<h3>Entornos gr\u00e1ficos de programaci\u00f3n<\/h3>\n<p>Un tipo de lenguajes que pueden resultar atractivos para quienes se inician en la programaci\u00f3n son los que se engloban dentro del paradigma de los <strong>entornos gr\u00e1ficos de programaci\u00f3n<\/strong>. En estos, en lugar de escribir el c\u00f3digo en un editor de texto, disponemos de elementos gr\u00e1ficos que redistribuimos y conectamos entre s\u00ed para generar los programas. Muchos est\u00e1n pensados como herramientas did\u00e1cticas para la ense\u00f1anza de la programaci\u00f3n, pero otros son usados en entornos profesionales. En muchas ocasiones, tambi\u00e9n permiten escribir c\u00f3digo, combinando una capacidad de prototipado r\u00e1pido utilizando elementos visuales con un control m\u00e1s fino mediante el c\u00f3digo que nosotros creemos.<\/p>\n<ul>\n<li><strong><a href=\"https:\/\/cycling74.com\/products\/max\" target=\"_blank\" rel=\"noopener\">Max-MSP<\/a><\/strong>. Se trata de un entorno con m\u00e1s de treinta a\u00f1os de historia, muy enfocado al mundo sonoro pero que cuenta tambi\u00e9n con grandes capacidades gr\u00e1ficas. Desde hace varios a\u00f1os est\u00e1 integrado como extra en el software de producci\u00f3n musical Ableton Live.<\/li>\n<\/ul>\n<figure id=\"attachment_49\" aria-describedby=\"caption-attachment-49\" style=\"width: 800px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" class=\"size-full wp-image-49\" src=\"\/wp-content\/uploads\/2022\/10\/PID_00290094_008.jpg\" alt=\"\" width=\"800\" height=\"804\" srcset=\"\/wp-content\/uploads\/2022\/10\/PID_00290094_008.jpg 800w, \/wp-content\/uploads\/2022\/10\/PID_00290094_008-150x150.jpg 150w, \/wp-content\/uploads\/2022\/10\/PID_00290094_008-768x772.jpg 768w\" sizes=\"(max-width: 800px) 100vw, 800px\" \/><figcaption id=\"caption-attachment-49\" class=\"wp-caption-text\">Figura 8. El algoritmo de conversi\u00f3n de Celsius a Fahrenheit desarrollado en Max-MSP<br \/>Fuente: elaboraci\u00f3n propia.<\/figcaption><\/figure>\n<ul>\n<li><strong><a href=\"https:\/\/puredata.info\/\" target=\"_blank\" rel=\"noopener\">Pure Data<\/a><\/strong>. Se trata de una escisi\u00f3n de c\u00f3digo abierto de Max-MSP (cualquiera puede descargar y modificar el software). Comparte muchas funcionalidades y la manera de trabajar de Max-MSP, con el atractivo de que su licencia es gratuita al tratarse de un proyecto de c\u00f3digo abierto.<\/li>\n<li><a href=\"https:\/\/vvvv.org\/\" target=\"_blank\" rel=\"noopener\"><strong>VVVV<\/strong><\/a>. Kit de herramientas multiprop\u00f3sito enfocado en el tratamiento de v\u00eddeo en tiempo real e instalaciones multimedia.<\/li>\n<li><a href=\"https:\/\/derivative.ca\/\" target=\"_blank\" rel=\"noopener\"><strong>Touchdesinger<\/strong><\/a>. Nacido a partir del software de creaci\u00f3n 3D Houdini como soluci\u00f3n para trabajar con geometr\u00edas tridimensionales en tiempo real, se ha convertido en una herramienta muy completa para la creaci\u00f3n digital.<\/li>\n<\/ul>\n<h3>Computaci\u00f3n f\u00edsica<\/h3>\n<p>Muchas veces en nuestros proyectos podemos querer implementar sensores, luces, motores u otros elementos que interact\u00faen o reaccionen a nuestros programas. Por ello tambi\u00e9n disponemos de herramientas que nos permiten \u00absalir de la pantalla\u00bb y crear interacciones con elementos f\u00edsicos.<\/p>\n<ul>\n<li><a href=\"https:\/\/www.arduino.cc\/\" target=\"_blank\" rel=\"noopener\"><strong>Arduino<\/strong><\/a>. Naci\u00f3 con el mismo esp\u00edritu de Processing de acercar la programaci\u00f3n a personas con perfiles creativos, pero en este caso aplicado a la electr\u00f3nica. Con Arduino resulta muy sencillo crear proyectos de electr\u00f3nica creativa o implementar sensores y actuadores que agreguen interactividad a nuestros programas.<\/li>\n<li><a href=\"https:\/\/www.raspberrypi.org\/\" target=\"_blank\" rel=\"noopener\"><strong>Raspberry Pi<\/strong><\/a>. Proyecto cuya meta es hacer la computaci\u00f3n accesible a todo el mundo. Por unos 30 \u20ac ofrecen un ordenador completamente funcional en el que podemos ejecutar nuestros programas.<\/li>\n<\/ul>\n<h3>Motores de videojuegos<\/h3>\n<p>Otra categor\u00eda que podemos destacar es la de los entornos para creaci\u00f3n de videojuegos. Podemos pensar en un videojuego como la aplicaci\u00f3n interactiva total (gr\u00e1ficos y sonidos generados en tiempo real, interacci\u00f3n a trav\u00e9s del teclado, rat\u00f3n u otros dispositivos, etc.), por lo que podemos aprovechar todo lo que nos ofrecen y aplicarlo de manera creativa, creando experiencias que vayan m\u00e1s all\u00e1 que un simple juego. Estos entornos tambi\u00e9n suelen venir preparados para muchas tareas que en otros lenguajes u entornos pueden resultar tediosas de realizar, como podr\u00edan ser la realidad virtual o aumentada. Podemos pensar en estos como en editores de 3D (Cinema4D, 3D Studio, Blender, etc.) que nos permiten trabajar en tiempo real e incluir programas que controlen los comportamientos de los distintos elementos.<\/p>\n<ul>\n<li><a href=\"https:\/\/unity.com\/\" target=\"_blank\" rel=\"noopener\"><strong>Unity 3D<\/strong><\/a>.\u00a0Entorno de creaci\u00f3n de videojuegos con multitud de adeptos, desde estudios independientes a grandes compa\u00f1\u00edas. Tiene una gran comunidad detr\u00e1s y muchos recursos de aprendizaje disponibles. Dentro de Unity podemos programar tanto en Javascript como en C#.<\/li>\n<li><a href=\"https:\/\/www.unrealengine.com\/\" target=\"_blank\" rel=\"noopener\"><strong>Unreal Engine<\/strong><\/a>. Otro entorno con gran popularidad, pero con una curva de aprendizaje algo m\u00e1s compleja. En Unreal Engine podemos programar con C++.<\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>A la hora de programar, seg\u00fan la tarea que vayamos a realizar, podemos usar un tipo de lenguaje u otro. Al mismo tiempo, muchos lenguajes son capaces de realizar tareas muy diversas, por lo que la elecci\u00f3n de un lenguaje u otro puede ser compleja. En el mundo de la programaci\u00f3n creativa tambi\u00e9n tenemos m\u00faltiples [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":[],"acf":[],"_links":{"self":[{"href":"http:\/\/quadern-programacio.recursos.uoc.edu\/es\/wp-json\/wp\/v2\/pages\/333"}],"collection":[{"href":"http:\/\/quadern-programacio.recursos.uoc.edu\/es\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"http:\/\/quadern-programacio.recursos.uoc.edu\/es\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"http:\/\/quadern-programacio.recursos.uoc.edu\/es\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"http:\/\/quadern-programacio.recursos.uoc.edu\/es\/wp-json\/wp\/v2\/comments?post=333"}],"version-history":[{"count":4,"href":"http:\/\/quadern-programacio.recursos.uoc.edu\/es\/wp-json\/wp\/v2\/pages\/333\/revisions"}],"predecessor-version":[{"id":340,"href":"http:\/\/quadern-programacio.recursos.uoc.edu\/es\/wp-json\/wp\/v2\/pages\/333\/revisions\/340"}],"wp:attachment":[{"href":"http:\/\/quadern-programacio.recursos.uoc.edu\/es\/wp-json\/wp\/v2\/media?parent=333"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}