Volkan:
2008/1/13 Jorge Sarmiento <[EMAIL PROTECTED]>:
> Mi estimado Volkan:
>
> > En lo personal python con su regla de que la identación define un bloque
> > de programa, en lugar de las llaves { }, me parece muy tirada de los
> > cabellos,
>
> tal vez no has considerado que es muy recomendado este de indentación
> en todos los bloques de los programas por un tema de órden y de
> facilidad de lectura de código. Lo que a mi parecer hace python es
> "obligarte" a escribir de una manera más ordenada... o tu código es de
> fácil lectura o simplemente tu programa no corre. Para mi que no soy
> programador me hace mucho más fácil entender los scripts.
>
> Es mi humilde opinión,
>
> Jorge S.
>
Personalmente lo de los tabs de Python o los "curly-braces" ( { } ) de C++,
Java , C# y parientes no afecta mucho al programar.
Algunos temas que encuentro importantes:
a) los tipos en Python son dinámicos (no tienes que declarar de qué clase
son los objetos antes de usarlos, simplemente los creas y los usas). Por
un lado, bien: de hecho en muchos casos programas más rápido. Pero algunos
puntos en contra:
- uno no muy gravie, es que es dificil encontrar un entorno de
desarrollo que tenga algo parecido al Intellisync del VisualStudio (es
decir, que cuando escribes el nombre de un objeto y escribes el "punto",
aparecen automáticamente los métodos, propiedades y demás del objeto).
Normalmente aparecen los métodos de las librerías de python, pero los de
tus objetos no siempre... Y creo que esto es por el dynamic typing.
- a veces esa flexibilidad te dificulta aplicar análisis orientado a
objetos. Es decir, si tengo un sistema de un tamaño más o menos grande, no
puedo definir interfaz entre los distintos módulos. Estoy siempre
escribiendo para la implementación de la clase, y no para la interfaz. (Con
interfaz me estoy refiriendo a la interfaz de Java/C#: public interface
Instrument { .... })
La flexibilidad al programar del dynamic typing te exige ser más
cuidadoso, hacer métodos de prueba, etc., porque habrá errores que ya no se
detectan al compilar (por ejemplo, tu método no sabe si el objeto que le han
pasado es del tipo que espera hasta que efectivamente lo recibe).
b) Las listas, diccionarios, sets y tuples de Python son simplemente
fabulosos. Las Colecciones de java.util o de System.Collection.Generics de
.NET están a años luz, no tienen nada que hacer.
c) Hay algunas herramientas en Python que recién van madurando.
Por ejemplo
- he estado desarrollando una aplicación el Python usando SQLAlchemy,
una librería ORM (Object Relational Mapper) para guardar los objetos en un
sevidor MySQL. Ya, funciona, es un producto prometedor, pero está en la
versión 0.4.6beta. Después de una hora tratando de depurar una falla de mi
programa termina siendo un problema de SQLAlchemy... Cuando llegue a la
versión 1, SQLAlchemy será una librearía a prueba de balas. Pero ahora no
tengo muchas alternativas, quizá usar Storm, que es mantenido por Canonical
(los de Ubuntu).
- pagaría por una buena herramienta en Python para desarrollar UI. He
probado bastantes... finalmente escribo la interface gráfica en código, pero
a veces ayuda una buena herramienta para empezar el diseño o probar un poco
con distintos layouts.
En fin, son sólo algunas ideas, no pretendo hacer una descripción
exhaustiva.
Saludos,
RobertoZ
_______________________________________________
Lista de correo Linux-plug
Temática: Discusión general sobre Linux
Peruvian Linux User Group (http://www.linux.org.pe)
Participa suscribiéndote y escribiendo a: [email protected]
Para darte de alta, de baja o hacer ajustes a tu suscripción visita:
http://listas.linux.org.pe/mailman/listinfo/linux-plug
IMPORTANTE: Reglas y recomendaciones
http://www.linux.org.pe/listas/reglas.php
http://www.linux.org.pe/listas/comportamiento.php
http://www.linux.org.pe/listas/recomendaciones.php