Python vs Java C C++

Chema Cortes py en ch3m4.org
Mie Mar 17 13:18:30 CET 2004


Ernesto Revilla escribió:

> Quiero dar mi punto de vista, pero realmente apenas he trabajado con Java.
 >...

Muy interesante tu punto de vista sobre el tema. Su extensión hace 
imposible responderte punto por punto, así que seré concreto:


> Hecho de menos un buen gestor de proyectos y la integración con subversion

¿Has probado el Kdevelop3? Gestiona "proyectos" y puede conectarse a 
varios gestores de versiones, subversion incluído.

> * las librerías gráficas...

Se puede hablar mucho del tema. Tkinter tiene la ventaja de estar 
siempre disponible y ser suficiente para bastantes cosas. Del resto, son 
muy similares en herramientas y posibilidades, aunque hay que destacar 
wxPython (wxWidgets) por número de proyectos de desarrollo, y 
herramientas como boa-constructor ó pythoncard.

> * una especificación para tratamiento de BusinessLogic, à la J2EE.

Como bien dices, aquí se echa en falta una empresa fuerte detrás. Pero 
no considero que python tenga que competir con J2EE. La ventaja de 
python es su facilidad para integrarse en cualquier sistema, y J2EE no 
es una excepción.

A parte de ésto, tienes zope como plataforma "alternativa" (no 
equivalente) de J2EE. Muchas veces se usa la complejidad de J2EE para 
cosas mucho más sencillas que se pueden hacer fácilmente con zope.

> * el modelo de seguridad de Java es bastante completo. Python no lo tiene.

El zope posee un modelo de seguridad bastante bueno, y es sin duda una 
de las mejores plataformas para crear aplicaciones empresariales y de 
gestión para python.

>     * la redefinición de una clase requiere, en general, 
>     crear de nuevo los objetos que usan la clase. 

Normalmente, se usan las clases como "plantillas" para crear a partir de 
ellas los objetos. Existe otra técnica más dinámica en la que unas 
clases "delegan" en otras la creación de los objetos (mírate los ensayos 
sobre "metaclases").

>    * el modelo de la 'precompilación' hace que no se pueden 
>     escribir depuradores con los cuales se puede desplazar el
>     punto de ejecución simplemente hacia otra posición.

Reconozco que es bastante filosófico entenderlo así, pero en python 
desaparece el concepto de "línea temporal". El sistema no pasa por 
diferentes estados hasta llegar al actual; siempre es el mismo, variando 
  únicamente el "concepto" que teníamos formado de él, nuestra 
"representación" del sistema. Lo que entendemos ir para "atrás" ó 
"adelante" es cambiar una "representación" por otra, y para depurar ha 
de hacerse por "instrospección".

Por ejemplo, el depurador de pythoncard es un shell al que le vas 
haciendo preguntas sobre las propiedades de los componentes del sistema.

 >C++ puede ser bastante abstracto, y puedes disponer de buenas
 >herramientas. El problema es que te tienes que ocupar de liberar la
 >memoria manualmente, cosa que a esta altura me parece inaceptable para 
 >muchos de los proyectos. Con C es más difícil, porque cuesta abstraer.

Existe una evolución del C/C++ llamada D que promete mucho. Entre otras 
cosas, no es obligatorio liberar manualmente la memoria (tiene una 
especie de recolector de basura):  http://www.digitalmars.com/d/




Más información sobre la lista de distribución Python-es