Acerca de python
nocreyente
nocreyentes en terra.es
Lun Nov 13 02:27:22 CET 2006
Hanlle Nicolas escribió:
> de que el pentagono use x lenguaje no significa que
> sea la ostia..
correcto
> ademas saber mas de 80 lenguajes de progrmacion no te
> hace buen programador eso es absurdo..
pero ayuda a que puedas compararlos mejor:
- Tipado estatico vs tipado dinamico
- Tipado fuerte vs tipado debil
- Orientacion a objetos, funcional, declarativo, todas las anteriores.
- Compilado vs interpretado
- si es real time o no
- comodidad de sintaxis
- rendimiento
- ...
Hay muchas caracteristicas con las que valorar un lenguaje. A mi me
gusta (salvo que tenga que sacrificar cosas)* uno que tenga lo siguiente:
- Tipado dinamico para no tener que andar declarando el tipo a cada rato
- Tipado fuerte para no tener que aprenderme una barbaridad de
operadores como en perl (ejemplo:los de cadena y los de numeros en
contexto escalar)
- Que sea multiparadigma y pueda elegir la programación funcional u
orientada a objetos segun me convenga
- Que sea interpretado para no tener que andar compilando (a no ser que
el rendimiento sea algo necesario)
- No me importa si es real-time o no, porque no suelo hacer el tipo de
aplicaciones que lo requieren
- que tenga una sintaxis comoda. El que siempre este bien tabulado como
es el caso de python tb mola.
- si se ejecuta rapido mejor que mejor. aunque normalmente suelo valorar
más mi tiempo que el de la maquina.
- que las variables se liberen automaticamente y te salven de memory
leaks desagradables
- ...
* hay veces en las que el C es la mejor opcion, aunque no sea la más
comoda, por temas de rendimiento.
> y la verdad mi comentario solo
> va por que no he encontrado nada que no pueda hacer con perl..
Es lo que tienen los lenguajes turing-completos, que con todos ellos se
pueden llegar a hacer lo mismo.
He llegado a ver incluso una manera de computación turing-completa con
maquetas de trenes que pueden computar lo mismo que tu perl :-P
La diferencia no esta en lo que se pueda hacer o no, sino en la forma de
hacerlo. Prefiero python a perl por varias cosas:
- el tipado fuerte me gusta mas que el debil.
- en perl no es que hay más de una manera de hacerlo, hay demasiadas:
*Ejemplo (para que dos "o" distintos):
my $var = ( $asignada or $defecto ); #Hay que poner los parentesis
para que tenga sentido
my $var = $asignada || $defecto;
- me gusta el que las funciones se llamen con los parametros entre
parentesis:
* Ejemplo (explicacion de los dos "o" distintos):
procesar_fichero $fichero, $data or die "Va a ser que algo esta mal";
#muy parecido al lenguaje humano
procesar_fichero($fichero, $data) || die "Va a ser que algo esta mal";
#el operador || tiene preferencia sobre la ,
- es mas facil ver el codigo de alguien sin ser un puto juasquer del
lenguaje:
* Ejemplo simple de perl:
while(<>){ #Itermos sobre el canal de entrada por
defecto (magia).
print $_ unless /^#/; # Imprimimos la variable por defecto (mas
magia) siempre que no sea un comentario
} #Conciso, siempre que no tengas que explicar de donde sale la magia
- Odio la magia de las variablas que aparecen como de la nada ( $_, @_,
$`, $&, $', ...)
- Odio el codigo de los one-liners, aunque reconozco que es comodo para
hacer una cosa de usar y tirar.
Ejemplo anterior, con más magia todavia: perl -ne 'print $_ unless
/^#/;' < fichero_a_quitar_comentarios
- Odio meter millones de caracteres a cada rato. El teclado español y
perl es una combinacion que genera artrosis (sobre todo si ademas lo
programas en emacs :-P)
- Adoro la terminal de python para probar codigo; aunque se pueda hacer
un apaño con el eval en perl, no es lo mismo.
- Me gusta más el manejo de las listas en python
- ...
> y hasta
> ahora solo me ha decepcionado..esperaba algo mas..que progrmacion
> orientada a objetos?...
map, reduce, filter, ... extrañas funciones para un lenguaje orientado a
objetos.
http://www.diveintopython.org/functional_programming/index.html
programacion logica (o declarativa) como en prolog
http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/303057
> mas bien sera un intento ..pero nada
> exacto..
o quiza no es un intento, más bien un lenguaje multiparadigma
> para que usas python..?
Para muchas cosas. Es muy versatil. Desde programas para la web,
interfaces de ventanas, pequeños scripts, como substituto del comando
bc, ...
> ..en que tienes experiencia?,
java, javascript, python, ...
> te has tomado la molestia de mirar otros lenguajes y compararlo en
> base a tu trabajo?..
Si, python es una forma rapida de hacer codigo mantenible y util.
> bueh eso es lo que hago..y python n o ha salido
> tan bien librado...
es lo que tiene no haberlo aprendido o hacer unas extrañas comparaciones:
- perl es (casi siempre) mas conciso que python, aunque python sea muy
conciso
- ruby&rails o php son guays para la web. Personalmente, yo si fuese tu
miraria Catalyst (perl) o turbogears (python). Para que aprender un
lenguaje para hacer gilimingadas web si con perl o python lo puedes
hacer todo.
- visual basic o delphi molan para hacer aplicaciones de ventanas
rapidas y hacer un instalador de windows muy rapido. Cierto es que en
python tienes que elegir si usar gtk, wxWindows, tk, ... Pero hacer
paquetes de distribucion es facil (compilados y con su instalador) en
windows, pero tambien para otras plataformas con las setuptools de python.
- c es mucho más rapido que python. Innegable, pero es facil usar
librerias en C desde python gracias a swig (se que esto no es ventaja
sobre perl).
- python es facil de adoptar para alguien que viene de java (mi caso),
pero no para alguien que viene de perl (tu caso y algun otro que conozco)
- ¿?
python no suele ser el mejor parado en las comparaciones individuales,
pero si comparamos en global, si que sale muy bien parado. Python es un
lenguaje que solventa las papeletas de forma adecuada en muchas
situaciones. Si no tienes tiempo de aprenderlo todo, quiza python sea la
mejor opcion.
> quizas sea excelente para otras cosas..pero para
> administracion de sistemas me quedo con el otro...
shell script es algo que nunca descarto. Pero para cosas un poco mas
elaboradas, python o perl (depende de quien mas tenga que usar los
scripts) son mis elecciones.
> y para crear
> contenido dinamico tambien con el otro..
No se cual es el otro. Pero turbogears (http://www.turbogears.org) me
tiene enamorado.
> y que viva python!!..
por mucho tiempo
> que
> seguro es bueno para otra persona o para otras cosas..
para otra persona (yo) es bastante acertado
> pero a mi no me
> embrujo =(...de todas formas seguire mirando un poco mas....salu2 .
miratelo con calma y veras que:
- podras hacer script casi tan concisos y rapidos de hacer como en perl
- podras crear aplicaciones graficas y sus distribuibles casi tan rapido
como en delphi.
- los programas que hagas podran ser muy portables.
- podras crear webs tan rapido como con rails
- comprenderas por que a tanta gente nos gusta python (y es posible que
te acabe gustando).
- es posible que cuando salga parrot puedas ejecutar el codigo de python
en el e interoperar con codigo de perl.
- ... quien sabe que mas ;-)
> _______________________________________________
> Python-es mailing list
> Python-es en aditel.org
> http://listas.aditel.org/listinfo/python-es
Más información sobre la lista de distribución Python-es