jueves, 23 de febrero de 2012

python - lenguaje orientado a objeto

Hola!, hoy quiero presentarles un lenguaje de programación que vengo
aprendiendo. Se trata de Python, una apuesta por la simplicidad,
versatilidad y rapidez de desarrollo, así profesan desde su web
www.python.org
Este lenguaje va teniendo cada vez mas poder en la red, lo usan empresas
como yahoo, google, entre muchas mas, es muy censillo usarlo y sobre todo
potente, vamos a explorarlo un poco.

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:
.La cantidad de librerías que contiene, tipos de datos y funciones
incorporadas en el propio lenguaje, que ayudan a realizar muchas tareas
habituales sin necesidad de tener que programarlas desde cero.
.La sencillez y velocidad con la que se crean los programas. Un programa en
Python puede tener de 3 a 5 líneas de código menos que su equivalente en
Java o C.
.La cantidad de plataformas en las que podemos desarrollar, como Unix,
Windows, OS/2, Mac, Amiga y otros.
.Además, Python es gratuito, incluso para propósitos empresariales.

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.

Sintaxis:
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. Quizas esta indentación
complica un poco a los programadores ciegos pero con un buen editor y la
perfecta configuración del lector de pantalla se puede llevar.

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.
Librerías Estándar para Manejo Web:

Módulo URLLIB:
este módulo es uno de los más importantes, y contiene varias funciones que
permiten obtener información de la web, accediendo páginas y enviando
datos -por ejemplo, obtenidos con un formulario realizado con un simple
documento HTML-, y su ventaja es que sólo necesita una URL válida para poder
trabajar. Algunas de sus principales funciones, son:
.urllib.urlopen(): abre una conexión web con la url, retornando un puntero
al archivo.
.urllib.urlretrieve(): descarga el contenido de la url en un archivo de la
computadora, en la locación que ha sido especificada para ello. De lo
contrario, utiliza los temporales.
.urllib.quote(): toma datos de la cadena de la url, y las codifica. También
existe la función urllib.quote_plus(), y las funciones antagónicas,
urllib.unquote(), y urllib.unquote_plus().
.urllib.urlencode(): usando un diccionario de palabras clave, las codifica
como parte de una consulta en un pedido de url. EL formato es "clave=valor",
los cuales se mandan a quote_plus() para que sean codificados.

Módulo URLPARSE:
este módulo contiene funciones especiales para la desestructuración y
reestructuración de cadenas de URL, es decir que provee abstracciones
ideales para manipular cadenas de URL, que pueden obtenerse por una simple
lectura raw, transformada en secuencia de caracteres. Hay tres funciones que
merecen ser destacadas:
.urlparse.urlparse(): desarma una cadena de URL en todos los componentes de
la misma, considerando una séxtupla con (prot_sch, net_loc, ruta,
parámetros, consulta, frag).
.urlparse.urlunparse(): hace lo contrario que la función anterior, reuniendo
la séxtupla en una sola variable que contiene la cadena url.
.urlparse.urljoin(): es muy útil para unir url de diferentes páginas de una
misma web. Toma la url base, y la une con la ruta base en la nueva url.

Módulo CGI:
esta es una librería que facilita la escritura de scripts CGI: provee
principalmente funciones para el acceso a variables globales y de entrada
estándar de los scripts antes mencionado. Esto facilita en gran medida, el
manejo de las entradas recibidas desde formularios (por ejemplo, los creados
con HTML). A su vez, contiene funciones de escape que permiten el uso de
caracteres no comunes

Módulo FTPLIB:
Como su nombre lo indica, esta librería dispone de funciones para
implementar la forma de cliente, en un protocolo ftp.

Módulo BASEHTTPSERVER:
esta librería permite implementar el lado servidor del protocolo HTTP.
Debido a la orientación a objetos que expone el presente módulo, se puede
simplemente derivar de la clase correspondiente, para crear un servidor
HTTP, y comenzar a trabajar con él, haciendo uso de las demás funciones
ofrecidas por ésta, y otras librerías.

Ya en futuro post podremos ir viendo mas librerías, aunque este lenguaje
por tener la indentación me volvió loco durante 2 años, no me dejaré vencer,
así que los invito a probarlo y si encuentran módulos o clases interesantes
me avisan para armar una nueva entrada.

2 comentarios:

Gustavo Ramirez dijo...

Excelente post miguel . Sería interesante armar un post de que se necesita para empezar reuniendo todas las cosas que uno encuentra y prueba como el editor, la versión de python, librerías destacadas como wx etc. en cuanto a web creo que web2py debería tener también un apartado a futuro es un buen framework rápido y potente.

Manuel Eduardo Cortéz Vallejo dijo...

Fue muy interesante y creo que nunca terminarías si lo que se pretende hacer es una explicación de las librerías interesantes acerca de este lenguaje, pues todas tienen bastante interés. Puedes reseñar librerías como web2py, DJango en el apartado de frameworks para la web, pygst para las veces de reproducción de audio (es un binding para Gstreamer), gtk+3 para crear ventanas GTK en GNU/Linux, las cuales están puenteadas con ATK... etc. como vez hay un mundo de posibilidades que puedes reseñar en Python; yo programo sobre él y la verdad es que me ha parecido mucho más claro a, por ejemplo c++... y lo de la indentación no debería ser problema, yo solo con Gedit y Orca me basto... Saludos, excelente artículo.