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