17 de febrero de 2008

C++ y Python.

Es común que se destaquen ciertas virtudes cuando se comparan lenguajes de alto nivel con los de bajo nivel.
Por ejemplo tener un manejo automático de la memoria (garbage collection en inglés) nos evita tener que preocuparnos por saber cuando tener que liberar memoria de un objeto, y si podemos estar haciendo referencia a un objeto que ha sido liberado.
Pero esto también tiene problemas, un programa con que usa garbage collection requiere más memoria que uno programa que maneja memoria de manera explícita.
Si creamos gran cantidad de objetos de manera dinámica el proceso encargado de manejar memoria (garbage collector en inglés) se va a ejecutar más frecuentemente y vamos a hacer perder rendimiento.
Otro problema más sutil, es que objetos con una interfaz de eventos ya no son usados, pero sus eventos todavia estan registrados lo que evita que estos objetos sean liberados. Una solución a este problema son las referencias débiles (weak references en inglés).
Mi punto aquí es que C++ no es peor lenguaje que Python por no tener garbage collector, simplemente son dos lenguajes que implementan formas distintas para manejar memoria. En algunos casos C++ es un mejor lenguaje para determinada tarea en otros Python es mejor.
Por ejemplo para proyectos medianos prefiero C++, pero para proyectos mas chicos Python es mucho mejor.

No hay comentarios.:

Publicar un comentario