[Python-es] Consejo para aprender a programar
Chema Cortes
pych3m4 en gmail.com
Jue Abr 8 12:51:23 CEST 2010
El día 8 de abril de 2010 01:49, Angel Giovanni Cortes Solorzano
<giovanni.j89 en gmail.com> escribió:
> Quisiera saber cuál es la mejor forma de aprender a programar ya que me
> gusta y además soy autodidacta. Llevo con el lenguaje python apenas un mes
> aprendiéndolo pero ya se lo que es programar, su sintaxis y algo más como
> son las listas, tuplas, etc.
> Lo que quisiera es saber cómo aprendieron ustedes a hacer programas porque
> yo solo he hecho programas sencillos de esos que piden en la escuela como
> números de Fibonacci, encontrar números primos y lo más que he hecho es la
> simulación de un juego llamado craps, que es sencillo de hacer.
Como iniciación, pueden ser interesantes webs como PyEuler donde se
resuelven algunos problemas matemáticos simples:
http://pyeuler.wikidot.com/
Python básico:
http://pythonstarter.blogspot.com/
De igual modo que un buen pintor adquiere técnica con la práctica y no
sólo conociendo los pigmentos, la técnica de la programación sólo se
adquiere programando mucho y cometiendo muchos errores.
De la experiencia se llegan a descubrir ciertos "patrones" que mejor
funcionan y que se repiten, y cuyo conocimiento te pueden servir de
orientación. En otros lenguajes se les llaman "Patrones de diseño" o
similar, aunque en la ortodoxia de python preferimos llamarlos
simplemente "modismos" (idioms) del lenguaje:
http://python.net/~goodger/projects/pycon/2007/idiomatic/handout.html
http://docs.python.org/howto/doanddont.html
http://mundogeek.net/traducciones/modismos-python.htm
En cuanto a ir más allá, en internet existen blogs de lo más variado
donde se publica código python de lo más interesante. En python.org
existe un "planeta" con varios blogs asociados que te pueden dar idea
de lo que se hace por el mundo. Con el auge de las redes sociales
también se empiezan a ver webs colaborativas donde envíar pequeños
pedazos de código (llamados "snippets" en el argot). Te pongo un
pequeño listado de urls:
Planeta Python:
http://planet.python.org/
Libro de recetas ActiveState:
http://code.activestate.com/recipes/langs/python/
Ejemplos de python:
http://www.java2s.com/Code/Python/CatalogPython.htm
Módulo python de la semana:
http://www.doughellmann.com/projects/PyMOTW/
Snippets:
http://snippets.dzone.com/tag/python
http://www.smipple.net/lang/python
http://snipplr.com/all/language/python
http://www.smipple.net/lang/python
En las redes sociales, navega por los enlaces hasta dar con algún
proyecto en concreto que te pueda interesar y céntrate en él.
> Quisiera saber de un proyecto que no sea difícil, pero que sea para
> aprender, aunque algunas cosas no sepa puedo investigar, más que nada quiero
> aprender a desarrollar el plan de un programa y a resolver un problema para
> hacer un programa completo.
> Si tienen aglún proyecto que me puedan aconsejar o algunos ejercicios estaré
> agradecido o algunos consejos sobre como programar. Espero no estar
> rompiendo alguna regla.
Es importante que, además de programar, también dediques tiempo a
conocer mejor las herramientas de desarrollo. Y no sólo me refiero a
manejar bien el editor, si no también a conocer cómo funciona un
sistema de control de versiones, cómo se hace una refactorización, o
cómo crear tests y documentación. En el libro "Dive into python" te
explican algunas de estas técnicas:
Dive into python:
http://diveintopython.org
http://diveintopython3.org
En control de versiones te recomiendo mercurial:
http://devnull.li/libromercurial/index.es.html
Una vez que tengas soltura con mercurial, pásate por bitbucket y busca
proyectos tu interés. Clónalo y empieza su estudio y mejora. Sin darte
casi cuenta, te encontrarás con alguna contribución para hacer.
Particípalo en el foro del proyecto y quedarás incorporado al equipo
de desarrollo.
http://bitbucket.org/
Cuando te consideres un experto, puedes ir más allá participando en
los Google Summer of Code. Cada año se eligen varios proyectos cortos
que son subvencionados por google, de los cuales hay varios
prioritarios para python:
http://wiki.python.org/moin/SummerOfCode/2010
Si todo ésto te parece demasiado estricto y consideras que tu
acercamiento a python es más lúdico que otra cosa, siempre puedes
probar con pygame y pasártelo bomba creando juegos:
http://razonartificial.com/tutoriales-pygame/
PD: no te puedo recomendar mi blog porque todavía lo tengo sin montar :-(
Más información sobre la lista de distribución Python-es