2009-08-03 12 views
12

Recientemente decidí ampliar mis horizontes de programación y aprender el lenguaje de programación python. Aunque he utilizado Python un poco para las clases en la universidad y para un proyecto o dos en el trabajo, no soy un experto. Mi pregunta es la siguiente: ¿debería molestarme con las versiones 2.x o debería saltar directamente a 3.0? Me inclino por 3.0 ya que voy a programar aplicaciones más para uso personal/de aprendizaje, pero quería ver si había buenos argumentos en contra de eso antes de comenzar.¿Debo comenzar con Python 3.0?

+1

Véase también http://stackoverflow.com/questions/533510/whos-using-python-3-0/533529 –

Respuesta

20

Absolutamente no 3.0 - 3.1 está fuera y es más estable, mejor, más rápido en todos los aspectos; no tiene ningún sentido comenzar con 3.0 en este momento, si desea tomar las 3 series, debería ser 3.1 en todas las cuentas.

En cuanto a 2.6 vs 3.1, 3.1 es un lenguaje mejor (especialmente porque se eliminó algún fragmento que se había acumulado a lo largo de los años pero debe permanecer en 2. * para compatibilidad con versiones anteriores) pero todo el resto del ecosistema (de extensiones a las herramientas, desde los libros al conocimiento colectivo) sigue estando muy a favor de 2.6: si no le importa usar (por ejemplo) ciertas GUI o extensiones científicas, implementar en App Engine, script Windows con COM, tener un IDE de terceros muy optimista, y así sucesivamente, 3.1 es aconsejable, pero si le importan esas cosas, todavía 2. * por el momento.

+0

Tan triste que no puedo encontrar Python 3.1 en el repositorio de Ubuntu. – riza

+0

A continuación, obténgala de python.org –

+3

Mucho más bibliotecas que GUI, científicas, etc. solo admiten 2.6. – aehlke

4

Creo que será mejor ir directamente a 3.0. A menos que tenga que lidiar con una base de código heredada, existen muy pocas ventajas para aprender las formas 2.xx de hacer las cosas.

En el mundo de Python (como en la mayoría de los otros, realmente), las versiones tardan un poco en migrar a todos los subproyectos, pero si alguna vez encuentra la necesidad de volver a la transición a 2.xx, no No creo que encuentre que volver a aprender cosas es particularmente doloroso.

+3

El hecho es que funciona mejor en la otra dirección. Comience con 2.6, luego cuando 3.x tenga un mejor soporte de terceros y así sucesivamente, será fácil migrar hacia él. Y no habrá mucho más por aprender, ya que 2.6 tiene características 3.x respaldadas. – aehlke

2

Utilice python 3.1, Luke.

+0

¿Por qué? -1. – aehlke

+1

Más personas que usan py3.x => puertos lib más rápidos. No me importa - + 1. –

+0

Eso es poco práctico e inútil para esta pregunta. – aehlke

3

Debe ir con la última versión de cualquier lenguaje de programación que aprenda a menos que tenga un motivo específico no a. Como no tiene un proyecto existente que no funcione con Python 3.0, no dude en usar la versión más reciente.

+4

-1. Consejo malo, miope: "Deberías ir con la última versión de cualquier lenguaje de programación": las cosas son mucho más matizadas que esto. Además, ¿qué versión más reciente? ¿Liberación estable? – aehlke

+1

"... a menos que tenga una razón específica para no hacerlo". No solo cites parte de una oración y dime que estoy equivocado. Toma todo en contexto. Sí, la última versión estable. –

+2

Todavía es un consejo equivocado. Él no tiene una razón específica para no hacerlo, es por eso que pregunta, pero puedo darle algunos. – aehlke

2

Python 3.1 no debería utilizarse hasta que otras bibliotecas hayan alcanzado el nivel de compatibilidad.

Debe usar 2.6 ahora. Tiene varias características 3.x con acceso de respaldo, por lo que migrar a 3.x no será difícil más adelante, y no aprenderá prácticas obsoletas.

+0

¿De verdad dependerá de la biblioteca de terceros? – riza

+0

Es bastante común. Aprender Python tiene que ver tanto con aprender la API como con el 'idioma' en sí mismo, y ¿por qué evitar extensiones útiles para la API? – aehlke

+0

Además, una vez que lo aprende y quiere hacer algo con él, dudo que sea lo suficientemente extenso desde ahora para un buen soporte de biblioteca de terceros, al menos un par de años. – aehlke

2

La buena noticia es que no es tan difícil aprender Python 2.xy 3.x. Puede instalar la última versión 2.x como la versión registrada en el sistema para ejecutar las secuencias de comandos de Python de forma predeterminada, pero también instalar la versión 3.x más reciente para iniciar de forma explícita cuando lo desee. Eso es lo que tengo en mi sistema Windows Vista.

A continuación, el documento clave para el aprendizaje de las diferencias entre las versiones 2.xy 3.x es:

http://docs.python.org/3.1/whatsnew/3.0.html

Si lee Python materiales por ahí que se basan en el aprendizaje y la 2.x Consulte también el enlace "Novedades en Python 3.0" que aparece arriba, comprenderá cómo cambiaron las cosas. También vea los otros documentos nuevos, como las diferencias entre 3.0 y 3.1, pero el enlace de arriba es el principal para comprender los cambios de 2.x contra 3.x.

+0

Esta respuesta es probablemente la más objetiva de todas las Py3-friendly. Si solo quiere "aprender Python", aprenda ambas cosas, instálelas una al lado de la otra y WET (escriba todo dos veces). Con cierta precaución, los programas más básicos serán portátiles entre estos dos * idiomas *. Si te enfrentas a una tarea pragmática, prefiero tener cuidado con Py3. No sé por qué algunas personas añoran un Py2.8. Diría que es un Py4 no compatible con Py3 (manteniendo algunas cosas buenas de Py3: combinar str y unicode, dejar AMBAS palabras clave). Mi Py4 sería en su mayoría compatible con Py2 y (menos importante) con Py3. –

7

Respuesta breve: comience con Python 2.6.

Por qué: la programación es más divertida y útil cuando puede aprovechar el trabajo de los demás.Esto significa utilizar bibliotecas de terceros a menudo. Muchas de las bibliotecas populares para Python aún no tienen soporte 3.x. PIL y NumPy/SciPy vienen a la mente. Mi intérprete favorito, ipython, tampoco funciona con 3.0 todavía. Muchos frameworks de pruebas unitarias y frameworks web tampoco están todavía en 3.0.

Así que si comienzas en 3.x, muchas puertas estarán cerradas para ti, al menos hasta que la conexión 3.x tome fuerza. Hay muchas características agradables en Python 3.x, pero algunas han sido transferidas a 2.6 y algunas más llegarán a 2.7. Así que quédate con 2.6 por ahora, y vuelve a evaluar 3.x en un año más o menos.

8

Uso 3.1

¿Por qué?

1) Porque mientras todos sigan usando 2.6, las bibliotecas tendrán menos razones para migrar a 3.1. Siempre y cuando esas bibliotecas no se hayan portado a 3.1, usted tiene la opción de no usar los puntos fuertes de 3.1, o solo hacer los trabajos a mitad de camino al usar la solución de hackeo de usar un conjunto de características retroiluminado. Sea un pensador avanzado y ayude a Python a avanzar.

2) Si aprende y usa 3.1 ahora, no tendrá que volver a aprenderlo más tarde cuando se complete el puerto de masa. Sé que algunas personas dicen que no tienes que aprender mucho, pero ¿por qué aprender la vieja basura? Python se está moviendo hacia 3.1, las bibliotecas se moverán hacia 3.1, y es una mierda tener que ponerse al día y volver a aprender un idioma que ya está utilizando.

3) 3.1 es todo un mejor lenguaje, más estable y más consistente que 2.6 ... esto es normal. Las lecciones aprendidas de 2.6 fueron vertidas en 3.1 para mejorarlo. Es un proceso llamado PROGRESS. Esta es la razón por la cual nadie todavía usa Windows 3.1. Es la forma en que las cosas avanzan ADELANTE. ¿Por qué crees que se tomaron la molestia de volver a portar un conjunto de características en primer lugar?

4) Si está aprendiendo Python, y aprende 2.6, para cuando esté realmente cómodo con el idioma, los puertos estarán fuera, y tendrá que aprender las bibliotecas y el lenguaje una vez más. Si comienza con 3.1, cuando se sienta cómodo con el idioma, los puertos estarán apagados y podrá aprender las bibliotecas que le interesen. Es un proceso más sencillo.

5) Para ser un mejor desarrollador. Si tiene que aprender y volver a aprender las mismas cosas, su comprensión no será muy profunda. Al aprender este idioma y sus bibliotecas solo una vez, tendrá más tiempo para trabajar con ellos en lugar de volver a aprender la sintaxis. Esto te permite entenderlos mejor. Si realmente te faltan algunas piezas al renunciar a las bibliotecas? ESCRIBIRLOS. Probablemente no necesites una biblioteca completa y, por lo general, puedas escribir solo aquellas piezas que necesites y desarrollar herramientas para ti. Esto, nuevamente, te ayuda a entender mejor el lenguaje y más profundamente.

+1

Permítanme traducir la respuesta anterior al lenguaje humano: "Sí, sacrifíquese por Python 3.x y úselo. Bibliotecas perdidas? No se preocupe, cuando más retoños como usted se muevan a Python 3.x, finalmente el los mantenedores de la biblioteca serán movidos por lástima y también por puerto a 3.x - usando 'six' o similares. Es un lenguaje mejor, y ser el doble de lento que 2.7 (lento ya, mente GIL) es solo un problema de implementación en CPython." Mi consejo: no escuches a otras personas. Toma tu propia decisión y soporta las consecuencias. Compruebe lo que funciona, no lo que los fanboys le dicen que es "correcto". –

Cuestiones relacionadas