mar 30 ago 2022 04:09:15 CEST Nuevo curso de programación algo distinto



Introducción


Como ya ha llegado Septiembre, que es lo que para mí y muchas personas es el verdadero comienzo del año, y además ya empiezan a bombardearnos con publicidad de publicaciones por fascículos, de esas de monta tu coche de época, grandes pensadores de la humanidad, o monta tu propio reactor nuclear paso a paso, primer fascículo con uranio de regalo, he decidido organizar una gran cantidad de material que tengo por ahí desperdigado entre cursos que ya he impartido en clase en academias y diverso material propio y crear mi propia publicación o curso que también iré publicando mes a mes como los fascículos. Esta vez será gratis pero algún regalo daré a la gente que lo complete, porque sí, también mandaré ejercicios y cosas así, que si sigues el curso podrás enviarme por correo electrónico.


Así que como buen Septiembre lleno de buenas intenciones esperemos que al menos una o dos personas le parezca interesante la idea.



¿Otro curso de programación?


Bueno, como he dicho sí, otro de los miles o cientos de miles de cursos que hay pero éste es el mío y ya sabéis. ¿Pero por qué ahora? Bueno la historia es que yo ya he dado varios cursos de programación de javascript pero por mi parte, siempre quedaba a disgusto porque los cursos estaban enfocados dentro de programas de ayudas al desempleo bien dentro del SEF o de los fondo FEDER y al final son cursos de semanas donde para nada se puede enseñar realmente a programar, se enseña un lenguaje y muy por encima. Sí es verdad que en algunos cursos los resultados fueron muy buenos pero más bien por la actitud de los estudiantes y/o que muchos de ellos ya traían una base. Pero en cambio, otros fueron un desastre donde creo que los alumnos se fueron peor de lo que llegaron. Bueno, algunos se dieron cuenta que no querían trabajar de programadores cosa que no sé si es bueno o malo. Tal vez les ahorré muchos disgustos futuros.


Bueno, de la frustración de esa época y de que me pidieron un programa este verano, en plan favor a una amistad y que no iba a ser pagado por lo que yo podría probar varias soluciones, lenguajes de programación, etc, pues lo vi como una buena oportunidad. Al final ha sido un verdadero dolor de cabeza, una pérdida de la amistad, ahora recuerdo por qué no hacer cosas gratis a los amigos, y un sufrimiento innecesario.


Pero al menos saqué más o menos adelante lo que se me pedía tirando por una solución que nunca me había esperado y aunque he perdido una amistad he ganado mucho aprendizaje en una herramienta que adoro pero que no pensaba que la iba a acabar usando para programar.


Esto también me ha hecho comprender que aunque de la herramienta de la que voy a hablar es poco conocida es increíble como resuelve cosas con una integración de soluciones que poco he visto en otras y además desde hace muchísimos años. Lo veremos mejor en futuros artículos y por supuesto en el curso.



Cuales son los mejores lenguajes para aprender a programar


Bueno, esto da para muchos artículos, opiniones, etc, pero sí quiero hacer hincapié en algo que ya veo que se está dando cuenta muchos docentes. No sé cual es el mejor lenguaje para empezar a aprender, básicamente porque no hay una única respuesta, pero sí sé cuales no, y eso lo tengo muy claro y son los lenguajes visuales. Personalmente los lenguajes, aunque más bien deberíamos hablar de Entornos de desarrollo visuales. Te miro a ti Scratch, lenguaje que por un lado está muy bien para niños de 5 o 6 años, pero como todo lenguaje o sistema visual te proporciona una capa de abstracción que hace que si alguien o por ti mismo no rompes esa capa de abstracción realmente no sabrás que está pasando. En Scratch, que por cierto, usa un lenguaje de programación que es para mí el mejor para empezar a programar, los niños solo ven unos bloques de colores que cogen y arrastran y el gato (un elemento gráfico que lleva por defecto aunque puedes añadir cualquiera) hace cosas. Pero, ¿realmente, el niño sabe lo que está haciendo? Yo creo que no, entiende cierta lógica, sabe mover bloques pero pierde el verdadero contacto con el sistema.


Por esto, muchos se me echarán a la cabeza pero como digo veo que cada vez hay más gente que piensa como yo y que Scratch puede llegar a ser un verdadero anclaje para aprender a programar realmente.


Y qué lenguajes son recomendables. Bueno, como digo yo para eso hay muchas opiniones que depende de muchos factores, y por si alguien se lo pregunta sí, python es un buen lenguaje para aprender a programar aunque tiene una serie de pegas que hacen que no sea mi favorito ni el que yo recomiendo, pero eso lo veremos en el curso, explicándolo de una forma más detallada.


Qué lenguajes sí recomiendo, la mayoría de los lenguajes derivados de Lisp, lo que se llaman los "dialectos de Lisp". Sobre qué es Lisp, historia y por supuesto que es un "dialecto" hablaré de forma más detenida en el curso.


De ellos diré ahora que Lisp es el segundo lenguaje más antiguo de la historia y a pesar de ello siempre ha estado a la vanguardia y además el 90% de los lenguajes actuales han bebido de él al igual que las ménades bebieron de la copa del dios Baco. Y lo mejor, es que se sigue usando y si sumamos la cuota de mercado de todos ellos hablamos de que Lisp está entre los 10 más usados del mundo.


Al mismo tiempo, para la enseñanza se usa mucho por ser un lenguaje tremendamente simple, más que python, lo que ocurre es que por razones históricas sobre todo en países europeos nunca ha sido muy usado pero en cambio en las universidades de EE.UU es muy habitual que sea el lenguaje de referencia para el aprendizaje. También en colegios e institutos.


Los que más se usan a día de hoy para aprendizaje son Racket y Scheme.[1]


Pero me gustaría explicar como aunque no se use tanto, un gran lenguaje para chavales desde los 8 años o antes es Logo. Es un lenguaje que como dije tiene relación con mi odiado Scratch pero que como lenguaje que se usó mucho en los 80 es una maravilla para aprendizaje como para un uso más habitual y diario. Lo veremos también aunque sea de pasada y os dejaré un muy buen enlace sobre las posibilidades de Logo.[2]



Elisp puede ser una muy buena alternativa


Hay otro dialecto de Lisp que es Elisp. Es un lenguaje totalmente ligado al Editor Emacs[3] y eso hace que sea un problema y a la vez lo hace maravilloso.


Por un lado, el problema es que digamos Emacs a pesar de que tiene una de las comunidades más activas y motivadas que conozco no es de los editores más usados. No es un problema en general para la continuidad del programa pero es una pena que muchas personas se pierdan esta maravillosa obra de software y un grandioso lenguaje de programació como es Elisp.


Elisp es un dialecto de Lisp, como ya he dicho pero que además trae de serie unas funciones especialmente concebidas para tratar texto, buscarlos, seleccionarlo, transformarlo, computarlo, etc, etc, y además también podemos usar herramientas externas directamente desde Elisp. Eso y una gran cantidad de bibliotecas extras que se pueden instalar con el gestor de paquetes que lleva Emacs, hace que sus posibilidades sean increíbles. Por eso podemos hacer desde pequeños programas que nos facilita mucho el tratamiento y gestión de documentos hasta programas como gestores de correo, lectores de noticias, navegadores web, programas de música, y un largo etcetera.


Por todo esto Elisp da una gran cantidad de posibilidades, también para la enseñanza ya que es fácil enseñar con Elisp los fundamentos básicos de la programación y usarlos rápidamente en ejemplos rápidos y prácticos. Además al estar integrado con Emacs aún tenemos más ventajas como veremos a continuación.



Si hablamos de Elisp hablamos de Emacs


Bien como he dicho Elisp está integrado con Emacs y qué es Emacs. Bueno parece fácil, es un editor de texto, pero no. De hecho, el que mucha gente piense eso sobre todo cuando no lo conoce da muchos malentendidos acerca de qué es y qué se puede hacer con Emacs.


Como he dicho Emacs es un software que principalmente actúa como editor y está escrito en C, pero que lleva integrado un lenguaje como Elisp, con el que se puede extender y modificar como con ningún otro programa se puede hacer. Básicamente más que un editor, que lo es, es un interprete de Lisp, en este caso el dialecto ELisp, que como un lenguaje Turing completo que es se puede hacer cualquier cosa.


Además con el tiempo, muchas de las funciones creadas por terceros para Emacs en ELisp, han acabado viniendo por defecto con Emacs sin necesidad de instalar nada más, como por ejemplo pasó con org-mode[4]. Así que tenemos funciones creadas en C, en ELisp e incluso en Common Lisp. Incluso ahora se está trabajando en un framework para que Emacs pueda ejecutar funcionalidades escritas en Python para Qt, y javascript/Vuejs y se plantea que en un futuro vaya integrado para no necesitar instalarlo externamente, pero eso es un asunto futuro que no veremos actualmente ni para este curso.[5]


¿Y qué más nos ofrece Emacs para la enseñanza de programación? Pues como digo Emacs a día de hoy en su versión 28, lleva integradas unas herramientas sumamente útiles para programar en Elisp. Desde coloreador de sintaxis, analizadores de código, ayuda para crear la documentación necesaria, y un muy potente debugger llamado edebug que nos da muchísimas ayudas para entender qué está haciendo exactamente nuestro código, además de que Emacs tiene por defecto una gran cantidad de documentación de las funciones que tiene, por lo que a priori tendríamos que usar poco internet. (spoilers: hay que mirar páginas como reddit y stackoverflow continuamente, pero por otros motivos). También tiene integradas las mismas herramientas pero para la programación en C, por lo que si quisieramos saltar a enseñar/aprender C, también Emacs sería un increíble IDE para ello.


Ya he comentado que Emacs es no solo ese gran desconocido sino que además siendo el Editor/Interprete que hay en UNIX más antiguo de todos, incluso más antiguo que Vim hace que siga habiendo mucha leyenda negra, mitos y mala fama infundada como por ejemplo que es difícil de usar, que para nada es cierto. Así que con el curso también pienso demostrar que Emacs no solo es una buena herramienta para ensañar y aprender programación sino que además es fácil de usar, muy práctico y que una vez que lo vas conociendo llega a ser realmente adictivo.


Esperemos que el curso sirva para alguien y sea útil aunque sea para una o dos personas.


Nos vemos el próximo mes y sigan atentos a éste canal.





[1] Diferencia entre Racket y Scheme

[2] Información sobre el lenguaje de programación Logo

[3] Página Oficial de Emacs

[4] Org-mode es un lenguaje de marcado y además una herramienta muy poderosa que podemos hablar de una killer-app

[5] El nuevo framework para Emacs que permite crear aplicaciones gráficas mucho más complejas



/gemlog/