Luego de leer al respecto en varias fuentes, la respuesta que daré puede ser rara para algunos: nada. De echo, tiene menos. Quieren probarlo, solo les diré que es más fácil hacer que un código en Python 3 corra en Python 2 que lo contrario: puede verse a Python 3 como un subconjunto de Python 2.
No quiero escribir sobre lo nuevo de Python 3 (ya que pueden encontrar mucho material al respecto) sino de lo que he entendido fue la inspiración de Python 3.
Python 3 fue diseñado para honrar el principio "debe haber una-- y preferiblemente una --manera obvia de hacerlo" del Zen de Python[1].
Python 3 ha sido un intento por pulir aún más este lenguaje de pequeños detalles que sus creadores sentían incómodos y existían solo para mantener la compatibilidad hacia atrás del lenguaje. La solución fue eliminar esta compatibilidad. Parafraseando a Guido: "Es una oportunidad que él mismo se está dando para corregir esas decisiones de diseño equivocadas que tomó al principio del desarrollo de Python que no podría corregir sin romper el código de todos"[2].
Los cambios en la biblioteca dan testimonio de que se trata de una cuestión de honrar el sentido común en el diseño del lenguaje, pero sobre todo el Zen de Python referido. Por ejemplo:
- Renombrar los módulos para que todos los nombres cumplan con la guía de estilo de Python (una sola forma de nombrar los módulos).
- Eliminar la costumbre de tener dos nombres de módulos (uno de ellos con una c prefijada) si había una versión rápida implementada en C (un solo nombre de módulo).
- Agrupar los módulos parecidos en un paquete común, por ejemplo, md5 y shasum ahora forman parte de hashlib (un solo punto de acceso para algoritmos similares).
Sin embargo, Python 3 trajo nuevos elementos al lenguaje, como la sentencia with, y la comprensión de conjuntos y diccionarios. Pero estos elementos han sido portados a Python 2 para hacer la transición a Python 3 más fácil.
[1] http://en.wikipedia.org/wiki/Python_3000#Version_3.0
[2] http://www.youtube.com/watch?v=s-fKcZ5pKLE#t=2m20s
Más enlaces sobre el tema:
http://www.b-list.org/weblog/2008/dec/05/python-3000/
http://diveintopython3.org/
http://www.ibm.com/developerworks/linux/library/l-python3-1/
Tener una nueva versión de un lenguaje donde es más fácil migrar hacia adelante que hacia atrás es un avance enorme. Eso habla de una claridad conceptual muy singular. Donde otros lenguajes lo que hacen es añadir periquitos, viene el proyecto Python y lo que hace es limpiar la casa (en una casa bastante limpia de por sí). Cosas como las comprensiones de diccionarios surgen de esa búsqueda de orden y estructura impecable, ocurre de un modo por completo natural
ResponderBorrarPd: Cuida tu ortografía.
maukAriza Precisamente es lo que más interesante me parece del proceso que se realizó para desarrollar Python 3: tan diferente a todos los otros casos en el mundo. Por eso creo que Python 3 será un caso de estudio para las generaciones futuras como "el raro caso donde se quitó más de lo que se puso en una nueva versión de algún software".
ResponderBorrarPd: gracias por la alerta.