Libertonia
Portada · Todo · Software Libre · Desarrolladores · Comunidad · Internet · Tecnología · Meta · Diarios
¿Prefieres C o C++ ?

Soy B. Stoustroup, no te resistas, serás asimilado   11 votes - 12 %
C++ RLZ un mazo   10 votes - 10 %
uso C++ y a ratos C   43 votes - 47 %
C++ es para nenazas, C RLZ   9 votes - 9 %
¿Programar? Ni el video tío.   9 votes - 9 %
Me dá lo mismo uso Perl   4 votes - 4 %
otros   5 votes - 5 %
 
91 Total Votes
Ver: Modo: Orden:
C++ y librerías dinámicas | 1 comentarios (1 temáticos, editoriales, 0 ocultos)
Interfaces más bien que ficheros (none / 0) (#1)
por DopeRider a las Sun Aug 11th, 2002 at 05:29:16 AM CET
(Información Usuario)

Me he pasado recientemente de C a C++.

Felicidades. Cambiar siempre es estimulante. Soy "de familia pascalera". El C lo he usado poquito, y C++ menos. Pero recuerdo mi transición equivalente, cuando pasé de Pascal a Object Pascal (Delphi y Kylix). Quizás te pueda servir de algo.

Se me ocurrió la idea de que para modularizar el código al máximo podría echar mano de la carga dinámica de librerías
[...]
La ventaja que yo le veo es que metiendo mis funciones en libs dinámicas puedo andar metiéndoles mano individualmente sin tener que retocar el resto del código.


Eso no depende de mantener distintos ficheros, sino de mantener constantes unas interfaces. Si mantienes constantes las interfaces entre los módulos, evitas tener que recompilar los módulos clientes cuando recompilas el interior de un módulo que ofrece servicio. Es cuestión de hacer un diseño previo y ceñirse a él.

Lo que sí puede mejorar es la distribución (binaria) de código, o sea en vez de tener que enviar un tocho de programa, poder mandar sólo la parte modificada. Otra razón posible para usar librerías cargables es meter en ellas código usado por varios programas que se ejecutan simultáneamente, disminuyendo el consumo de memoria.

¿Como afecta esto al tamaño del binario, la cantidad de RAM requerida y las prestaciones?

Del tamaño del binario ni idea. La cantidad de RAM ya te decía que se ahorra si hay varios programas que usan a la vez librerías. Y algo debe perderse en tablas de sistema, pero no creo que mucho. Respecto a las prestaciones, hay un coste. Para que se pueda compartir memoria entre programas, el cargador estándar de Linux exige que el código máquina sea PIC (position independent code), o sea que no haga referencia a direcciones absolutas, y así la misma memoria física se proyecta en distintas localizaciones en el espacio de direcciones de distintos procesos (el mismo byte de memoria física puede estar en dos direcciones distintas para dos procesos distintos).

Como curiosidad: el cargador de Windows es más sofisticado en este sentido. Corrige las direcciones absolutas contenidas en una DLL permitiendo código que no sea PIC. La desventaja es que obliga a cargar la DLL en la misma dirección para todos los procesos. Si un proceso la tiene ocupada, tiene que crear una nueva copia física, con lo cual se pierde el ahorro de memoria.

Pero lo hacen por una buena razón: el código PIC es un 20% de media más lento que el código normal.

Evidentemente la carga de la librería y su descarga necesitarán tiempo

No creo que sea mucho, a no ser que te pases todo el programa cargando y descargando, que no creo.

Dadme una pista, oh Guruses, antes de que me meta en camisa de once varas y cree algo totalmente infumable ;)

Pues según lo veo las preguntas son:

  • ¿Voy a tener que distribuir modificaciones de mi programa a través de un medio lento (p.ej. módem).
  • ¿Habrá varios programas corriendo las mismas librerás a la vez y es significativo el ahorro de memoria?. Recuerda la ligera pérdida de velocidad al valorarlo.


Si la respuesta a estas dos preguntas es "no", entonces no le veo la ventaja inmediata a tener el código en librerías dinámicas. Personalmente lo que me gusta es poder compilar todo en cualquier momento desde los fuentes. Claro que Pascal compila muchísimo más rápido que C.

Hay otro objetivo posible para tener código separado en librerías: el tener programas construidos mediante plugins. Pero la tendencia que veo últimamente es a usar más bien un algún lenguaje de guiones cuando se quiere extender un programa. Creo que Guile te debe ser cómodo, quizás no sea mala opción.



 
C++ y librerías dinámicas | 1 comentarios (1 temáticos, editoriales, 0 ocultos)
Ver: Modo: Orden:
Menu
· crear cuenta
· FAQ
· búsqueda
· Fuentes de Noticias

Login
Nueva cuenta
Usuario:
Contraseña:

ecol Logo Powered by Scoop
Todas las Marcas Registradas y copyrights de esta página son propiedad de sus respectivos dueños.
Los comentarios son propiedad del que los escribe.
Los iconos de las noticias y el logotipo son propiedad de Javier Malonda.
El Resto © 2002 Escomposlinux.org y aledaños.

Puedes sindicar los contenidos de libertonia en formato RSS 1.0 y RDF 0.9. También se puede sindicar la cola de envíos pendientes de moderación.

El proyecto escomposlinux.org está dedicado a la memoria de tas

crear cuenta | faq | búsqueda