Fuente: blog de Marcelo Ramos

odingJobs , bolsa de trabajo en línea en el área tecnológica, entrevistó a 11 programadores expertos en Python conversando con ellos sobre diferentes aspectos de Python. Me pareció una entrevista interesante así que les dejo la traducción:

Conversamos con algunos programadores Python para que dieran consejos a desarrolladores que están considerando Python. Los lenguajes que no tienen un respaldo corporativo formal dependen más de la comunidad de usuarios y desarrolladores para mantener su popularidad y Python tiene su cuota de usuarios dedicados y fieles.

Permitanme presentar el panel de expertos en Python

Tennessee Leeuwenburg: Editor en Jefe de “The Python Papers”. The Python Papers cubren temas sobre Python en la industria, la academia y la comunidad.

Mark Mruss: Autor del libro Learning Python.

Baiju M : programador Python y desarrollador de Zope 3. Su página ZWiki está en http://kpug.zwiki.org/BaijuMuthukadan

Ben Last: Un ingeniero emprendedor que comprende la tecnología desde un punto de vista empresarial. En sus propias palabras: “Soy el geek que puede hablar”. Su Live Journal.

Jim Hughes: Un desarrollador senior para una vendedor de software independiente en Londres. El proyecto Delicious Tinkering cubre sus aventuras al usar del.icio.us para hacer blogs orientados a links web con Python. Su blog

Alessandro Iob: Desarrolló varios sistemas de software complejos: Devil Framework es representativo de su conocimiento y experiencia (Python, programación distribuída, sistemas dinámicos, interfaces hacia software/hardware externo, desarrollo multi-plataforma (Unix, Windows, Mac OS x), diseño de interfaces gráficas de usuario).

Carlos de la Guardia: Autor de “I Blog Therefore I am”, cubriendo ideas, experiencias y opiniones sobre desarrollo web con Plone y Zope, tecnologías web relacionadas y la vida en general.

Jkx : Mantiene pythonfr.org, escribe en forma extensiva sobre Python y Zope. Su blog

Matthew Wilson: Autor de T+1, consulta su sección Python

Tim Parkin: El y su compañía Pollenation Internet usan Python para el desarrollo rápido de un sitio web de alto tráfico para la Super Liga, la liga de rugby Premier en el Reino Unido. Su Journal

Corey Goldberg: Mantiene Pylot, una herramienta de rendimiento web de código abierto basada en Python. Su blog

P: Si tuvieran que comenzar de cero, ¿aprenderían Python de nuevo?

Tennessee: Absolutamente. Python me ha dado una carrera, por ejemplo.También encuentro que es un lenguaje muy satisfactorio permitiéndome expresar lógica en forma elegante y clara. Pienso que mucha gente que ama la programación también amará a Python. Creo que la mayoría de los desarrolladores encontrarán eventualmente el ‘calce’ con algún lenguaje de programación que vaya con sus personalidades. Python tiene una personalidad única adecuada para mucha gente. También tiene una comunidad fantástica lo que significa que los desarrolladores siempre tienen a donde acudir para conseguir soporte, consejo e interacción con sus compañeros.

Si tuviera que considerar los lenguajes más influyentes nombraría a Python, Prolog, Java y C. Aunque cada uno tiene algo único en cuanto a su paradigma de desarrollo, Python para mi representa el mejor balance entre elegancia y aplicación.

Mark: Si, aprendí Python por diversión y para conservar mis aptitudes de programación en buena condición, pero no lo utilizo en mi trabajo actual. Teniendo en cuenta ése detalle aprender un lenguaje como Python me enseñó nuevas aptitudes de programación que he sido capaz de transferir a mi trabajo.

Baiju: Seguro. De hecho comencé con FORTRAN luego C y C++, pero ahora creo que Python debería ser el primer lenguaje con el cual comenzar al aprender a programar.

Ben: Si, aunque no sería el único lenguaje, por supuesto. Pienso que es un lenguaje excelente para los recién llegados a la programación: una gran forma de aprender buenos hábitos antes de enfrentarse con otros lenguajes que son menos estrictos.

Jim: Si.

Alessandro: Si.

Carlos: Definitivamente. Es una ventaja competitiva.

Jkx: Por supesto que sí. Python tiene mucho poder. Primero es un lenguaje de programación completo. Puedes construir cualquier tipo de aplicación seria con él. Por otro lado, es para mí la mejor arma para administrar sistemas. Digo arma y no cuchillo ;) por qué puedes realizar el trabajo de todos los días con él, desde pruebas avanzadas de DNS hasta filtrado de spam y pruebas web.

Matthew: Absolutamente.

Tim: Definitivamente! El lenguaje ha ayudado a mi programación inmensamente y lo ha hecho sin tener que cambiar inmediatamente mi manera de pensar (aunque lo he hecho con el tiempo).

Corey: Absolutamente si. Pienso que es un lenguaje de programación fantástico con una gran biblioteca estándar.

P: ¿Cual es para ustedes la funcionalidad más importante del lenguaje Python?

Tennessee: En alto nivel, la funcionalidad más importante del lenguaje es su expresividad. Hay tres cosas en el lenguaje que contribuyen a éso — la sintaxis de manipulación de listas de Python, su tipo diccionario y su uso del espacio en blanco. Puede que no parezcan ser fortalezas evidentes, pero juntas permiten programar en forma muy clara. Este corto (ingenuo) algoritmo quicksort muestra como Python puede usarse para expresar fácilmente el enfoque divide y vencerás:

def qsort1(list):
    if list == []: return listpivot     = list[0]
    lesser   = qsort1([x for x in list[1:] if x < pivot])
    greater = qsort1([x for x in list[1:] if x > pivot])
    return lesser + [pivot] + greate

Mark: Esa es una pregunta difícil, tendría que decir iteradores e iterables. Toma algo que es un tormento en otros lenguajes y lo convierte en algo trivial.

Baiju: Bien, hay muchas funcionalidades de Python que me gustan. Pero cuando preguntaste “la funcionalidad más importante” se me vino a la mente el intérprete de Python.

Ben: No estoy seguro de si se puede elegir una: depende de tu punto de vista y para que lo estés usando. El ambiente del intérprete, donde puedas jugar con los módulos, programar y verificar tu comprensión de como funcionan las cosas. El hecho de que cada módulo contiene su propio arnés de testeo (muy bueno para aficionados al desarrollo Agile). La forma en que corre la orientación a objetos a través de todo el ambiente de ejecución.

Jim: Una palabra, elegancia.

Alessandro: Una sóla manera clara de hacer las cosas.

Carlos: Sintaxis simple pero poderosa y la biblioteca estándar incluída.

Jkx: Hmm, difícil de responder. La clave para mi es su simplicidad a través del uso de módulos externos y el tipado dinámico.

Matthew: La sintaxis de Python alienta a los programadores a escribir programas fáciles de leer. Hay funcionalidades mucho más elegantes en el lenguaje, como la instrospección, la evaluación en tiempo de ejecución y el tipado dinámico, pero sigo regresando a Python porque es tan sencillo a la vista. Un programa Python bien escrito se lee como un libro.

Tim: Es su naturaleza pragmática.. No intenta ser el más fantástico o el más flexible o el más ‘empresarial’. Le brinda al programador un marco de trabajo muy predecible en el cual usar sus aptitudes. En resúmen, no te da órdenes ni se interpone pero sugiere gentilmente que lo puedes hacer mejor…

Corey : Dos cosas. Una es la legibilidad. El espacio en blanco como parte de la sintaxis tiende a enloquecer a la gente al principio, pero hace que la lectura del código sea realmente muy fácil. El código Python se lee y comprende intuitivamente comparado con muchos otros lenguajes.

La otra es la filosofía de Python “Debería haber una, y preferiblemente sólo una, manera evidente de hacerlo”. Algunos lenguajes te dan una tonelada de formas para lograr el mismo objetivo. En Python, éso no es visto como algo positivo. En general debería haber una forma idiomática de lograr algo.

P: ¿Qué foros sobre Python recomendarían?

Tennessee: Hay algunos lugares importantes donde la gente puede interactuar con la comunidad de Python. Uno es “The Python Papers”, la revista gratuita que yo edito. El sitio de noticias planet.python.org recoge publicaciones de los blogs de los miembros más activos de la comunidad Python y es una fuente fantástica de información actualizada sobre el lenguaje, proyectos y eventos. El grupo de noticias comp.lang.python en Usenet tiene un volumen de tráfico bastante alto y es muy adecuado para principiantes. También hay una nueva revista sobre Python (comercial) llamada Python Magazine.

Mark: En éste momento realmente no visito ningún foro de Python en particular. Usualmente visito foros de cualquier toolkit o API que esté usando en Python, pero éso pasa sólo cuando encuentro un problema.

Baiju: Para principiantes recomendaría la lista Python tutor.

Ben: No suelo usar ninguno asi que no puedo comentar.

Jim: No tanto foros pero si recursos. Python.org para la documentación, Cheese Shop, y más, además el Python Grimoire y el Python Cookbook para acceder a muchas sugerencias y ejemplos de como hacer las cosas de forma Pythónica.

Alessandro: Lo siento pero como no uso ningún foro no puedo recomendar ninguno.

Carlos: La lista de correo comp.lang.python y los foros web en http://python-forum.org/py/index.php. También muchos blogs interesantes que puedes encontrar en http://planet.python.org y http://www.planetpython.org/.

Jkx: ASPN Cookbook es realmente fantástico pero no es un foro en realidad.

Matthew : El grupo de noticias comp.lang.python es excelente. Los blogs en http://planet.python.org y http://planetpython.org son un buen lugar para estar en contacto con lo que la gente está haciendo con Python.

Tim: Los foros en python.org son muy ‘ruidosos’. El canal IRC es estupendo si estás trancado con un problema. Planet Python es un realmente un buen lugar para escuchar lo que la gente está escribiendo actualmente.

Corey: No estoy seguro sobre los Foros pero estoy actualizado al estar suscrito a Planet Python. Es un feed agregado de muchos blogs diferentes cuyo tema es Python.

P: ¿Qué libro le recomendarían a un principiante?

Tennessee: Hay un libro en línea llamado “Dive Into Python” que hace transitar al lector por un curso rápido y práctico en Python. Demuestra el uso de la sintaxis única de Python y sus bibliotecas básicas a través de una gran cantidad de ejemplos. Yo comencé trabajando con ése recurso. Está disponible en http://www.diveintopython.org/, donde se encuentra una versión en línea que puede ser descargada sin cargo. También está disponible una versión impresa que pueden comprar aquellos lectores que prefieren una copia física. También recomendaría a “Python Cookbook” de la editorial O’Reilly como otro recurso práctico. A los programadores que están comenzando les conviene empezar con “Python: Como Programar” de Marvey M. Deitel. Ese libro incluye teoría básica de la programación usando Python.

Mark: Hay muchisimos libros fantásticos por ahí, pero no estoy seguro cual recomendaría. De hecho no estoy seguro si le recomendaría un libro a un principiante. Probablemente lo dirigiría al tutorial de Guido (http://docs.python.org/tut/) y le diría que comenzara con éso que es bueno y gratuito.

Baiju: El tutorial oficial de Python y luego “Python in a Nutshell” de Alex Matelli

Ben: Los libros de O’Reilly por Lutz & AscherLearning Python y Programming Python.

Jim: Dive Into Python y Learning Python

Alessandro: Learning Python (O’Reilly)

Carlos: Dive into Python, gratuito en http://diveintopython.org/.

Jkx: “Introducing Python” de O’reilly, traducido como “Introduction à Python” en Francés )

Matthew: Afortunadamente, Python trae excelente documentación. El tutorial de Python en el sitio web es lo primero que recomiendo leer a cualquier principiante. Después de éso, el Python Cookbook de O’Reilly es una gran lectura porque explica a través de la solución de diferentes programas. Realmente me gustó el primer libro de Magnus Hetland, Practical Python, porque construye aplicaciones reales y discute porqué toma ciertas decisiones de diseño. No he leído su libro más reciente. Encuentro irónico que sepa que existan unos cuantos buenos bloggers de Python pero no sé mucho sobre buenos libros de Python.

Tim: How to think like a computer scientist y Dive Into Python. Ambos son sitios web (creo que Dive Into Python ahora es un libro). Un buen libro realmente para continuar sería el Python Cookbook. Sin embargo, usar los sitios web que nombré y descargar IPython (un intérprete de línea comando mejorado de Python) y simplemente comenzar a programar.

Corey : Learning Python de Mark Lutz y David Ascher (O’Reilly)

P: Nombren un lenguaje de programación que les gustaría aprender (si tuvieran tiempo y recursos, por supuesto)

Tennessee: Definitivamente Javascript. La mayoría de los profesionales de la computación estarán familiarizados con Javascript y para aquellos que trabajan con la web será un lenguaje esencial. Aunque estoy familiarizado con lo básico de Javascript una familiaridad más fuerte con algunos de los toolkits y paradigmas de programación más avanzados sería un ventaja gigantesca en el mercado de hoy.

Mark: No me molestaría aprender Java de nuevo, me interesó un poco en la Universidad pero no he tenido la oportunidad de regresar a él desde entonces. Tampoco me molestaría ver de que se trata de Ruby. C# parece estar en una gran cantidad de ofertas de trabajo éstos días también, así que tendría que estar en alguna parte en mi lista.

Baiju: C#

Ben: Estoy demasiado ocupado como para aprender lenguajes por diversión, supongo que C# es divertido y me gustaría tener el tiempo para poder dedicar más a aprender las bibliotecas de tiempo de ejecución (el lenguaje es bastante simple)

Jim: Python -) Todavía me considero falto de experiencia en Python y mientras haya tiempo y recursos me gustaría ser capaz de escribir un Python más idiomático.

Alessandro: Lisp

Carlos: Smalltalk.

Jkx: OCaml pero más por diversión que por lucro por supuesto.

Matthew: Estudio Common Lisp, Prolog, Erlang y Haskell cuando el tiempo me lo permite. En particular estudiar Common Lisp me convierte en un programador Python mucho mejor. Tambien trato de estar al tanto de los eventos en la comunidad Perl y Ruby ya que ésos lenguajes comparten un herencia común con Python y un hack inteligente en Perl o Ruby usualmente puede ser traducido a Python fácilmente.