[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