Actualizado el 24 de Octubre del 2020 (Publicado el 5 de Mayo del 2018)
5.209 visualizaciones desde el 5 de Mayo del 2018
1,2 MB
336 paginas
Creado hace 15a (23/01/2009)
Como Pensar como un Cient´ıfico de la
Computaci´on con Python
Como Pensar como un Cient´ıfico de la
Computaci´on con Python
Allen Downey
Jeffrey Elkner
Chris Meyers
Traducido y adaptado por
Andr´es Becerra Sandoval
Pontificia Universidad Javeriana
Santiago de Cali, Colombia
Copyright c° 2002 Allen Downey, Jeffrey Elkner, y Chris Meyers.
Pontificia Universidad Javeriana
Calle 18 No. 118-250
A.A. No. 26239
Cali, Colombia
Se concede permiso para copiar, distrubuir, y/o modificar este documento bajo
los terminos de la GNU Free Documentation License, Versi´on 1.1 o cualquier
versi´on posterior publicada por la Free Software Foundation; con los Secciones
Invariantes siendo “Pr´ologo,” “Prefacio,” y “Lista de Contribuidores,” sin texto
de cubierta, y sin texto de contracubierta. Una copia de la licencia est´a incluida
en el ap´endice titulado “GNU Free Documentation License.”
La GNU Free Documentation License est´a disponible a trav´es de www.gnu.org
o escribiendo a la Free Software Foundation, Inc., 59 Temple Place, Suite 330,
Boston, MA 02111-1307, USA.
La forma original de este libro es c´odigo fuente LATEX y compilarlo tiene el efecto
de generar un libro de texto en una repesentacion independiente del dispositivo
que puede ser convertida a otros formatos e imprimirse.
El c´odigo fuente LATEX para este libro y mas informaci´on sobre este proyecto se
encuentra en:
http://www.thinkpython.com
Este libro ha sido preparado utilizando LATEX y las figuras se han realizado con
xfig. Todos estos son programas de c´odigo abierto, gratuito.
Historia de la impresi´on:
Pr´ologo
Por David Beazley
Como un educador, investigador, y autor de libro, estoy encantado de ver la
terminaci´on de este texto. Python es un lenguaje de programaci´on divertido y
extremadamente f´acil de usar que ha ganado renombre constantemente en los
a˜nos recientes. Desarrollado hace diez a˜nos por Guido van Rossum, la sintaxis
simple de Python y su “sabor” se derivan en gran parte del ABC, un lenguaje
de programaci´on para ense˜nanza que se desarroll´o en los 1980s. Sin embargo,
Python tambi´en fue creado para resolver problemas reales y tiene una amplia
gama de caracter´ısticas que se encuentran en lenguajes de programaci´on como
C++, Java, Modula-3, y Scheme. Debido a esto, uno de las caracter´ısticas no-
tables de Python es la atracci´on que ejerce sobre programadores profesionales,
cient´ıficos, investigadores, artistas, y educadores.
A pesar de ´esta atracci´on en muchas comunidades diversas, usted puede todav´ıa
preguntarse “¿porque Python?” o “¿porque ense˜nar programaci´on con Python?”
Responder ´estas preguntas no es una tarea f´acil— especialmente cuando la opi-
ni´on popular est´a del lado masoquista de usar alternativas como C++ y Java.
Sin embargo, pienso que la respuesta mas directa es que la programaci´on en
Python es simplemente mas divertida y mas productiva.
Cuando ense˜no cursos de inform´atica yo quiero cubrir conceptos importantes,
hacer el material interesante y enganchar a los estudiantes. Desafortunadamente,
hay una tendencia en la que los cursos de programaci´on introductorios dedican
demasiada atenci´on en la abstracci´on matem´atica y a hacer que los estudiantes
se frustren con problemas molestos relacionados con la sintaxis, la compilaci´on
y la presencia de reglas arcanas en los lenguajes. Aunque la abstracci´on y el
formalismo son importantes para los ingenieros de software y para los estudian-
tes de ciencias de la computaci´on usar este enfoque hace a la inform´atica muy
aburrida. Cuando ense˜no un curso no quiero tener un grupo de estudiantes sin
inspiraci´on. Quisiera verlos intentando resolver problemas interesantes explo-
rando ideas diferentes, intentando enfoques no convencionales, rompiendo las
vi
Pr´ologo
reglas, y aprendiendo de sus errores. En el proceso no quiero perder la mitad
del semestre tratando de resolver problemas sint´acticos oscuros, interpretando
mensajes de error del compilador incomprensibles, o descifrando cual de las mu-
chas maneras en que una programa puede generar un error de memoria grave
se est´a presentando.
Una de las razones porque las que me gusta Python es que proporciona un
equilibrio muy bueno entre lo pr´actico y lo conceptual. Puesto que se interpre-
ta Python, los principiantes pueden empezar a hacer cosas interesantes casi de
inmediato sin perderse en problemas de compilaci´on y enlace. Adem´as, Python
viene con un biblioteca grande de m´odulos que pueden ser usados en dominios
que van desde programaci´on en la web hasta gr´aficos. Tener un foco pr´actico
es una gran manera de enganchar a los estudiantes y permite que emprendan
proyectos significativos. Sin embargo, Python tambi´en puede servir como una
excelente base para introducir conceptos importantes de la inform´atica. Pues-
to que Python soporta completamente procedimientos y clases, los estudiantes
pueden ser introducidos gradualmente a temas como la abstracci´on procedimen-
tal, las estructuras de datos, y la programaci´on orientada a objetos—lo que se
puede aplicar despu´es a cursos posteriores en Java ´o C++. Python proporcio-
na incluso varias caracter´ısticas de los lenguajes de programaci´on funcionales y
puede usarse para introducir conceptos que se pueden explorar con mas detalle
en cursos con Scheme y Lisp.
Leyendo, el prefacio de Jeffrey, estoy sorprendido por sus comentarios de que
Python le permita ver un “m´as alto nivel de ´exito y un nivel bajo de frus-
traci´on” y que puede “avanzar mas r´apido con mejores resultados.” Aunque
estos comentarios se refieren a sus cursos introductorios, a veces uso Python
por ´estas mismas razones en los cursos de inform´atica avanzada en la Universi-
dad de Chicago. En estos cursos enfrento constantemente la tarea desalentadora
de cubrir un mont´on de material dif´ıcil en un curso de nueve semanas. Aunque
es totalente posible para mi infligir mucho dolor y sufrimiento usando un len-
guaje como C++, he encontrado a menudo que este enfoque es improductivo—
especialmente cuando el curso se trata de un asunto sin relaci´on directa con la
“programaci´on.” He encontrado que usar Python me permite enfocar el tema
del curso y dejar a los estudiantes desarrollar proyectos substanciales.
Aunque Python siga siendo un lenguaje joven y en desarrollo, creo que tiene
un futuro brillante en la educaci´on. Este libro es un paso importante en esa
direcci´on.
David Beazley
Universidad de Chicago
Autor del Python Essential Reference
Prefacio
Por Jeff Elkner
Este libro debe su existencia a la colaboraci´on hecha posible por Internet y
el movimiento de software libre. Sus tres autores—un profesor de colegio, un
profesor de secundaria, y un programador profesional—tienen todav´ıa que verse
cara a cara, pero han podido trabajar juntos y han sido ayudado por maravillosas
personas quienes han donado su tiempo y energ´ıa para ayudar a hacer ver mejor
este libro.
Nosotros pensamos que este libro es un testamento a los beneficios y futuras
posibilidades de ´esta clase de colaboraci´on, el marco que se ha puesto en marcha
por Richard Stallman y el movimiento de software libre.
C´omo y porqu´e vine a utilizar Python
En 1999, el examen del College Board’s Advanced Placement (AP) de Inform´ati-
ca se hizo en C++ por primera vez. Como en muchas escuelas de Estados Uni-
dos, la decisi´on para cambiar el lenguaje ten´ıa un impacto directo en el plan
de estudios de inform´atica en la escuela secundaria de Yorktown en Arlington,
Virginia, donde yo ense˜no. Hasta este punto, Pascal era el lenguaje de instruc-
ci´on en nuestros cursos del primer a˜no y del AP. Conservando la pr´actica usual
de dar a los estudiantes dos a˜nos de exposici´on al mismo lenguaje, tomamos
la decisi´on de cambiar a C++ en el curso del primer a˜no en el periodo escolar
1997-98 de modo que sigui´eramos el cambio del College Board’s para el curso
del AP el a˜no siguiente.
Dos a˜nos despu´es, estoy convencido de que C++ no era una buena opci´on para
introducir la inform´atica a los estudiantes . Aunque es un lenguaje de pro-
gramaci´on de gran alcance, es tambi´en un lenguaje extremadamente dif´ıcil de
aprender y de ense˜nar. Me encontr´e constantemente peleando con la sintaxis
dif´ıcil de C++ y sus m´ultiples maneras de hacer las cosas, y estaba perdiendo
viii
Prefacio
muchos estudiantes innecesariamente como resultado. Convencido de que ten´ıa
que haber una mejor opci´on para nuestras clases de primer a˜no, fui en busca de
un alternativa a C++.
Necesitaba un lenguaje que pudiera correr en las m´aquinas en nuestro laborato-
rio Linux, tambi´en en las plataformas de Windows y Macintosh que muchos de
los estudiantes tienen en casa. Quer´ıa que fuese un lenguaje de c´odigo abierto,
para que los estudiantes lo pudieran usar en casa sin pagar por una licencia.
Quer´ıa un lenguaje usado por programadores profesionales, y que tuviera una
comunidad activa alrededor de ´el. Ten´ıa que soportar la programaci´on procedu-
ral y orientada a objetos. Y mas importante, ten´ıa que ser f´acil de aprender y
de ense˜nar. Cuando investigu´e las opciones con ´estas metas en mente, Python
salt´o como el mejor candidato para la tarea.
Ped´ı a uno de los estudiantes mas talentosos de Yorktown, Matt Ahrens, que le
diera a Python una oportunidad. En dos meses el no solamente aprendi´o el len-
guaje sino que escribi´o una aplicaci´on llamada pyTicket que permiti´o a nuestro
personal atender peticiones de soporte tecnol´ogico v´ıa web. Sabia que Matt no
podr´ıa terminar una aplicaci´on de esa escala en tan poco tiempo con C++, y
esta observaci´on, combinada con el gravamen positivo de Matt sobre Python,
sugiri´o que este lenguaje era la soluci´on que buscaba.
Encontrando un Libro de Texto
Al decidir utilizar Python en mis dos clases de inform´atica introductoria para
el a˜no siguiente, el problema mas acuciante era la carencia de un libro.
El contenido libre vino al rescate. A principios del a˜no, Richard Stallman me
present´o a Allen Dow
Comentarios de: Como Pensar como un Científico de la Computación con Python (0)
No hay comentarios