Programación visual

lenguaje que permite crear programas mediante la manipulación de elementos gráficos
(Redirigido desde «Programación Visual»)

El término programación visual (Visual programming language, VPL) refiere a la programación en la que se utiliza más de una dimensión para expresar la semántica.[1]​ Los lenguajes de programación visual permiten a los usuarios crear programas mediante la manipulación de elementos gráficos, en lugar de especificarlos exclusivamente de manera textual.[2]​ Este tipo de lenguajes son muy utilizados en ámbitos educativos[3]​ a través de los denominados entornos de programación por bloques (entre los que se destaca Scratch) que permiten reducir las dificultades que enfrentan los principiantes cuando empiezan a programar. HyperCard de Apple fue probablemente el primer ejemplo de un entorno de programación visual.[4]

Características editar

Este estilo de programación presenta las siguientes características:

  • Visual: los elementos se arrastran y sueltan en el flujo del programa para integrarlos.
  • Orientado a acontecimientos: cada paso del programa comienza cuando ocurre un acontecimiento previamente definido.
  • Imperativo: la programación consiste en una secuencia de comandos.
  • Orientado a objetos: hay objetos individuales con tareas definidas asignadas.[5]

Los programadores suelen utilizar elementos de programación ya definidos, según el lenguaje de programación visual que utilicen. Los elementos de programación están diseñados para encajar como las piezas de un puzle. Si los elementos no encajan lógicamente, el editor lo detecta. Los elementos de programación suelen agruparse en grupos de colores, lo que orienta al usuario a la hora de elegirlos.

Estos pueden registrar textos e imágenes, organizarlos de forma lógica y modificar su apariencia o su expresión. Los elementos de control permiten insertar acciones que dependen de ciertas condiciones.[5]

 
NEPO, es un software de programación libre inspirado en Scratch. Fue creado por el MIT (Massachusetts Institute of Technology).

Programación orientada a objetos editar

  • Define los programas en términos de "clases de objetos", objetos que son entidades que combinan estado (es decir, datos), comportamiento (esto es, procedimientos o métodos) e identidad (propiedad del objeto que lo diferencia del resto). La programación orientada a objetos (OOP) expresa un programa como un conjunto de estos objetos, que colaboran entre ellos para realizar tareas.[6]
  • La OOP facilita el uso de características de un programa en otros, de modo que los programadores no tengan que empezar de cero con cada nuevo programa.[4]
  • La técnica de programación orientada a objetos,[7]​ se basa en fundamentos de diseño, técnicas y metodologías unificadas (UML).
  • Lenguajes visuales como Visual Basic.Net, Borland Delphi, incorporan una completa implementación de la programación orientada a objetos y permiten aprovechar al máximo toda la funcionalidad que ofrecen estos lenguajes para el desarrollo de aplicaciones de gestión.[8][9][10]

Programación por bloques editar

 
Scratch Jr permite programar mediante bloques con íconos, por lo que no es necesario saber leer para usarlo

La programación por bloques o programación orientada a bloques usa una metáfora de "primitiva de programación como pieza de rompecabezas" como una forma de dar indicios visuales al usuario acerca de cómo y dónde pueden ser usadas las instrucciones del lenguaje. Escribir un programa en un entorno basado en bloques consiste entonces en arrastrar y soltar las instrucciones una junto a otra. Si las dos instrucciones no pueden unirse en una declaración válida, entonces el entorno evita que puedan encastrar juntas. De esta forma, los entornos de programación por bloques pueden prevenir errores de sintaxis reteniendo la práctica de crear programas ensamblando las instrucciones una por una.[11]

En estos ambientes predomina el uso del ratón, que se usa para encastrar las instrucciones con otras. Generalmente se da un feedback visual o auditivo informando al usuario si la construcción es válida. Además, hay indicios visuales de cómo usar el bloque: la forma sugiere dónde puede encajar (al principio, dentro de otro, etc), el color indica la categoría de bloque (por ejemplo en Scratch: control, movimiento, etc) y a veces se cuenta con una etiqueta en lenguaje natural que indica qué hace el bloque.[12]

Librerías y entornos de programación por bloques editar

 
"Hola Mundo" en el lenguaje de programación por bloques Scratch

Existen librerías como Blockly que permiten la creación de herramientas de edición de código por bloques. No deben confundirse con los lenguajes de programación por bloques, ya que las librerías son las que aportan la funcionalidad para editar, mientras que los lenguajes definen el conjunto de instrucciones posibles, su sintaxis, etc.

Los editores por bloques son un subconjunto de los llamados "editores estructurados", donde la unidad de trabajo mínima es un nodo del árbol de sintaxis del lenguaje. Esto brinda más flexibilidad que usar bloques funcionales completos y es menos proclive a errores que operar con unidades menores como caracteres.[12]

Algunos entornos de programación por bloques que tienen sus propios lenguajes son Scratch, Scratch Jr, Snap![13]​ y StarLogo[14]​.

Otros editores ayudan a la generación de código para hacer más accesibles plataformas como Android (App Inventor) o Arduino (Hello Blocks![15]​, Ardublock[16]​, ArduinoBlocks[17]​). Open Roberta permite generar código para múltiples plataformas de programación de robots (Arduino, Lego Mindstorms, Micro Bit).

Otra librería de programación por bloques, basada en Blockly, es Roboblocks[18]​, un repositorio de bloques para hacer editores de Arduino.

Programación por bloques en educación editar

En un curso de programación, el objetivo es desarrollar habilidades de resolución de problemas usando programación. Sin embargo, los estudiantes suelen presentar grandes dificultades para entender y aplicar conceptos abstractos en problemas concretos.

Algunas de las razones son las siguientes:[19]

 
PilasBloques, un entorno educativo basado en secuencias didácticas del Ministerio de Educación argentino.
  • La programación demanda un alto nivel de abstacción
  • La programación necesita un buen nivel tanto de conocimientos como de técnicas prácticas de resolución de problemas
  • La programación requiere un estudio muy intensivo y práctico, a diferencia de muchos otros cursos, que son más teóricos
  • Debido a la cantidad de participantes de las clases, es difícil tener un seguimiento personalizado
  • La programación es algo dinámico, pero se enseña con materiales estáticos
  • Cada estudiante puede tener un estilo de aprendizaje diferente
  • La sintaxis de los lenguajes de programación es muy compleja y no está pensada para fines pedagógicos.

La programación basada en bloques fue creada para evitar estos problemas en el aprendizaje, ya que evitan los errores sintácticos, permiten al estudiante desarrollar pensamiento lógico y creativo a través de diversas actividades (juegos, música), y permiten la visualización de la ejecución de los algoritmos.[20]

Existen entornos completos que favorecen el aprendizaje acompañado por secuencias didácticas, como PilasBloques.[21]

Programación por bloques en videojuegos editar

La programación por bloques es un desafío que se ha usado como tema para videojuegos de lógica, como es el caso de Human Resource Machine, y su secuela 7 Billion Humans de Tomorrow Corporation.

En los juegos mencionados se requiere resolver desafíos en una versión en bloques de un lenguaje similar al lenguaje ensamblador que se usa para programar procesadores, en una empresa donde los robots hacen trabajar a los humanos siguiendo instrucciones.[22]

Véase también editar

Enlaces externos editar

  • snapp Archivado el 19 de mayo de 2015 en Wayback Machine. es un sistema de programación visual derivado de Google Blockly
  • Scratch es un lenguaje de programación visual gratuito para jóvenes.
  • Scratch Jr es un lenguaje de programación introductorio visual para niños pequeños (5 a 7 años)
  • Pencil Code es un ambiente de programación visual híbrido (permite ver los bloques y el código)


Referencias editar

  1. Burnett, Margaret M. (1999). Wiley Encyclopedia of Electrical and Electronics Engineering (en inglés). American Cancer Society. ISBN 978-0-471-34608-1. doi:10.1002/047134608x.w1707. Consultado el 7 de mayo de 2020. 
  2. ai, craft. «The maturity of visual programming». craft ai | Explainable AI, as-a-service (en inglés). Archivado desde el original el 13 de abril de 2020. Consultado el 7 de mayo de 2020. 
  3. «program.ar». 
  4. a b BEEKMAN, G. (2005). «Capítulo 14». INTRODUCCIÓN A LA INFORMÁTICA. Sexta edición. PEARSON PRENTICE HALL. p. 526. 
  5. a b «¿En qué consiste la programación visual?». 
  6. «Programación orientada a objetivos con Scratch». 
  7. «qué es la programación orientada a objetos». 
  8. «Scratch». Argentina.gob.ar. 
  9. Pascual, Juan Antonio (13 de diciembre de 2015). «Scratch, programación sencilla y gratis para niños y mayores». ComputerHoy. Consultado el 11 de abril de 2020. 
  10. «Programación por bloques». 
  11. Weintrop, David (24 de julio de 2019). «Block-based programming in computer science education». Communications of the ACM (en inglés) 62 (8): 22-25. ISSN 0001-0782. doi:10.1145/3341221. Consultado el 14 de octubre de 2022. 
  12. a b Weintrop, David; Wilensky, Uri (6 de diciembre de 2017). «Comparing Block-Based and Text-Based Programming in High School Computer Science Classrooms». ACM Transactions on Computing Education (en inglés) 18 (1): 1-25. ISSN 1946-6226. doi:10.1145/3089799. Consultado el 14 de octubre de 2022. 
  13. «Snap! Build Your Own Blocks». snap.berkeley.edu. Consultado el 14 de octubre de 2022. 
  14. «Welcome». www.slnova.org. Consultado el 14 de octubre de 2022. 
  15. «Hello, Blocks!». hello-blocks.com. Consultado el 14 de octubre de 2022. 
  16. «Ardublock | A Graphical Programming Language for Arduino» (en inglés estadounidense). Archivado desde el original el 28 de diciembre de 2016. Consultado el 14 de octubre de 2022. 
  17. «ArduinoBlocks». www.arduinoblocks.com. Consultado el 14 de octubre de 2022. 
  18. RoboBlocks, BQ, 26 de mayo de 2020, consultado el 14 de octubre de 2022 .
  19. Gomes, Anabela; Mendes, António José (14 de junio de 2007). «An environment to improve programming education». Proceedings of the 2007 international conference on Computer systems and technologies. CompSysTech '07 (Association for Computing Machinery): 1-6. ISBN 978-954-9641-50-9. doi:10.1145/1330598.1330691. Consultado el 2 de noviembre de 2022. 
  20. Cárdenas-Cobo, Jesennia; Puris, Amilkar; Novoa-Hernández, Pavel; Parra-Jiménez, Águeda; Moreno-León, Jesús; Benavides, David (2021-01). «Using Scratch to Improve Learning Programming in College Students: A Positive Experience from a Non-WEIRD Country». Electronics (en inglés) 10 (10): 1180. ISSN 2079-9292. doi:10.3390/electronics10101180. Consultado el 2 de noviembre de 2022. 
  21. «Pilas Bloques». pilasbloques.program.ar. Consultado el 2 de noviembre de 2022. 
  22. «Tomorrow Corporation : Human Resource Machine». tomorrowcorporation.com. Consultado el 14 de octubre de 2022.