Python es un lenguaje de programación interpretado cuya filosofía hace hincapié en una sintaxis que favorezca un código legible.
Se trata de un lenguaje de programación multiparadigma, ya que soporta orientación a objetos, programación imperativa y, en menor medida, programación funcional.
Es un lenguaje interpretado, usa tipado dinámico y es multiplataforma.
Es un lenguaje interpretado, usa tipado dinámico y es multiplataforma.
Es administrado por la Python Software Foundation. Posee una licencia de código abierto, denominada Python Software Foundation License, que es compatible con la Licencia pública general de GNU a partir de la versión 2.1.1, e incompatible en ciertas versiones anteriores.
VENTAJAS
* Desarrollo más rápido : Puedes escribir un programa, salvarlo y ejecutarlo. En un lenguaje compilado tienes que pasar por los pasos de compilar y ligar el software, lo cual puede ser un proceso lento.
* Multiplataforma : El mismo código funciona en cualquier arquitectura, la única condición es que disponga del intérprete del lenguaje. No es necesario compilar el código una vez para cada arquitectura.
DESVENTAJAS
* Lentitud : Los programas interpretados son más lentos que los compilados. Sin embargo los programas interpretados suelen ser cortos, en los que la diferencia es inapreciable.
* Lentitud : Los programas interpretados son más lentos que los compilados. Sin embargo los programas interpretados suelen ser cortos, en los que la diferencia es inapreciable.
CARACTERÍSTICAS Y PARADIGMAS
Python es un lenguaje de
programación multiparadigma.
Esto significa que más que forzar a los programadores a adoptar un estilo particular de programación, permite varios estilos: programación orientada a objetos, programación imperativa y programación funcional. Otros paradigmas están soportados mediante el uso de extensiones.
Esto significa que más que forzar a los programadores a adoptar un estilo particular de programación, permite varios estilos: programación orientada a objetos, programación imperativa y programación funcional. Otros paradigmas están soportados mediante el uso de extensiones.
Python usa tipado dinámico y conteo de referencias para la administración de
memoria.
Una característica importante de
Python es la resolución dinámica de nombres; es decir, lo que enlaza un método
y un nombre de variable durante la ejecución del programa (también llamado
enlace dinámico de métodos).
Otro objetivo del diseño del
lenguaje es la facilidad de extensión. Se pueden escribir nuevos módulos
fácilmente en C o C++. Python puede incluirse en aplicaciones que necesitan
una interfaz programable.
Aunque la programación en Python
podría considerarse en algunas situaciones hostil a la programación funcional tradicional
del Lisp,
existen bastantes analogías entre Python y los lenguajes minimalistas de la
familia Lisp como puede ser Scheme.
PRINCIPALES
CARACTERÍSTICAS DEL LENGUAJE PYTHON
Python
es un lenguaje de programación creado por Guido van Rossum a finales de los
ochenta, y que gracias a sus características ha llegado a ser un lenguaje muy
conocido en la actualidad. A continuación se listan las principales
características que este lenguaje posee:
SIMPLE:
Python
es un lenguaje muy simple, por lo que es muy fácil iniciarse en este lenguaje.
El pseudo-código natural de
Python es una de sus grandes fortalezas.
PROPÓSITO GENERAL:
Usando
el lenguaje Python se puede crear todo tipo de programas; programas de
propósito general y también se pueden desarrollar páginas Web.
OPEN SOURCE:
Débito
a la naturaleza de Python de ser Open Suorce; ha sido modificado para que pueda
funcionar en diversas plataformas (Linux, Windows, Macintosh, Solaris, OS/2,
Amiga, AROS, AS/400, BeOS, OS/390, z/OS, Palm OS, QNX, VMS, Psion, Acorn RISC
OS, VxWorks, PlayStation, Sharp Zaurus, Windows CE y PocketPC).
Al ser
Open Source es gratuito.
LENGUAJE ORIENTADO A OBJETOS:
Al ser
un Lenguaje Orientado a Objetos es construido sobre objetos que combinan datos
y funcionalidades.
LENGUAJE DE ALTO NIVEL:
Al
programar en Python no nos debemos preocupar por detalles de bajo nivel, (como
manejar la memoria empleada por el programa).
INCRUSTABLE:
Se
puede insertar lenguaje Python dentro un programa C/C++ y de esta manera
ofrecer las facilidades del scripting.
EXTENSAS LIBRERÍAS:
Python
contiene una gran cantidad de librerías, tipos de datos y funciones
incorporadas en el propio lenguaje, que ayudan a realizar muchas tareas comunes
sin necesidad de tener que programarlas desde cero.
Las
librerías pueden ayudar a hacer varias cosas como expresiones regulares,
generación de documentos, evaluación de unidades, pruebas, procesos, bases de
datos, navegadores web, CGI, ftp, correo electrónico, XML, XML-RPC, HTML,
archivos WAV, criptografía, GUI, y también otras funciones dependientes del
Sistema.
SINTAXIS CLARA:
Python
tiene una sintaxis muy visual, gracias a que maneja una sintaxis identada (con
márgenes), que es de carácter obligatorio. Para separar los bloques de código
en Python se debe tabular hacia dentro. Esto ayuda a que todos los
programadores adopten las mismas notaciones y que los programas hechos en
Python tengan un aspecto muy similar.
Versiones
Cronología
de Python
PRIMERA PUBLICACIÓN
En 1991, Van Rossum publicó el código
de la versión 0.9.0 en alt.sources.
En esta etapa del desarrollo ya estaban presentes clases con herencia, manejo de excepciones,funciones y los tipos modulares, como:
Además en este lanzamiento inicial aparecía un sistema de módulos adoptado de Modula-; Van Rossum describe el módulo como “una de las mayores unidades de programación de Python. El modelo de excepciones en Python es parecido al de Modula-3, con la adición de una cláusula
En esta etapa del desarrollo ya estaban presentes clases con herencia, manejo de excepciones,funciones y los tipos modulares, como:
str
, list
, dict
, entre otros.Además en este lanzamiento inicial aparecía un sistema de módulos adoptado de Modula-; Van Rossum describe el módulo como “una de las mayores unidades de programación de Python. El modelo de excepciones en Python es parecido al de Modula-3, con la adición de una cláusula
else
. En el año 1994 se formó comp.lang.python,
el foro de discusión principal de Python, marcando un hito en el crecimiento
del grupo de usuarios de este lenguaje.
VERSIÓN 1.0
Python llega a la versión 1.0 en enero
de 1994.
Las características más importantes incluidas en esta publicación fueron las herramientas de la programación funcionallambda,
Van Rossum ha comentado que "Python adquiere lambda, reduce(), filter() and map(), cortesía de un hacker de Lisp que las extrañaba y envió parches que funcionaban".
Las características más importantes incluidas en esta publicación fueron las herramientas de la programación funcionallambda,
reduce
, filter
y map
. Van Rossum ha comentado que "Python adquiere lambda, reduce(), filter() and map(), cortesía de un hacker de Lisp que las extrañaba y envió parches que funcionaban".
La última versión liberada proveniente
de CWI fue Python 1.2. En 1995, van Rossum continuó su trabajo en Python en la Corporation for
National Research Initiatives (CNRI)
en Reston, Virginia, donde lanzó varias versiones del software.
Para la versión 1.4, Python adquirió
varias características nuevas. Es notable entre estas los argumentos por nombre
inspirados por Modula-3 y soporte "built-in" para los números
complejos.
Durante su estancia en CNRI, Van
Rossum lanzó la iniciativa Computer
Programming for Everybody (CP4E),
con el fin de hacer la programación más accesible a más gente, con un nivel de
'alfabetización' básico en lenguajes de programación, similar a las habilidades
básicas en inglés y matemáticas necesarias por muchos empleadores.
Python tuvo un papel crucial en este proceso: debido a su orientación hacia una sintaxis limpia, ya era idóneo, y las metas de CP4E presentaban similitudes con su predecesor, ABC.
El proyecto fue patrocinado por DARPA. El proyecto CP4E está inactivo, y mientras tanto Python intenta ser fácil de aprender y no muy arcano en su sintaxis y semántica, pero alcanzar a los no-programadores ya no es una preocupación activa.
Python tuvo un papel crucial en este proceso: debido a su orientación hacia una sintaxis limpia, ya era idóneo, y las metas de CP4E presentaban similitudes con su predecesor, ABC.
El proyecto fue patrocinado por DARPA. El proyecto CP4E está inactivo, y mientras tanto Python intenta ser fácil de aprender y no muy arcano en su sintaxis y semántica, pero alcanzar a los no-programadores ya no es una preocupación activa.
BeOpen
En el año 2000, el equipo principal de
desarrolladores de Python se cambió a BeOpen.com para formar el equipo BeOpen PythonLabs.
CNRI pidió que la versión 1.6 fuera publicada hasta el punto de desarrollo en que el equipo abandonó CNRI. Consecuentemente su agenda de lanzamiento para la versión 1.6 y la versión 2.0 tenían una significativa cantidad de solapamiento.
Python 2.0 fue el primer y único lanzamiento de BeOpen.com. Después que Python 2.0 fuera publicado por BeOpen.com, Guido van Rossum y los otros desarrolladores de PythonLabs se unieron a Digital Creations.
CNRI pidió que la versión 1.6 fuera publicada hasta el punto de desarrollo en que el equipo abandonó CNRI. Consecuentemente su agenda de lanzamiento para la versión 1.6 y la versión 2.0 tenían una significativa cantidad de solapamiento.
Python 2.0 fue el primer y único lanzamiento de BeOpen.com. Después que Python 2.0 fuera publicado por BeOpen.com, Guido van Rossum y los otros desarrolladores de PythonLabs se unieron a Digital Creations.
La publicación de Python 1.6 incluía
una nueva licencia de CNRI que era substancialmente más larga que la licencia
de CWI que había sido usada en las publicaciones anteriores.
La nueva licencia incluía una cláusula estipulando que la licencia estaba gobernada por las leyes del estado de Virginia.
La Free Software Foundation (FSF) argumento la cláusula era incompatible con GNU GPL. Entonces BeOpen, CNRI, y FSF acordaron cambiar Python hacia una licencia de software libre que lo haría compatible con GPL. Python 1.6.1 es básicamente el mismo que Python 1.6, con unos arreglos de bugs, y con la nueva licencia compatible con GPL.
La nueva licencia incluía una cláusula estipulando que la licencia estaba gobernada por las leyes del estado de Virginia.
La Free Software Foundation (FSF) argumento la cláusula era incompatible con GNU GPL. Entonces BeOpen, CNRI, y FSF acordaron cambiar Python hacia una licencia de software libre que lo haría compatible con GPL. Python 1.6.1 es básicamente el mismo que Python 1.6, con unos arreglos de bugs, y con la nueva licencia compatible con GPL.
VERSIÓN 2.0
Python 2.0 tomó una importante
característica del lenguaje de programación
funcional Haskell:
generación de listas.
La sintaxis de Python para esta construcción es muy similar a la de Haskell, salvo por la preferencia de los caracteres de puntuación en Haskell, y la preferencia de Python por palabras claves.
Python 2.0 introdujo además un sistema de recolección de basura capaz de recolectar referencias cíclicas.
La sintaxis de Python para esta construcción es muy similar a la de Haskell, salvo por la preferencia de los caracteres de puntuación en Haskell, y la preferencia de Python por palabras claves.
Python 2.0 introdujo además un sistema de recolección de basura capaz de recolectar referencias cíclicas.
Python 2.1 fue un trabajo derivado de
Python 1.6.1, así como también de Python 2.0. Su licencia fue renombrada a: Python Software Foundation License.
Todo el código, documentación y especificaciones añadidas, desde la fecha del lanzamiento de la versión alfa de Python 2.1, pertenece a Python Software Foundation (PSF), una organización sin ánimo de lucro fundada en el año 2001, tomando como modelo la Apache Software Foundation.
Este lanzamiento incluyó un cambio en el lenguaje para soportar ámbitos anidados (más conocido en programación como "nested scopes") como lo soportan otros lenguajes de "static scoping" (del cual Scheme es el originador). (Esta características fue deshabilitada por defecto, y no requerida, hasta Python 2.2.)
Todo el código, documentación y especificaciones añadidas, desde la fecha del lanzamiento de la versión alfa de Python 2.1, pertenece a Python Software Foundation (PSF), una organización sin ánimo de lucro fundada en el año 2001, tomando como modelo la Apache Software Foundation.
Este lanzamiento incluyó un cambio en el lenguaje para soportar ámbitos anidados (más conocido en programación como "nested scopes") como lo soportan otros lenguajes de "static scoping" (del cual Scheme es el originador). (Esta características fue deshabilitada por defecto, y no requerida, hasta Python 2.2.)
Una gran innovación en Python 2.2 fue
la unificación de los tipos en Python (tipos escritos en C), y clases (tipos
escritos en Python) dentro de una jerarquía. Esa unificación logró un modelo
orientado a objetos de Python puro y consistente. También fueron agregados los generadores que fueron inspirados por el lenguaje Icon.
VERSIÓN 3.0
Python 3.0 (también conocido como
"Python 3000" o "Py3K") fue diseñado para rectificar
ciertas fallas fundamentales en el diseño del lenguaje (los cambios requeridos
no podían ser implementados mientras se mantuviera compatibilidad hacia atrás
con la serie 2.x).
El principio que guía Python 3 es: "reducir la duplicación de características eliminando viejas formas de hacer las cosas ".
El principio que guía Python 3 es: "reducir la duplicación de características eliminando viejas formas de hacer las cosas ".
FILOSOFÍA
Python 3.0 fue desarrollado con la
misma filosofía que en las versiones anteriores.
Sin embargo, como Python ha acumulado nuevas y redundantes formas de programar la misma tarea, Python 3.0 ha hecho énfasis en eliminar constructores duplicados y módulos, en consecuencia con "Debe haber un— y preferiblemente solo un —modo obvio de hacerlo".
Sin embargo, como Python ha acumulado nuevas y redundantes formas de programar la misma tarea, Python 3.0 ha hecho énfasis en eliminar constructores duplicados y módulos, en consecuencia con "Debe haber un— y preferiblemente solo un —modo obvio de hacerlo".
A pesar de esto, Python 3.0 se
mantiene como un lenguaje de programación multiparadigma.
Los programadores todavía tienen opciones entre orientación a objetos,programación estructurada, programación funcional y otros paradigmas, pero dentro de estas amplias opciones, los detalles intentan ser más obvios en Python 3.0 que como eran en Python 2.x.
Los programadores todavía tienen opciones entre orientación a objetos,programación estructurada, programación funcional y otros paradigmas, pero dentro de estas amplias opciones, los detalles intentan ser más obvios en Python 3.0 que como eran en Python 2.x.
CRONOLOGÍA Y COMPATIBILIDAD
Python 3.0 fue liberado el 3 de
diciembre de 2008.
Las series Python 2.x y Python 3.x estaban planeadas para coexistir por varias publicaciones lanzándolas en paralelo, con la serie 2.x existente mayormente por compatibilidad y con algunas nuevas características siendo importadas hacia atrás de la serie 3.x. Python 2.6 fue liberado para coincidir con Python 3.0, e incluye algunas características de esa publicación, así como un modo de "alertas (warnings)" que resalta el uso de características que han sido eliminadas en Python 3.0.
Similarmente, Python 2.7 coincide e incluye características de Python 3.1, que fue publicado el 26 de junio de 2009. Python 2.7 fue la última publicación en la serie 2.x; las publicaciones en paralelo terminaron con Python 3.2.
Las series Python 2.x y Python 3.x estaban planeadas para coexistir por varias publicaciones lanzándolas en paralelo, con la serie 2.x existente mayormente por compatibilidad y con algunas nuevas características siendo importadas hacia atrás de la serie 3.x. Python 2.6 fue liberado para coincidir con Python 3.0, e incluye algunas características de esa publicación, así como un modo de "alertas (warnings)" que resalta el uso de características que han sido eliminadas en Python 3.0.
Similarmente, Python 2.7 coincide e incluye características de Python 3.1, que fue publicado el 26 de junio de 2009. Python 2.7 fue la última publicación en la serie 2.x; las publicaciones en paralelo terminaron con Python 3.2.
Python 3.0 rompe la compatibilidad
hacia atrás. El
código de Python 2.x no necesariamente debe "correr" en Python 3.0
sin modificarlo.
Hay cambios básicos tales como el cambio de
El tipado dinámico de Python combinado con los planes para cambiar la semántica de ciertos métodos de los diccionarios, por ejemplo, hacen que convertir perfectamente de Python 2.x a Python 3.0 sea muy difícil de manera automática.
Sin embargo, una herramiento llamada "2to3" puede hacer la mayoría del trabajo de "traducción", señalando áreas que confusas para ella usando comentarios o alertas. Incluso en la etapa "alpha", 2to3 se mostraba claramente satisfactoria para ejecutar las traducciones del código.
For projects requiring compatibility with both the 2.x and 3.x series, the Python development team recommended keeping one source (for the 2.x series), and producing releases for the Python 3.x platform using 2to3. Edits to the Python 3.x code were discouraged for so long as the code needed to run on Python 2.x.
Hay cambios básicos tales como el cambio de
print
en una función (por lo tanto cualquier
uso como print
"Hello Python"
provocará un error en Python 3.x), y
el cambio a Unicode para todos los textos
"strings".El tipado dinámico de Python combinado con los planes para cambiar la semántica de ciertos métodos de los diccionarios, por ejemplo, hacen que convertir perfectamente de Python 2.x a Python 3.0 sea muy difícil de manera automática.
Sin embargo, una herramiento llamada "2to3" puede hacer la mayoría del trabajo de "traducción", señalando áreas que confusas para ella usando comentarios o alertas. Incluso en la etapa "alpha", 2to3 se mostraba claramente satisfactoria para ejecutar las traducciones del código.
For projects requiring compatibility with both the 2.x and 3.x series, the Python development team recommended keeping one source (for the 2.x series), and producing releases for the Python 3.x platform using 2to3. Edits to the Python 3.x code were discouraged for so long as the code needed to run on Python 2.x.
CARACTERÍSTICAS
Algunos de los mayores cambios
anunciados para Python 3.0 fueron:
print
de modo que sea una función
"built-in", no una instrucción. Esto ha hecho que sea más fácil
cambiar un módulo para usar una función print
diferente, así como hacer la sintaxis
más regular. En Python 2.6 y 2.7 esta característica puede ser habilitada
usando from-future-port print-unction
.reduce
(pero no map
o filter
)
fuera del espacio de nombres "built-in" dentro de
"functools".str
/unicode
,
representando texto, e introduciendo un tipo immutable bytes
;
y un más correspondiente tipo mutable bytearray
,
ambos de los cuales representas "arrays" de bytes;
Las subsecuentes publicaciones de la
serie Python 3.x han incluido sustanciales nuevas características; todas al
corriente del desarrollo que el lenguaje ha tenido en la serie 3.x.
ESPECIFICACIONES
Python es un lenguaje de scripting independiente de plataforma y orientado
a objetos, preparado para realizar cualquier tipo de programa, desde
aplicaciones Windows a servidores de red o incluso, páginas web. Es un lenguaje
interpretado, lo que significa que no se necesita compilar el código fuente
para poder ejecutarlo, lo que ofrece ventajas como la rapidez de desarrollo e
inconvenientes como una menor velocidad.
En los últimos años el lenguaje se ha hecho muy popular, gracias a varias razones como:
En los últimos años el lenguaje se ha hecho muy popular, gracias a varias razones como:
DE DÓNDE VIENE PYTHON
El creador del lenguaje es un europeo llamado Guido Van Rossum. Hace ya más de una década que diseño Python, ayudado y motivado por su experiencia en la creación de otro lenguaje llamado ABC.
El objetivo de Guido era cubrir la necesidad de un lenguaje orientado a objetos de sencillo uso que sirviese para tratar diversas tareas dentro de la programación que habitualmente se hacía en Unix usando C.
El desarrollo de Python duró varios años, durante los que trabajó en diversas compañías de Estados Unidos. En el 2000 ya disponía de un producto bastante completo y un equipo de desarrollo con el que se había asociado incluso en proyectos empresariales.
Actualmente trabaja en Zope, una plataforma de gestión de contenidos y servidor de aplicaciones para el web, por supuesto, programada por completo en Python.
CARACTERÍSTICAS DEL LENGUAJE
PROPÓSITO GENERAL
Se pueden crear todo tipo de programas. No es un lenguaje creado específicamente para la web, aunque entre sus posibilidades sí se encuentra el desarrollo de páginas.
MULTIPLATAFORMA
Hay versiones disponibles de Python en muchos sistemas informáticos distintos. Originalmente se desarrolló para Unix, aunque cualquier sistema es compatible con el lenguaje siempre y cuando exista un intérprete programado para él.
INTERPRETADO
Quiere decir que no se debe compilar el código antes de su ejecución. En realidad sí que se realiza una compilación, pero esta se realiza de manera transparente para el programador. En ciertos casos, cuando se ejecuta por primera vez un código, se producen unos bytecodes que se guardan en el sistema y que sirven para acelerar la compilación implícita que realiza el intérprete cada vez que se ejecuta el mismo código.
INTERACTIVO
Python dispone de un intérprete por línea de comandos en el que se pueden introducir sentencias. Cada sentencia se ejecuta y produce un resultado visible, que puede ayudarnos a entender mejor el lenguaje y probar los resultados de la ejecución de porciones de código rápidamente.
ORIENTADO A OBJETOS
La programación orientada a objetos está soportada en Python y ofrece en muchos casos una manera sencilla de crear programas con componentes reutilizables.
FUNCIONES Y LIBRERÍAS
Dispone de muchas funciones incorporadas en el propio lenguaje, para el tratamiento de strings, números, archivos, etc. Además, existen muchas librerías que podemos importar en los programas para tratar temas específicos como la programación de ventanas o sistemas en red o cosas tan interesantes como crear archivos comprimidos en .zip.
SINTAXIS CLARA
Por último, destacar que Python tiene una sintaxis muy visual, gracias a una notación identada (con márgenes) de obligado cumplimiento.
En muchos lenguajes, para separar porciones de código, se utilizan elementos como las llaves o las palabras clave begin y end.
Para separar las porciones de código en Python se debe tabular hacia dentro, colocando un margen al código que iría dentro de una función o un bucle.
Esto ayuda a que todos los programadores adopten unas mismas notaciones y que los programas de cualquier persona tengan un aspecto muy similar.
CONCLUSIÓN
Python está en movimiento y en pleno desarrollo, pero ya es una realidad y una interesante opción para realizar todo tipo de programas que se ejecuten en cualquier máquina. El equipo de desarrollo está trabajando de manera cada vez más organizada y cuentan con el apoyo de una comunidad que está creciendo rápidamente.
No hay comentarios:
Publicar un comentario