domingo, diciembre 11, 2005

Mini Intro al Lenguaje Python extended

Aquí de nuevo les quiero dejar un mini mini intro al lenguaje de programación python.
Es una maravilla para comenzar a programar por su simpleza y la forma de la sintaxis.
Se pueden hacer muchas cosas con menos que otros lenguajes como C, Java o C++.
Les cuento que es mi lenguaje favorito, ademas de programar en otros.
Les dejo un mini tuto para que tengan una idea de este lenguaje
tan c00l orientado TOTALMENTE objetos.
Para más información visiten: Python Homepage
Se pide una noción basica lenguajes orientados a objetos, clases etc. Sino quedan en bolainas.
Lo escribí muy rapido, si queda medio confuso me chiflan!


#Definicion de Clase
class Test:
__variablePrivada = None
#Constructor, va de esta forma:
def __init__(self):
bloque...
.........
#Declaración de un metodo genérico sin parámetros.
def metodo(self):
print 'hola, soy un metodo'

#Setter de una variable privada
def setVariablePrivada(self, valorPasadoExternamente):
self.__variablePrivada = valorPasadoExternamente

#Método interno a la clase e inaccesible desde otra
#clase o package
def __soyUnMetodoPrivado(self):
print 'No puedo ser llamado externamente'

#Soy un método interno a la clase y al package,
#notar que solo tengo un '_' y no 2
def _soyUnMetodoPrivado(self):
print """No puedo ser llamado externamente,
si desde el mismo package"""

Las variables "self.__variable" son accesibles de forma
privada "a la private" desde un método de la clase.
Hay una nomenclatura agregando '__variable' o '_variable'
y eso nos limita la forma de acceso a la interfaz de la clase.
(leer en el manual de Guido's, el creador del lenguaje)
En python, TODO es un objeto, no como java :P,
incluso el programador!!.

Para instanciar una clase no existe el "new" como en java.
La clase se instancia de acuerdo a como importaste el package:
Si haces un "import myPackage" tenes q instanciar
objeto = myPackge.Test(constructorParametros).
Si haces un "from myPackage import Test" podes instanciar
objeto = Test(constructorParametros).

Los métodos o funciones llevan el "def nombre(self):"
con sus respectivos underscores delante del nombre en acuerdo
a la accesiblidad que le queramos dar al método.

IMPORTANTE: la sintaxis es IDENTADA, no existen los punto
y comas y esas cosas.
Es molesto al principio! pero es super legible.
Y despues cuando empezas a hacer mas con menos, lo amas!
El parser de python toma los espacios identados como parte
de la sintaxis.
ej:
def funcion(self):
print 'hola'
#esta declaración es correcta.

def funcion(self):
print 'hola mundo'

#esta declaracion arrojaria un error del tipo:
IndentationError: expected an indented block

Python fue creado por Guido van Rossum, un residente de Holanda.
Python, al igual que tcl y perl, es un Lenguaje totalmente
interpretado, esto quiere decir que no se necesita compilar
los fuentes a diferencia de C o C++, sino que es ejecutado en runtime.
Además, python es TOTALMENTE portable, sigue la idea de
"write once, run it anywhere" lo que hace que nuestro código sea
multiplataforma sin hacer ni un solo retoque de nuestro código.

Python esta disponible para una multitud de Plataformas:
Linux, Windows, UNIX(solaris, AIX, OS X), AMIGA OS, y unas
tantas mas.

Recientemente, ha salido una implementacion para una serie
de los teléfonos Nokia, esto quiere decir, que nuestro
código python puede correr, incluso, en un simple cell phone!!.
Tiene un sin fin de packages y librerias para hacer
lo que quieras.

Una de las cosas que me gustó mucho, es la programacion de
GUI ( graphic user interfaces) utilizando GLADE + pyGTK
( C bindings de gtk para python ) y python.
Con estas librerías se puede hacer una interfaz gráfica
en solo minutos separando de forma ordenada la parte gráfica
de la parte lógica de nuestra aplicación.
La mayoría de las aplicaciones que hay en RedHat ES 3.0/4.0
para la configuración gráfica del sistema Operativo residen en
esta tendencia de diseño. Un ejemplo es el Up2date que se
encarga de mantener nuestro sistema operativo al día en cuanto
a actualizaciones de software se refiere (bugs, updates, etc).
Cual es la ventaja? Diseño rápido de aplicaciones gráficas(RAD)
y portabilidad extrema en nuestro código.

Además de poder utilizar algun IDE de desarrollo, como
Komodo de ActiveState o Wing ( ambos de pago, pero son los
mejores IDE para mi gusto),
solo con tipear python y ya tenes el shell python interactiva
para probar asignaciones, metodos, clases!
Algunas estructuras de datos: listas, tuplas y diccionarios.
Tiene un amplio paquetes de clases y es SUPER LEGIBLE,
it's c00l ;)
Prontamente les dejo un programita para que vean el manejo
del lenguaje.
Algunos tips para sacarles dudas! y espero les haya gustado
mi mini intro a python.
Si alguien me presta su webserver para colgarlo, lo subo ahora :)
A jugar con Python y espero lo hayan disfrutado!!!
GUs.-

3 Comments:

At 11:27 p. m., Anonymous Anónimo said...

Hola viteh, te escribe gr00v

Bueno voy a opinar de esto. Solo 2 cosas tengo por decir:

1) Java es un dolor en el culo por la cantidad de clases repetidas y demas cosas, que tratan de abstraer cosas y las terminan haciendo tan granuladas que no sirve para nada, pero aun asi hay que saberlo por que si queres hacer $ no te queda otra (en lo que a programacion se refiere, comercialmente, en argentina). :P

2) la separacion de bloques de python por indentacion es la peor estupides que vi en toda mi vida, no puedo creer que para que un programador atorrante indente bien su programa (por que no se digno a usar nunca el $ indent) tengan que hacer que el programa no compile, u aun peor funcione como no queremos.

Simples puntos de vista de un loco
del C/C++

 
At 11:28 p. m., Anonymous Anónimo said...

Uh me olvide lo mas importante luego del bardo, saludos guhus sos groso sabelo

 
At 11:31 p. m., Blogger persevero said...

gr00va! nah, lo de groso lo dejamos para nose, otra vida quizas? y entre nosotros, yo aprendi bastante de UD.
La identacion es cuestion de gusto, identar lo tenes que hacer igual, si queres hacer un codigo legible, es cuestion de costumbre, te lo aseguro. C/C++ no se discute.
;) , keep going master.

 

Publicar un comentario

<< Home