[C con Clase] ¿Alguien sabe destripar librerías...?

xonly xonly2002 en yahoo.es
Vie Ago 29 23:57:12 CEST 2008


El pasado 2008-08-29 21:40:21, hectorfh escribió:
 
h> Hola xonly:
h> Sí, veo tu código en C++ y ya lo probé en Windorch hace algunos años,
h> recuerdo que también ocupaba algo así el ejecutable. Sin embargo en
h> otros sistemas, como GNU/Linux ocupa unos pocos KBs.
h> Esto se deba probablemente a que en GNU las funciones de "streams"
h> (cout, cin, etc) están en el sistema y en windorch no, por lo tanto es
h> necesario meterlas en tu ejecutable, aumentando así el tamaño en
h> extremo.
h> El punto es que no importa cuantas funciones use tu programa, sino si
h> las funciones están en tu ejecutable o están en el entorno donde corre
h> tu ejecutable.

me dejas alucinado, tienes razón, hay muchas cosas que vienen ya puestas con el propio sistema, de hecho el tema de meterme en ensamblador incluso me da algo de recelo, pues sé que muchas historias de servicios, puertos y demás dependen del sistema operativo al que pertenecen, y no me gusta un pelo la idea, pero bueno, de momento, intentaré aprender c, lo que pasa es que me chocó demasiado el tema de lo que ocupaba este programa, un un simple texto en pantalla.

h> Ahora bien, si distribuyes un programa que hace uso de funciones que
h> deberían encontrarse en el entorno de ejecución, tienes el problema de
h> que el usuario que adquiere tu programa no tenga dichas funciones en
h> su sistema. Por lo que deberá tener que instalarlas, lo cual puede
h> llegar a ser muy molesto.
h> Me ha pasado muchas veces el bajar programas para GNU/Linux y a la
h> hora de instalarlos resulta que necesitaba bajar 10 bibliotecas
h> inusuales más.
h> Este tipo de problemas se conoce en inglés como problemas de "deploy".
h> Si haces aplicaciones en C son muy frecuentes.

muy muy bueno es saberlo, tu ves otro motivo más para no querer gustarme el depender de librerías externas....

h> Por eso algunas plataformas de desarrollo como Java o Python, tienen
h> el concepto de "battery included" (baterías incluídas). Estos
h> lenguajes se basan en que el usuario para correr el programa debe
h> tener instalado el "entorno de ejecución Java o Python", los cuales
h> pesan varias decenas de megas. Esto es porque los entornos de
h> ejecución ya te viene con miles de funciones ya hechas listas para
h> usar, y tu programa solo pesa algunos KB. 

vamos algo parecido a lo que hace los frameworks estos famosos del puñetero windows (bueno como me han dicho que hable con propiedad, por culpa de hacer programas con el entorno .net)

h> Por ejemplo un "Hola mundo"
h> es Python no llega a pesar ni 100 bytes!!! Claro, como es interpretado
h> consume miles de ciclos de máquina más que su similar en C.
h> Con esto surge otra conclusión, obtener programas más pequeños no
h> significa que utilicen necesariamente menos recursos de CPU.
h> Espero haberte aclarado el misterio del ejecutable de medio mega.
h> Saludos

ciertamente esta puntualización final es muy buena, pero no pretendo que el fichero sea muy pequeño, sino más bien todo lo contrario, que tenga sólo lo justo, y no por ejemplo como he visto al "medio destripar" algo del visual, que priemero se hace una comprobación de si se va a escribir en un fichero o en consla, pues si es en consola, hay que seleccionarla, por lo visto bloquearla y luego convertir las letras, aunque creo que mi apreciación inicial no era correcta, al ir comentando estos mensajes, creo que me he dado cuenta de que lo que hace es al contrario, primero mira en que tipo de charset está windows, y luego convierte el texto a ascii para la consola, de forma que se respete los caracteres "de forma fidedigna", pero que pasa si yo quiero imprimir una letra "normal", no necesito conversión, por lo tanto fuera código para convertir un texto de un charset a otro, y bingo, claro el ejecutable es más reducido, pero no porque no escriba el texto en consola, sino porque no hace cosas que no son necesarios para esa situación en concreto, y eso es lo que pretendo, que el ordenador, sólo tenga que hacer lo que tiene que hacer, ni una sola cosa más. Filosofía totalmente contraria por tanto a lenguajes interpretados. Como ya dije en otro mensaje anterior, es que estoy loco y me gusta ir en contra de las tendencias actuales....


muchísimas gracias por el aporte.


Más información sobre la lista de distribución Cconclase