Aprender-a-programar-con-Python.pdf

Please download to get full document.

View again

of 15
All materials on our website are shared by users. If you have any questions about copyright issues, please report us to resolve them. We are always happy to assist you.
Categories
Published
Aprender a programar con Python: una experiencia docente Andrés Marzal, David Llorens e Isabel Gracia Universitat Jaume I amarzal@lsi.uji.es, dllorens@lsi.uji.es, gracia@lsi.uji.es Resumen La elección del primer lenguaje de programación es un debate recu- rrente entre los docentes universitarios de ingenierı́as informáticas. La Universitat Jaume I ha optado por un
  Aprender a programar con Python: unaexperiencia docente Andr´es Marzal, David Llorens e Isabel GraciaUniversitat Jaume I amarzal@lsi.uji.es ,  dllorens@lsi.uji.es ,  gracia@lsi.uji.es Resumen La elecci´on del primer lenguaje de programaci´on es un debate recu-rrente entre los docentes universitarios de ingenier´ıas inform´aticas. LaUniversitat Jaume I ha optado por una soluci´on poco convencional: enel primer curso de dos titulaciones de ingenier´ıa inform´atica se aprendea programar con Python y C. Python es un lenguaje que est´a en augeen el mundo del software libre y que presenta una serie de caracter´ısticasque lo hacen muy atractivo para ense˜nar a programar. Como material deapoyo hemos escrito un libro de texto (accesible gratuitamente) y desarro-llado un sencillo entorno de programaci´on multiplataforma para Pythonque se distribuye con licencia GPL: el entorno PythonG, formado por unint´erprete interactivo, un editor, un depurador sencillo y una ventana consalida gr´afica. Con el material docente elaborado se facilita la formaci´onautodidacta para cualquiera que quiera aprender a programar desde cero.En este art´ıculo reflexionamos sobre la idoneidad de Python comoprimer lenguaje de programaci´on, describimos la experiencia docente deense˜nar Python y C en primer curso y presentamos el entorno de progra-maci´on PythonG. 1. Introducci´on Hace a˜nos hab´ıa un claro consenso en el mundo acad´emico acerca del len-guaje de programaci´on con el que ense˜nar a programar: Pascal. Era consideradoelegante y sencillo, a la vez que ofrec´ıa soporte para el paradigma de programa-ci´on imperante: la programaci´on estructurada. Son pocos los que a´un consideran seriamente que Pascal sea adecuado y no faltan razones: las deficiencias del Pas-cal est´andar, que obligan a usar variantes dialectales incompatibles entre s´ı; laausencia de modularidad para ayudarse en el desarrollo de software de medioy gran tama˜no; la falta de apoyo a paradigmas de programaci´on como la pro-gramaci´on orientada a objetos; su escas´ısima presencia en el mundo empresarial(exceptuando la de alg´un derivado de Pascal, como Delphi) o en el desarrollode software libre...En el entorno acad´emico se opta hoy por diferentes lenguajes para introducira los estudiantes en la programaci´on. Es corriente optar por C, C ++  o Java, ym´as raramente por otros como Modula-2, Ada o Scheme. Quienes optan porlenguajes como Modula-2 o Ada lo hacen principalmente por su elegancia y porel soporte que dan a ciertos aspectos de la programaci´on: modularidad, chequeo1  Figura 1:  El entorno de programaci´on PythonG. est´atico de tipos, etc. Scheme, un derivado de Lisp, forma parte del curr´ıculumde algunas universidades estadounidenses (en buena medida gracias al libro deAbelson  et al.  [1]) y permite una aproximaci´on funcional a la programaci´on,aunque los paradigmas imperativo y orientado a objetos sean hoy dominantes.Mucho se puede criticar de C (y cualquiera que haya programado en C puedeescribir un tratado sobre ello), pero frente a una visi´on puramente acad´emica dela programaci´on, C contrapone su fuerte presencia en   el mundo real  . Quienesconsideran que C no resulta un buen primer lenguaje de programaci´on perosiguen con la mirada puesta en   el mundo real  , se decantan generalmente porC ++  o Java, atractivos por su orientaci´on a objetos y fuerte implantaci´on en laindustria.Dos titulaciones de inform´atica de la Universidad Jaume I hacen una apues-ta diferente: en primer curso no se ense˜na un lenguaje de programaci´on, sinodos, Python y C. 1 Python no s´olo es un lenguaje acad´emicamente interesante,muy expresivo y con una sintaxis limpia y sencilla: es, adem´as, un lenguaje yapresente y con mucho futuro en   el mundo real  . Los lenguajes de  script   (len-guajes interpretados de muy alto nivel, como Perl y Python) gozan de crecienteimportancia e implantaci´on en el mundo del software libre. Pero Python no essuficiente para abordar el contenido de muchas asignaturas que requieren unlenguaje de programaci´on de sistemas, ni para colmar los conocimientos pr´acti-cos de programaci´on en el curr´ıculum de un inform´atico. Una vez han aprendidoa programar con Python, los alumnos pasan a estudiar el lenguaje C. La granventaja de esta aproximaci´on es que, al haber aprendido ya a programar, laspeculiaridades de C pueden estudiarse como lo que son: peculiaridades (poremplear una expresi´on amable).Para impartir las pr´acticas de la asignatura se ha desarrollado un sencilloentorno de programaci´on, llamado PythonG (ver figura 1), con un editor detextos orientado a Python, int´erprete interactivo de ´ordenes Python, terminalgr´afico y depurador. El software desarrollado se distribuye con licencia GPL. 1 Dedicamos a cada 45 horas de teor´ıa/problemas y 30 horas de pr´acticas a cada lenguaje. 2  El mercado editorial ofrece infinidad de t´ıtulos para aprender programar enC, C ++  y Java. No ocurre lo mismo con Python, al menos no en Espa˜na. Esteproblema se ha superado escribiendo un curso completo que cubre el temariode la asignatura. Se trata de un libro de apuntes que supone en el alumnounos conocimientos previos pr´acticamente nulos y que ha sido escrito con unestilo expositivo muy pr´oximo al de una clase presencial [6]. El libro puedeutilizarse para el aprendizaje autodidacta de la programaci´on y que se distribuyegratuitamente en la red.Este art´ıculo est´a estructurado como sigue. En la secci´on 2 se presentan lascaracter´ısticas que, a nuestro juicio, debe reunir un lenguaje de programaci´onutilizado para aprender a programar. En la secci´on 2.1 se examina Python bajoesta luz y se justifica su idoneidad como primer lenguaje de programaci´on. Elapartado 2.2 resume las ventajas de aprender C una vez se sabe programar conPython. Los apartados 3 y 4 presentan el entorno de programaci´on PythonGy el libro de texto de la asignatura. Finalmente, en el apartado 5 se apuntanalgunas conclusiones. 2. La cuesti´on del primer lenguaje La primera pregunta que hemos de hacernos es ¿qu´e requisitos debe reunirun lenguaje de programaci´on para que pueda considerarse un buen lenguaje deiniciaci´on? Debe tenerse en cuenta que el objetivo de un curso introductorio ala programaci´on no es la ense˜nanza en profundidad de  un   lenguaje de progra-maci´on concreto, sino la asimilaci´on de una serie de estrategias para el dise˜no y desarrollo de soluciones a problemas que usan, como veh´ıculo de expresi´on,un lenguaje de programaci´on. El lenguaje de programaci´on es instrumental y loideal es que  interfiera   lo menos posible en la implementaci´on de los algoritmos.El primer aspecto a tener en cuenta es la  sintaxis  . El lenguaje debe tenercierto sentido de la econom´ıa en el uso de s´ımbolos auxiliares y sus estructurasdeben seguir unos principios sencillos que permitan generalizaciones efectivas.Muchos errores de programaci´on de los aprendices se deben a la omisi´on o usoincorrecto de terminadores y delimitadores de bloque (que frecuentemente pa-san inadvertidos al compilador por no provocar errores sint´acticos o sem´anticos).Estos errores no siempre se deben a un mal dise˜no del algoritmo por parte delestudiante, sino al pobre soporte que ofrece el lenguaje de programaci´on parauna expresi´on concisa y clara del algoritmo. Esto nos lleva a una segunda carac-ter´ıstica deseable: el lenguaje debe ser  expresivo , es decir, debe poder   decir mu-cho con poco  . Para ello, el lenguaje debe ofrecer  estructuras de control   flexiblesy presentar una colecci´on de  tipos y estructuras de datos   que permita expresarrelaciones complejas entre datos con una notaci´on sencilla (por ejemplo, dandosoporte sint´actico a estructuras secuenciales como las listas). La  sem´ antica   dellenguaje tambi´en debe ser sencilla. Contribuye a ello que el lenguaje sea muy ortogonal  , es decir, si una construcci´on o m´etodo funciona con una estructurade datos, debe funcionar de modo similar con aquellas otras que guardan al-guna semejanza (si cierta funci´on o m´etodo calcula la longitud de una cadena,por ejemplo, deber´ıa calcular tambi´en la longitud de una lista, pues ambas sonsecuencias).Programar es una actividad que, especialmente en fases tempranas del apren-dizaje, se basa en el m´etodo de prueba y error. Es deseable que el lenguaje vaya3  acompa˜nado de un entorno de programaci´on que facilite un ciclo de edici´on- ejecuci´on r´apido. Resulta cr´ıtico, adem´as, que se detecten y se˜nalen correcta- mente los errores de todo tipo (l´exicos, sint´acticos, sem´anticos est´aticos  y de ejecuci´ on  ): nada hay m´as frustrante para un estudiante que un programa dadopor bueno por un compilador y que,   inexplicablemente  , falla en la ejecuci´oncon un mensaje tan parco como   violaci´on de segmento  , sin indicar siquiera enqu´e l´ınea se produjo el error.Las caracter´ısticas citadas son, a nuestro entender, fundamentales. Un len-guaje que las presente menguadas o que no las presente en absoluto no es unbuen candidato. Hay otras caracter´ısticas que, aunque deseables, son secunda-rias. Entre ellas tenemos, por ejemplo, su presencia en el   mundo real  , aunqueteniendo en cuenta que est´a fuertemente sometido al dominio de las modas yla mercadotecnia. Hace a˜nos, C reinaba absolutamente; al poco, irrumpi´o confuerza C ++ ; hoy parece que Java domina buena parte del mercado; y Micro-soft se ha empe˜nado en que C #  sea lo m´as. Pero, si examinamos el mundo dela peque˜na y mediana empresa, Visual Basic es el amo. Sin comentarios. Encualquier caso, no perdamos de vista la creciente presencia de Perl y Pythonen el mundo de la programaci´on. El entorno LAMP (Linux-Apache-MySQL-Perl/PHP/Python) [4] ha introducido estos lenguajes en el curr´ıculum de mu-chos programadores profesionales. Otra caracter´ıstica deseable es la existenciade un rico conjunto de m´odulos o librer´ıas que facilite la programaci´on de ciertastareas: entrada/salida, funciones y constantes matem´aticas, expresiones regula-res... y, por qu´e no, aplicaciones web, serializaci´on de objetos, comunicaci´onentre ordenadores, interfaces gr´aficas, ... Tambi´en resulta deseable que el entor-no de programaci´on est´e disponible en el mayor n´umero posible de plataformas(incluso en las que no son libres, ya que un efecto secundario de este aspecto esque facilita la migraci´on de los estudiantes a la plataforma GNU/Linux; peroeso es otra historia). 2.1. Python como primer lenguaje Aunque Python no goce a´un de amplia reconocimiento en el mundo acad´emi-co nacional, pretendemos demostrar en esta secci´on que puede compararse muyfavorablemente con los lenguajes adoptados en la mayor´ıa de universidades yque, en consecuencia, este reconocimiento puede ser cuesti´on de tiempo. De he-cho, son varias las universidades extranjeras que ya han adoptado Python comoparte de sus curr´ıcula en inform´atica o como herramienta para la introducci´ona la programaci´on de no inform´aticos 2 . La sintaxis de Python es extremadamente sencilla.  Ilustremos esa sen-cillez con un ejemplo: el tradicional   Hola, mundo.   con el que se presentanmuchos lenguajes de programaci´on. Un lenguaje como C obliga a incorporar lacabecera de una biblioteca est´andar, a definir una funci´on principal que devuel-ve un valor nulo (obligatorio en C99) y a codificar el salto de l´ınea de una formacr´ıptica (al menos para una persona que no ha visto un programa en su vida): #include <stdio.h> 2 Universidad de Irvine, California (EEUU); Wartburg College, Iowa (EEUU); Centre Co-llege, Kentucky (EEUU); Universidad de San Diego (EEUU); Universidad de Helsinki (Fin-landia); Trinity College, Melbourne (Australia)... 4
We Need Your Support
Thank you for visiting our website and your interest in our free products and services. We are nonprofit website to share and download documents. To the running of this website, we need your help to support us.

Thanks to everyone for your continued support.

No, Thanks
SAVE OUR EARTH

We need your sign to support Project to invent "SMART AND CONTROLLABLE REFLECTIVE BALLOONS" to cover the Sun and Save Our Earth.

More details...

Sign Now!

We are very appreciated for your Prompt Action!

x