Lenguaje de programación educativo

La versión actual de la página aún no ha sido revisada por colaboradores experimentados y puede diferir significativamente de la versión revisada el 27 de mayo de 2020; las comprobaciones requieren 5 ediciones .

Un lenguaje de programación educativo  es un lenguaje de programación destinado al aprendizaje. Como tal, se desarrollaron lenguajes como BASIC [1] y Pascal [2] . Python [3] surgió del lenguaje ABC desarrollado para el aprendizaje . Un lenguaje popular diseñado específicamente para la educación es LOGO [4] . El entorno lingüístico KuMir [5] se ha desarrollado específicamente para las escuelas rusas . El lenguaje de programación visual Scratch y entornos de programación similares creados en el Instituto Tecnológico de Massachusetts están ganando popularidad [6] .

Requisitos para un lenguaje de programación educativo

El lenguaje de enseñanza debe proporcionar simplicidad, claridad y legibilidad de las estructuras. La flexibilidad excesiva, la sintaxis "permisiva" puede hacer que los programas sean difíciles de entender. Los lenguajes que fomentan el uso de varios "trucos de programación" no son muy adecuados para el aprendizaje [7] . Esto está relacionado con las ventajas de utilizar los lenguajes de la familia Pascal en el proceso educativo sobre los lenguajes tipo C [8] [9] .

Al elegir un lenguaje de programación, factores como su novedad, la eficiencia de implementación (en forma de compilador o intérprete ) no juegan un papel. El factor de prevalencia tiene un significado tanto psicológico (que influye en la motivación de los estudiantes) como práctico (la demanda de conocimientos adquiridos sin necesidad de readiestramiento) [10] .

Un lenguaje de programación educativo debería proporcionar una transición fluida del pseudocódigo a la programación real. La capacidad de utilizar el vocabulario nacional para palabras clave e identificadores puede resultar útil para el aprendizaje [8] .

Una alternativa a los lenguajes de programación complejos de propósito general que requieren relativamente mucho tiempo para aprender pueden ser los minilenguajes simples, en los que, para mayor claridad, hay un ejecutante gráfico , como la tortuga en Logo  : el primero y uno de los más famosos tales lenguajes [11] .

BÁSICO

BÁSICO , ing.  Código de instrucción simbólica de uso múltiple para principiantes: a principios de  los años 60, se convirtió en el primer lenguaje de programación que se generalizó para enseñar a principiantes. Sin embargo, ha recibido duras críticas por no seguir los principios de la programación estructurada y por ser fácil de crear código espagueti . Edsger Dijkstra dijo: “Es casi imposible enseñar buena programación a los estudiantes que han estudiado previamente BASIC. Como aspirantes a programadores, han sufrido una degradación mental irreversible " . Influenciados por esta crítica, los creadores de Basic John Kemeny y Thomas Kurtz ampliaron el lenguaje estructuralmente en 1975 y abandonaron la práctica de usar GOTO . En la década de 1980 crearon una versión actualizada del lenguaje llamada True BASIC [12] . Los dialectos BASIC modernos ampliamente difundidos ( QBasic , Visual Basic ) difieren de esta variante y son de origen microsoft , sin embargo, tienen poco en común con el progenitor, siendo lenguajes de programación estructural bastante modernos [13] . Los siguientes dialectos BASIC se han creado específicamente con fines educativos.

"Visual Basic para Linux " de Gambas [18] también se está introduciendo en la educación escolar . Se encuentra disponible una versión express educativa gratuita de Visual Basic .NET [19] .

Lenguajes de programación declarativos

El lenguaje Logo , nacido entre BASIC y Pascal , fue el primer lenguaje de programación destinado originalmente a la enseñanza de niños . Este lenguaje puede verse como un dialecto de Lisp  , el lenguaje que inició la programación funcional [20] . Aunque este lenguaje es mejor conocido por sus gráficos de tortuga y es considerado como el primero de los ejecutores gráficos , las características de Lisp como el control de secuencia a través de la recursividad y las listas como estructura de datos principal también siguen siendo propiedades de este lenguaje ( inherentemente multiparadigma ).

Aunque Prolog  , el lenguaje que inició la programación lógica , rara vez se considera un lenguaje de aprendizaje principal, es fácil de aprender para aquellos que recién comienzan a aprender programación. Esto se ve facilitado por su enfoque en el pensamiento humano , sintaxis simple y uniforme, y la ausencia de construcciones como ramas o bucles [21] . La facilidad de aprendizaje fue uno de los objetivos de diseño del lenguaje, aunque el lenguaje sigue siendo incomprendido. Una de las razones de la baja prevalencia de Prolog en la educación primaria es la falta de herramientas convenientes para trabajar con gráficos interactivos, que no encaja muy bien en la programación declarativa pura [22] .

El dialecto "académico" moderno de Lisp, el lenguaje Scheme  , se centró originalmente en la educación [23] . Se utiliza en un curso de programación de computadoras tan famoso como " La estructura e interpretación de los programas de computadora ". La publicación de este libro no solo convirtió a Scheme en un lenguaje popular en el entorno universitario, sino que también cambió el enfoque del aprendizaje de la programación [24] . Este lenguaje también se usa en varios libros de texto, como Cómo diseñar programas.» [25] , « Lenguajes de programación: aplicación e interpretación» [26] , « Fundamentos de los lenguajes de programación» [27] y otros Aprender a programar desde cero usando Scheme también es el tema de un libro de Daniel FriedmanThe Little Schemer [28] , publicado por primera vez como The Little Lisper en 1974, fue el comienzo de una especie de trilogía. El primer libro dedicado al lenguaje Racket (un descendiente directo de Scheme), Realm of Racket [29] , también es un libro de texto para niños (sin embargo, este libro también es una versión revisada del libro de texto Land of Lisp [30] , basado en Common Lisp ).

El lenguaje Haskell se ha convertido en un serio competidor de varias versiones de Lisp en los cursos universitarios de programación funcional . Los autores de este lenguaje lo destinaron igualmente para la enseñanza, la investigación científica y las aplicaciones prácticas [31] . Se distingue por el hecho de que es un lenguaje de programación puramente funcional que implementa cálculo lambda tipado , su sintaxis es cercana a la notación matemática tradicional [32] [33] .

En 1991 Geert Smolka , profesor de la Universidad Católica de Lovaina en Bélgica, comenzó el desarrollo del lenguaje multiparadigma Oz . El lenguaje permite escribir programas al estilo de cualquiera de los principales paradigmas de programación comunes : tanto declarativos, como la programación lógica y funcional , como imperativo. Este lenguaje se utiliza como base para el tutorial Conceptos, técnicas y modelos de programación informática .» [34] .

Pascual

Desarrollado como un desarrollo de la línea Algol-60 por Niklaus Wirth , el lenguaje de programación Pascal fue utilizado por el autor desde el principio para un curso de introducción a la programación para estudiantes [2] . Este lenguaje rápidamente comenzó a ganar popularidad en esta capacidad.

Turbo Pascal , Delphi y Free Pascal han sido ampliamente utilizados y continúan utilizándose para enseñar a estudiantes y escolares. El proyecto científico y educativo internacional “Informatics-21” [35] , que se originó en 2002 en la Facultad de Física de la Universidad Estatal de Moscú , fijó como objetivo la introducción del sistema de programación BlackBox Component Builder [36] en la educación rusa , el implementación de Component Pascal , un dialecto de Oberon-2  , una familia de lenguaje Pascal orientada a objetos desarrollada por Wirth. Al igual que otros lenguajes de Niklaus Wirth, se diferencia (incluso del Object Pascal estilo Borland) por el minimalismo.

Idiomas con palabras clave rusas

Para enseñar elementos de programación en el marco de los cursos de informática , se desarrollaron varios lenguajes de programación educativos con palabras clave rusas [37] . En el grupo del académico A.P. Ershov , se desarrolló un enfoque con el estudio de dos lenguajes de programación: uno más simple, destinado principalmente a controlar un ejecutor gráfico, y uno universal más avanzado. Los lenguajes Robik y RAPIRA [13] se desarrollaron como tal pareja . Los principales idiomas educativos rusos son:

Para la formación inicial en programación también se pueden utilizar lenguajes sencillos para el control de ejecutores gráficos, como Cucaracha en el sistema Robotland o Kengurenok Ru [13] .

En Bielorrusia, se ha generalizado un dialecto de un lenguaje algorítmico escolar llamado IntAl . [39]

Véase también

Notas

  1. Andréi Kolesov. Básico: etapas de un largo viaje Archivado el 5 de marzo de 2010 en Wayback Machine (versión del autor del artículo). Publicado con correcciones literarias menores en la revista " Ciencia y Vida ", 2000, N° 10, pp. 18-20.
  2. 1 2 Wirth N. Recuerdos sobre el desarrollo de Pascal (HOPL II), 3.3 Archivado el 22 de diciembre de 2012 en Wayback Machine .
  3. Bill Venners. The Making of Python Archivado el 1 de septiembre de 2016 en Wayback Machine . Una conversación con Guido van Rossum. Parte I. 2003, 13 de enero.
  4. Logo Language Archivado el 24 de abril de 2012 en Wayback Machine en el sitio web de Computer History .
  5. Sistema de programación KuMir → Tutoriales . Consultado el 16 de abril de 2012. Archivado desde el original el 3 de abril de 2012.
  6. Alexander Kazantsev.  Escuela. Ejecutores y Algoritmos  // Formato Linux . - Enero 2010 - N° 126-127 (1) . Archivado desde el original el 11 de septiembre de 2016.
  7. Psicología, 1990 , 1. Introducción, p. 176.
  8. 1 2 Kobilov S. S.  Informática educativa: enfoque del aprendizaje, elección de lenguajes educativos y creación de sistemas de software . – Universidad Estatal de Samarcanda . Archivado desde el original el 26 de marzo de 2014.
  9. ↑ Ensayo de Stolyarov A. V.   "Lenguaje C y formación inicial en programación" Copia de archivo fechada el 10 de mayo de 2012 en Wayback Machine
  10. Lobachev A. A., Kulikova O. V. Elección de un lenguaje para enseñar programación Copia de archivo fechada el 13 de diciembre de 2014 en Wayback Machine , ITO-2008.
  11. Minilenguajes: una forma de aprender los principios de programación (enlace descendente) . Consultado el 16 de abril de 2012. Archivado desde el original el 26 de marzo de 2014. 
  12. Dijkstra Edsger Archivado el 31 de julio de 2012 en Wayback Machine on Computer History .
  13. 1 2 3 Leonov A. G., Pervin Yu. A.  El papel y el lugar del tema "Elementos de programación" en la educación informática escolar general  // Herramientas informáticas en la educación. Informatización de la educación. - San Petersburgo. : TsPO, 1999. - Nº 5 . - S. 14-23 . Archivado desde el original el 9 de febrero de 2019.
  14. James M. Renault.  ¿Quieres aprender a programar? = ¿Así que quieres aprender a programar? / por De inglés. S. Iryupin, V. Cherny. — M .: Alt Linux , 2011. — 320 p. - ISBN 978-5-905167-06-5 . Archivado el 10 de abril de 2012 en Wayback Machine .
  15. Carece, por ejemplo, de procedimientos y funciones . Otro dialecto moderno similar es Basic4GL
  16. David Brin.  Por qué Johnny no puede programar  // Revista Salon . - 2006. - Nº 14 de septiembre . Archivado desde el original el 30 de julio de 2019.
  17. Pequeño básico para principiantes . Consultado el 17 de abril de 2012. Archivado desde el original el 15 de agosto de 2011.
  18. Samarina A. E. El uso de software libre en la educación Copia de archivo del 26 de marzo de 2014 en Wayback Machine ( Universidad Estatal de Smolensk )
  19. Edición Visual Basic Express . Consultado el 17 de abril de 2012. Archivado desde el original el 12 de octubre de 2010.
  20. Seymour Papert . Historia de la computadora. Consultado el 25 de marzo de 2014. Archivado desde el original el 12 de noviembre de 2013.
  21. Shrainer P. A.  Lección 1: Introducción al lenguaje de programación lógica Prolog // Fundamentos de la programación en el lenguaje Prolog . - INTUITO . - ISBN 978-5-9556-0034-5 . Archivado el 26 de marzo de 2014 en Wayback Machine .
  22. Psicología, 1990 , 3. El problema del concepto erróneo: Prólogo, págs. 186-190.
  23. Gerald Jay Sussman y Guy Lewis Steele, Jr. Esquema: Un Intérprete para Cálculo Lambda Extendido. — Laboratorio de IA del MIT. Memorándum de laboratorio de IA AIM-349. Diciembre de 1975. [1] Archivado el 3 de septiembre de 2013 en Wayback Machine de Lambda Papers .
  24. Matthias Felleisen, Robert Bruce Findler, Matthew Flatt, Shriram Krishnamurthi.  La estructura e interpretación del plan de estudios de ciencias de la computación  // Revista de programación funcional. - 2004. - vol. 14. - Pág. 365. Archivado el 11 de mayo de 2008. -doi  : 10.1017/ S0956796804005076 .
  25. Matthias Felleisen, Robert Bruce Findler, Matthew Flatt, Shriram Krishnamurthi.  Cómo diseñar programas . - MIT Press, 2001. - 723 p. — ISBN 9780262062183 . Archivado el 26 de junio de 2018 en Wayback Machine .
  26. Shriram Krishnamurti.  Lenguajes de Programación: Aplicación e Interpretación . Archivado el 3 de diciembre de 2013 en Wayback Machine .
  27. Daniel P. Friedman, Mitchell Wand. Fundamentos de los lenguajes de programación. 3ra edición. - MIT Press, 2008. - 432 p. — ISBN 9780262062794 .
  28. Daniel P. Friedman, Matthias Felleisen. El pequeño intrigante. - MIT Press, 1996. - ISBN 978-0-262-56099-3 .
  29. Matthias Felleisen, David Van Horn, Conrad Barski et al.  Realm of Racket: ¡Aprende a programar, un juego a la vez!  - Prensa sin almidón, 2013. - ISBN 978-1-59327-491-7 . Archivado el 7 de octubre de 2018 en Wayback Machine . Copia archivada (enlace no disponible) . Consultado el 26 de marzo de 2014. Archivado desde el original el 7 de octubre de 2018. 
  30. Conrado Barski.  Land of Lisp: ¡Aprende a programar en Lisp, un juego a la vez!  - No Starch Press, octubre de 2010. - 504 p. — ISBN 978-1-59327-281-4 . Archivado el 13 de diciembre de 2017 en Wayback Machine .
  31. Jones, Simón Peyton.  Prefacio _ El informe Haskell 98 . Grupo de trabajo Haskell 98 (2002). Consultado el 4 de abril de 2009. Archivado desde el original el 16 de marzo de 2009.
  32. Felipe Wadler.  Por qué calcular es mejor que maquinar  // Avisos ACM SIGPLAN. - 1987. - Págs. 83-94. Archivado desde el original el 31 de mayo de 2014.
  33. Richard Bird. Introducción a la Programación Funcional con Haskell. 2ª edición. - Prentice Hall, 1998.  - Pág. 66.
  34. Peter Van Roy, Seif Haridi. Conceptos, técnicas y modelos de programación informática. - MIT Press, marzo de 2004. - ISBN 0-262-22069-5 .
  35. Proyecto científico y educativo internacional Informática-21 . Fecha de acceso: 26 de marzo de 2014. Archivado desde el original el 29 de marzo de 2014.
  36. Tkachev F.V.  Aprendiendo a programar: una perspectiva rusa  // Lenguajes de programación modular. Lecture Notes in Computer Science 2789. - Springer-Verlag, 2003. - pp. 69-77 . Archivado desde el original el 24 de septiembre de 2015.
  37. Gorodnyaya L.V. Informática  escolar // Marchuk A.G.   Andrey Petrovich Ershov: un científico y una persona. - Novosibirsk: Editorial de la SO RAN, 2006. - 503 p. - (Ciencia de Siberia en rostros). - ISBN 978-5-7692-0819-5 .
  38. Varsanofiev D. V., Kushnirenko A. G. , Lebedev G. V.  E-workshop: software para el curso escolar de informática y tecnología informática // Herramientas y sistemas de microprocesador . - 1985. - Nº 3 . - S. 27-32 .
  39. PMK "Curso básico de informática" (enlace inaccesible) . Consultado el 31 de agosto de 2020. Archivado desde el original el 4 de febrero de 2020. 

Literatura

Enlaces