Un lenguaje de programación educativa (EPL): es un lenguaje de programación que se utiliza principalmente como herramienta de aprendizaje y punto de partida antes de realizar la transición a lenguajes de programación más complejos.
Tipos de lenguajes de programación educativa
Lenguajes ensambladores
Inicialmente, el código de máquina era el único método para programar computadoras. El lenguaje ensamblador fue el primero en desarrollarse, convirtiéndose en una de las familias de lenguajes de programación más antiguas que aún se utilizan en la actualidad. Existen numerosos dialectos e implementaciones, cada uno adaptado a una arquitectura de procesador de computadora específica . Los lenguajes ensambladores se consideran de bajo nivel y más difíciles de usar, ya que no tienen tipos y son rígidos. Con fines educativos, se han desarrollado dialectos simplificados de lenguajes ensambladores para que la codificación sea más accesible para los principiantes.
Los lenguajes de bajo nivel , como el lenguaje ensamblador, deben escribirse para una arquitectura de procesador particular. No se pueden enseñar ni utilizar de manera eficaz de manera aislada del hardware para el que fueron diseñados. A diferencia de los lenguajes de alto nivel , los lenguajes ensambladores educativos requieren alguna forma de representación del procesador, ya sea virtual o física. Los lenguajes ensambladores se utilizan comúnmente para enseñar las operaciones fundamentales de un procesador de computadora.
Little Man Computer (LMC) (1965) es un modelo instructivo de una computadora simple de arquitectura von Neumann . Incluye las características básicas de las computadoras modernas y se puede programar utilizando código de máquina (generalmente en decimal) o ensamblador. El modelo simula un entorno informático utilizando una metáfora visual de una persona (el "Pequeño Hombre") en una habitación con 100 buzones de correo ( memoria ), una calculadora (el acumulador ) y un contador de programas. LMC se utiliza para ayudar a los estudiantes a comprender las funciones básicas del procesador y la gestión de la memoria .
DLX (1994) es una arquitectura de procesador de computadorade conjunto de instrucciones reducido ( RISC ) creada por los desarrolladores clave de los diseños MIPS y Berkeley RISC . DLX es una versión simplificada de MIPS , que ofrece una arquitectura de carga/almacenamiento de 32 bits que se utiliza comúnmente en cursos de arquitectura de computadoras de nivel universitario.
Next Byte Codes (NBC) (2007) es un lenguaje ensamblador simple que se utiliza para programar bloques programables Lego Mindstorms NXT . El compilador NBC produce código de máquina compatible con NXT y es compatible con Windows, macOS y Linux.
Little Computer 3 (LC-3) (2019) es un lenguaje ensamblador con un conjunto de instrucciones simplificado, que permite escribir programas ensambladores moderadamente complejos. Incluye muchas características que se encuentran en lenguajes más avanzados, lo que lo hace útil para enseñar programación básica y arquitectura informática . Se utiliza principalmente en cursos introductorios de informática e ingeniería.
Variantes básicas
BASIC (Beginner's All-purpose Symbolic Instruction Code) se inventó en 1964 para brindar acceso a computadoras a estudiantes no científicos. Se hizo popular en las minicomputadoras durante la década de 1960 y se convirtió en un lenguaje de computación estándar para microcomputadoras a fines de la década de 1970 y principios de la de 1980. Los objetivos de BASIC se centraban en la necesidad de aprender a programar fácilmente:
Sea fácil de usar para principiantes.
Sea interactivo
Proporcionar mensajes de error claros y amigables
Responder rápidamente
No requiere conocimientos de hardware de computadora ni de sistemas operativos.
Lo que hizo que BASIC fuera atractivo para la educación fue el pequeño tamaño de los programas, que podían ilustrar un concepto en una docena de líneas. BASIC sigue siendo frecuentemente autodidacta, con tutoriales e implementaciones.
Microsoft Small Basic es una versión restringida de Visual Basic diseñada como lenguaje de programación introductorio para principiantes. Es intencionalmente minimalista, con solo 15 palabras clave para la funcionalidad básica. Al proporcionar bibliotecas específicas de objetos para temas que interesan a los niños, pueden crear programas tanto para la web como para entornos de escritorio. Por ejemplo, con 6 líneas de código, es posible demostrar un visor de imágenes de red aleatorio utilizando Flickr como fuente. [1] El sistema utiliza elIDE de Microsoft Visual Studio para proporcionar autocompletado y ayuda contextual .
Basic-256 es una versión fácil de usar de BASIC diseñada para enseñar a cualquier persona los conceptos básicos de la programación informática. Utiliza las estructuras de control tradicionales de BASIC ( gosub , bucles for , goto ) para facilitar la comprensión del control del flujo del programa. Tiene un modo gráfico integrado que permite a los niños dibujar imágenes en la pantalla después de unos minutos.
SiMPLE es un sistema de desarrollo de programación que fue creado para proporcionar habilidades de programación sencillas para todos, especialmente para los no profesionales. Es algo así como AppleSoft BASIC . Está compilado y permite a los usuarios crear sus propias bibliotecas de funciones de uso frecuente. "Simple" es un término genérico para tres versiones ligeramente diferentes del lenguaje: Micro-SIMPLE (utiliza solo 4 palabras clave), Pro-SiMPLE y Ultra-SiMPLE (utiliza 23 palabras clave).
Hot Soup Processor es un lenguaje derivado de BASIC utilizado en las escuelas japonesas.
Ch es un intérprete de C / C++ diseñado para ayudar a estudiantes que no son de informática a aprender matemáticas, computación y programación en C y C++. Amplía C con funciones numéricas, de trazado gráfico 2D/3D y de creación de scripts.
Logo es un lenguaje que fue diseñado específicamente para introducir a los niños a la programación. La primera parte del aprendizaje de Logo trata sobre los "gráficos de tortuga" (derivados de los robots tortuga ) utilizados ya en 1969 con el proto-Logo. En las implementaciones modernas, se utiliza un dispositivo de dibujo abstracto, llamado tortuga , para hacer que la programación para los niños sea muy atractiva al concentrarse en hacer gráficos de tortuga . Seymour Papert , uno de los creadores de Logo, fue una figura destacada del construccionismo , una variedad de teorías de aprendizaje constructivistas . Papert argumentó que actividades como la escritura serían aprendidas naturalmente por niños mucho más pequeños siempre que adoptaran una cultura informática. [4] Logo fue diseñado para introducir a los niños a la programación a través de ayudas visuales y conceptos en un currículo centrado en la tecnología, " más importante que empezar a desarrollar intelectualmente desde una edad temprana, es salvarse de un largo período de dependencia durante el cual uno aprende a pensar en el aprendizaje como algo que tiene que ser impartido por un otro más poderoso... Tales niños no se definirían a sí mismos ni permitirían que la sociedad los definiera como intelectualmente indefensos " . [4] Ha sido utilizado por niños de tan solo 3 años y tiene un historial de 30 años de éxito en la educación. Dado que Logo es en realidad una versión simplificada de Lisp con estudiantes más avanzados, se puede utilizar para introducir los conceptos básicos de la informática e incluso la inteligencia artificial. Logo está ampliamente disponible en una variedad de plataformas, tanto en versiones gratuitas como comerciales.
Basado en Scala
Kojo es un entorno de desarrollo de escritorio interactivo desarrollado principalmente para aplicaciones con fines educativos que se ejecuta en Windows , Linux y OS X. Kojo es un entorno de aprendizaje, con muchas características diferentes que ayudan con la exploración, el aprendizaje y la enseñanza de conceptos en las áreas de programación informática y pensamiento crítico , matemáticas y ciencias, arte, música y pensamiento creativo , alfabetización informática e. [5]
Basado en Smalltalk
Como parte del proyecto One Laptop per Child , se ha desarrollado una secuencia de lenguajes basados en Smalltalk, cada uno diseñado para actuar como una introducción al siguiente. La estructura es Scratch, Etoys , Squeak y cualquier Smalltalk . [6]
Cada uno proporciona entornos gráficos que pueden usarse para enseñar no solo conceptos de programación a los niños, sino también simulaciones de física y matemáticas, ejercicios de narración de historias, etc., mediante el uso del aprendizaje constructivo . Smalltalk y Squeak son lenguajes de desarrollo de aplicaciones con todas las funciones que han existido y son muy respetados durante décadas; Scratch es una herramienta de aprendizaje para niños.
Scratch es un lenguaje visual basado en Squeak e implementado en él. Su objetivo es enseñar conceptos de programación a los niños y permitirles crear juegos, vídeos y música. En Scratch, todos los objetos interactivos, gráficos y sonidos se pueden importar fácilmente a un nuevo programa y combinar de nuevas formas. De esa manera, los principiantes pueden obtener resultados rápidos y estar motivados para seguir intentándolo. La comunidad Scratch ha desarrollado y subido más de 3.000.000 de proyectos. [7] Está desarrollado por el grupo Lifelong Kindergarten [8] en el MIT Media Lab .
Etoys se basa en la idea de entidades virtuales programables que se comportan en la pantalla de la computadora. Etoys proporciona un entorno de creación de contenido multimedia con un modelo de objetos con scripts simple y potente para muchos tipos de objetos creados por los usuarios finales. Incluye gráficos 2D y 3D , imágenes , texto , partículas, presentaciones, páginas web, videos , sonido y MIDI , la capacidad de compartir escritorios con otros usuarios de Etoys en tiempo real , por lo que se pueden realizarmuchas formas de tutoría y juego inmersivos a través de Internet . Es multilingüe y se ha utilizado con éxito en Estados Unidos , Europa , Sudamérica , Japón , Corea , India , Nepal y otros lugares. El programa está dirigido a niños de entre 9 y 12 años. [9]
Pascal es un lenguaje diseñado por Niklaus Wirth en 1970 aproximadamente con el objetivo de enseñar programación estructurada. [12] Desde finales de los años 1970 hasta finales de los años 1980, fue la opción principal en las clases introductorias de informática para enseñar programación a los estudiantes tanto en los EE. UU. como en Europa. Desde entonces, su uso para aplicaciones del mundo real ha aumentado hasta convertirse en un uso generalizado. [13]
Lenguaje basado en Algol que incluye muchas construcciones de Algol. Algol 60 es un subconjunto de Pascal.
Anteriormente popular en el ámbito docente y académico por varias razones:
Fácil de aprender
lenguaje estructurado
Produce programas legibles, eficientes y resistentes a errores.
Se puede compilar en una variedad de plataformas informáticas.
Src:Card es un lenguaje de programación táctil fuera de línea integrado en un juego de cartas educativo .
Niños
AgentSheets y AgentCubes son dos herramientas de pensamiento computacional para crear juegos y simulaciones en 2D y 3D. La creación se realiza a través de aplicaciones de escritorio o aplicaciones basadas en navegador y pueden crear juegos en 2D y 3D que se pueden reproducir en navegadores compatibles con HTML5, incluidos los móviles.
Alice es un software de programación gratuito diseñado para enseñar programación orientada a objetos basada en eventos a niños. Los programadores crean historias interactivas utilizando una interfaz IDE moderna con un estilo de programación de arrastrar y soltar. El público objetivo va desde niños de secundaria hasta estudiantes universitarios. [14] Story Telling Alice es una variante de Alice diseñada para niños más pequeños, con una inclinación aún más fuerte hacia la narración de historias. [15]
Blockly es un lenguaje gráfico de código abierto basado en la web en el que los usuarios pueden arrastrar bloques para crear una aplicación sin necesidad de escribir. Fue desarrollado por Google .
CiMPLE era un lenguaje visual para programar kits robóticos para niños. Fue creado sobre C como un DSL . ThinkLabs, una startup india de educación en robótica, lo creó para el kit robótico iPitara. El lenguaje tenía un gran parecido con el lenguaje C. Al menos una escuela en Bangalore, India, compró el kit iPitara e hizo que sus estudiantes programaran los robots usando CiMPLE. [16] Hay más información disponible en el blog de desarrolladores originales de CiMPLE. [17] [18] Parece que finalmente ThinkLabs cambió a usar "THiNK VPL" como su software de programación visual.
Physical Etoys es una extensión libre y de código abierto de Etoys. Su filosofía es que "ayuda a los niños a explorar su propia creatividad combinando ciencia y arte en un laboratorio infinito". [19] Puede ejecutarse en Windows , Linux y Sugar . Debido a su sistema de scripting por bloques, Physical Etoys permite que diferentes dispositivos electrónicos como Lego NXT ,placas Arduino , Sphero , Kinect y joysticks de Wiimote interactúen entre sí.
Karel , Karel++ y Karel J. Robot son lenguajes orientados a principiantes que se utilizan para controlar un robot simple en una ciudad que consta de una cuadrícula rectangular de calles. Si bien Karel es un lenguaje propio, Karel++ es una versión de Karel implementada en C++ , mientras que Karel J. Robot es una versión de Karel implementada en Java .
Kodu es un lenguaje simple y basado completamente en íconos. Fue creado por Microsoft Research como un proyecto para que los niños más pequeños, y especialmente las niñas, disfruten de la tecnología. Los programas se componen de páginas, que se dividen en reglas, que a su vez se dividen en condiciones y acciones. Las condiciones se evalúan simultáneamente. El lenguaje Kodu está diseñado específicamente para el desarrollo de juegos y proporciona primitivas especializadas derivadas de escenarios de juegos. Los programas se expresan en términos físicos, utilizando conceptos como la visión, la audición y el tiempo para controlar el comportamiento de los personajes. La herramienta Kodu está disponible en tres formatos: para PC como descarga gratuita en versión beta pública y académica, y como descarga económica para Xbox 360 Live.
Logo es un lenguaje educativo para niños diseñado en 1967 por Daniel G. Bobrow , Wally Feurzeig , Seymour Papert y Cynthia Solomon . Hoy en día, el lenguaje es recordado principalmente por su uso de " gráficos de tortuga ", en los que los comandos de movimiento y dibujo producen gráficos de líneas utilizando un pequeño robot llamado " tortuga ". El lenguaje fue concebido originalmente para enseñar conceptos de programación relacionados con Lisp y solo más tarde para permitir lo que Papert llamó " razonamiento sintónico corporal " donde los estudiantes podían comprender (y predecir y razonar sobre) el movimiento de la tortuga imaginando lo que harían si fueran la tortuga. [21]
Lego Mindstorms es una línea de sets Lego que combina bloques programables con motores eléctricos, sensores, bloques Lego y piezas Lego Technic (como engranajes, ejes y vigas). Mindstorms se originó a partir de los bloques de sensores programables utilizados en la línea de juguetes educativos. La primera versión minorista de Lego Mindstorms se lanzó en 1998 y se comercializó como Robotics Invention System (RIS). La versión actual se lanzó en 2006 como Lego Mindstorms NXT . Se utiliza una amplia gama de lenguajes de programación para Mindstorms, desde Logo hasta BASIC y derivados de Java, Smalltalk y C. El enfoque de programación de Mindstorm ahora tiene sitios físicos dedicados llamados Computer Clubhouses .
Mama es un lenguaje educativo orientado a objetos diseñado para ayudar a los estudiantes jóvenes a comenzar a programar, proporcionándoles todos los elementos del lenguaje en su lengua materna. El lenguaje Mama está disponible en varios idiomas, con soporte para direcciones de lenguaje LTR y RTL. Una nueva variante de Mama se construyó sobre el entorno de desarrollo Alice de Carnegie Mellon , que admite la creación de scripts de objetos de escenario en 3D. Esta variante fue diseñada para ayudar a los estudiantes jóvenes a comenzar a programar mediante la creación de animaciones y juegos en 3D. Un documento sobre los principios de programación educativa explica las consideraciones de diseño de Mama. [22]
RoboMind es un entorno de programación educativo sencillo que permite a los principiantes programar un robot. Presenta técnicas de programación populares junto con la robótica y la inteligencia artificial. El robot se puede programar en árabe, chino, holandés, alemán, inglés y sueco.
Scratch es un lenguaje gráfico basado en bloques desarrollado por el MIT.
ScratchJr es un derivado del lenguaje gráfico Scratch. Está diseñado para niños de entre 5 y 7 años.
Stagecast Creator es un sistema de programación visual basado en la programación por demostración . Los usuarios demuestran al sistema qué hacer moviendo íconos en la pantalla y este genera reglas para los objetos (personajes). Los usuarios pueden crear simulaciones bidimensionales que modelan conceptos, juegos de varios niveles e historias interactivas.
Stencyl es un IDE de desarrollo de juegos y programación visual que se ha utilizado en educación y comercio. El concepto de bloques de código que implementa se basa en el lenguaje visual Scratch del MIT (mencionado anteriormente). También permite el uso de código tipificado normal (separado o entremezclado) a través de su propia API y el lenguaje Haxe .
ToonTalk es un lenguaje y un entorno que se parece a un videojuego. Las abstracciones computacionales se asignan a análogos concretos, como robots, casas, camiones, pájaros, nidos y cajas. Admite números enteros grandes y números racionales exactos. Se basa en programación con restricciones concurrentes .
Universidad
Curry es un lenguaje didáctico [23] diseñado para amalgamar los paradigmas de programación declarativa más importantes, a saber, la programación funcional (expresiones anidadas, funciones de orden superior, evaluación diferida) y la programación lógica (variables lógicas, estructuras de datos parciales, búsqueda incorporada). También integra los dos principios operativos más importantes desarrollados en el área de lenguajes de lógica funcional integrados: "residuación" y "estrechamiento". [24] [25]
Flowgorithm es una herramienta de creación gráfica para escribir y ejecutar programas mediante diagramas de flujo . El enfoque está diseñado para enfatizar el algoritmo en lugar de la sintaxis de un lenguaje determinado. El diagrama de flujo se puede convertir a varios lenguajes importantes como C# , Java , Visual Basic .NET y Python . [26]
Oz es un lenguaje diseñado para enseñar teoría de computadoras. Admite la mayoría de los paradigmas principales [27] en un solo lenguaje para que los estudiantes puedan aprender paradigmas sin tener que aprender múltiples sintaxis . Oz contiene de una manera simple y bien factorizada, la mayoría de los conceptos de los principales paradigmas de programación, incluyendo la lógica, la programación funcional (tanto perezosa como ansiosa), la programación imperativa, orientada a objetos, la programación por restricciones, la programación distribuida y la programación concurrente. Tiene un libro de texto canónico , Concepts, Techniques, and Models of Computer Programming (2004), y una implementación estándar disponible de forma gratuita, el Sistema de Programación Mozart . [28]
Processing : un lenguaje dedicado a las obras de arte
Referencias
^ Microsoft Corporation 2009 Guía de inicio rápido para Small Basic, pág. 64.
^ Kenlon, Seth. "Aprenda el lenguaje de programación Lisp en 2021 | Opensource.com". opensource.com . Consultado el 14 de octubre de 2024 .
^ "¿Qué es el lenguaje de programación Lisp (procesamiento de listas)? – Una definición de TechTarget.com". WhatIs . Consultado el 14 de octubre de 2024 .
^ ab Papert, Seymour (octubre de 1980). Redefiniendo la infancia: la presencia informática como experimento en psicología del desarrollo. Tokio, Japón y Melbourne, Australia: 8º Congreso Mundial de Informática: Congreso IFIP.
^ "Acerca de Kogics Kojo" . Consultado el 12 de febrero de 2011 .
^ Cavallo, David (28 de mayo de 2007). "Aprendiendo a usar Squeak desde cero". One Laptop Per Child News . Consultado el 3 de abril de 2009 .
^ Mitchel Resnick; John Maloney; Natalie Rusk; Evelyn Eastmond; Amon Millner; Jay Silver; Eric Rosenbaum; Karen Brennan; Amos Blanton. "Scratch: imagina, programa, comparte". Instituto Tecnológico de Massachusetts . Consultado el 8 de enero de 2013 .
^ "Descripción general del grupo ‹ Jardín de infancia permanente". MIT Media Lab . Consultado el 8 de octubre de 2024 .
^ Ducasse, Stéphane (2005). Squeak: Aprenda a programar con robots (Tecnología en acción). Apress. pp. 289 en el cap. 24: Un recorrido o eTOY . ISBN1-59059-491-6.
^ Kay, Alan. "La historia temprana de Smalltalk". Archivado desde el original el 29 de abril de 2011. Consultado el 13 de septiembre de 2007 .
^ Hemmendinger, David. "Pascal". Enciclopedia Británica, 5 de abril de 2024, https://www.britannica.com/technology/Pascal-computer-language. Consultado el 12 de junio de 2024.
^ "Pascal - Wiki de Free Pascal". wiki.freepascal.org . Consultado el 11 de octubre de 2024 .
^ "Acerca de – Alice" . Consultado el 7 de octubre de 2024 .
^ "Cuentos de Alice – Alice" . Consultado el 7 de noviembre de 2023 .
^ EducationWorld (21 de septiembre de 2012). «ThinkLABS RoboLAB». EducationWorld . Consultado el 8 de octubre de 2024 .
^ Blog original de desarrolladores de CiMPLE Archivado el 21 de julio de 2011 en Wayback Machine
^ "ThinkLABS -". web.archive.org . 20 de septiembre de 2012 . Consultado el 9 de octubre de 2024 .
^ "EToys físicos - Descripción general del proyecto". Tecnodata .{{cite web}}: CS1 maint: estado de la URL ( enlace )
^ "Hackety Hack". GitHub . Consultado el 9 de octubre de 2024 .
^ HL ModTech (23 de enero de 2018). Programación de logotipos: lección 1 de Turtle Academy . Consultado el 9 de octubre de 2024 a través de YouTube.
^ Principios de programación educativa de Mama
^ M. Hanus. Enseñanza de la programación funcional y lógica con un único modelo computacional. En Proc. Noveno Simposio Internacional sobre Lenguajes de Programación, Implementaciones, Lógicas y Programas (PLILP'97), págs. 335-350. Springer LNCS 1292, 1997.
^ "Informe Curry, Introducción". Archivado desde el original el 4 de octubre de 2009.
^ Hanus, M. (1994). "La integración de funciones en la programación lógica: de la teoría a la práctica". Journal of Logic Programming . 19&20: 583–628.
^ "Acerca de". Flowgorithm . Consultado el 26 de agosto de 2014 .
^ Afiche de Paradigmas de programación
^ "Sistema de programación de Mozart". mozart2.org . Consultado el 25 de octubre de 2024 .