Re: Otra vez la herencia múltiple

Medardo Rodriguez med.swl en gmail.com
Mar Jul 29 16:32:40 CEST 2008


2008/7/29 Beni <camontuyu en yahoo.es>:
> La verdad, viendo como otros lenguajes como Delphi, el Java, el C# (que
> comenta Medardo) donde se pueden definir a nivel de lenguaje programación
> varios conceptos, me da penilla ver que python no tiene esa potencia y tener
> que recurrir a construcciones para implementarlas.


Veo que este comentario tuyo ha generado un gran debate y eso es muy bueno.
Yo tampoco creo que sea una pena. El Python es un lenguaje muy
poderoso y eso de las definiciones formales de estos conceptos que
enumeré en mis comentarios anteriores es uno de los ataques que
intentan contra el Python.
En mis clases suelo lanzar muchos retos analizando este tipo de cosas,
hoy sólo voy a poner un ejemplo.
Muchos dicen que definir un tipo formal para los valores, pone las
verificaciones necesarias desde la fase de verificación. Pero suele
suceder que en términos pragmáticos, esto nunca es de utilidad a no
ser que se pase más trabajo que la solución que aportaría estar
definiendo tipos nuevos para cada concepto.
Por ejemplo:

int CalcularEdad(DateTime nacimiento)

devuelve como edad a un entero, este tipo es completamente inútil,
esta función puede devolver -23 o 1557 como edad y la
verificación,como en la mayoría de los casos es parte del modelo
dinámico; concretamente una invariante de postcondición como lo
definiera Bertrand Meyer en su lenguaje Eiffel y su trabajo OOSC.

Python es un lenguaje dinámico, tengo un módulo que le adiciona la
posibilidad de usar invariantes, los tres tipos clásicos:
precondiciones, post-condiciones e invariantes de clases. En estos
otros lenguajes tradicionales esto no se puede hacer y lo que parece a
nivel de moda o simple vista como una potencia, al final va muy en
contra de la eficiencia del programador por las incomodidades que
introduce.

Saludos
_______________________________________________
Lista de correo Python-es 
http://listas.aditel.org/listinfo/python-es
FAQ: http://listas.aditel.org/faqpyes





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