Foro de elhacker.net

Programación => Programación General => Mensaje iniciado por: Usuario887 en 19 Noviembre 2021, 00:01 am



Título: Un sutil conflicto de definiciones. Cargable o ejecutable
Publicado por: Usuario887 en 19 Noviembre 2021, 00:01 am
Un archivo en disco que puede cargarse en memoria para ser ejecutado, es un archivo cargable, que en memoria si que es ejecutable, solo que en disco no se estructura de la misma forma que en memoria, no?

Se que puede parecer trivial esto, pero me perturba decir ejecutable cuando es un programa que es realmente ejecutable solo cuando esta en memoria principal. Mientras se encuentra en el disco no es ejecutable, porque no puedes mapear, por ejemplo, un PE en un procesador compatible porque no reconocera la signature "MZ" como una instruccion (Y tampoco deberia, porque no es un dato ejecutable, precisamente, sino cargable) Gran parte incluso de los programas que llamamos ejecutables dependen no solo de un cargador, sino de librerias que se toman por dispuestas.

Un COM es ejecutable, un EXE es cargable. Me equivoco?


Título: Re: Un sutil conflicto de definiciones. Cargable o ejecutable
Publicado por: Danielㅤ en 19 Noviembre 2021, 01:01 am
Hola, a un programa con extensión .exe se le dice ejecutable porque justamente es un programa de ejecución y de hecho lo tiene en su misma extensión, por ejemplo:

Firefox.exe

significaría;

Firefox.executable

Es decir que siempre será un programa ejecutable aunque no esté funcionando, justamente es algo "ejecutable" del verbo que se puede "ejecutar".

Es como que diga que x código es compilable, significaría que se puede "compilar", aunque no esté compilado.


Saludos


Título: Re: Un sutil conflicto de definiciones. Cargable o ejecutable
Publicado por: Machacador en 19 Noviembre 2021, 01:41 am
En una primera instancia se cargan los archivos... luego para terminar y validar la acción se deben ejecutar... entonces es una ejecución... o sea... es una cosa ejecutable...

Lo de cargar es solo una preparación para la acción ejecutable...

Y como dice Daniel, la extensión .exe es clara...

 :rolleyes: :o :rolleyes:


Título: Re: Un sutil conflicto de definiciones. Cargable o ejecutable
Publicado por: Serapis en 19 Noviembre 2021, 07:08 am
Si el término es ambiguo excepto para quien no entiende la sutileza.
Algo ejecutable se carga en memoria sin modificación. Algo cargable precisa una preparación.
Quiénes pasaron de un sistema a otro, no pensaron en su definición, sino en las ventajas que ofrecía...

Fíjate por ejemplo que igualmente el término compilar, tampoco significa lo que se hace, sino que procede de los tiempos de las tarjetas perforadas... para ejecutar el programa (que tampoco existía ese concepto, sino el de cálculos), exigia reunir en orden todas las tarjetas que contenían las instrucciones, o sea compilar las tarjetas.

... pero en fin, el nombre se queda aunque luego cambien cosas, porque después de todo el fin perseguido no ha cambiado y aunque en origen un nombre definiera un proceso más o menos específico, al final el nombre se populariza y se asocia al fin perseguido, matiz que con el tiempo se desdibuja y hasta se pierde.

... seguimos llamando 'ordenador, calculador, computador', aún cuando hoy día realizan muchas mas y diversas tareas que las que inicialmente tenían asignadas cuando se acuñó el nombre. Curioso que la 'maquina de escribir', siempre fue eso...y cuando se integró al ordenador, cambió a 'teclado', aún cuando las teclas principales mantienen el mismo modus operandi (salto de línea, retorno de carro, etc...).


Título: Re: Un sutil conflicto de definiciones. Cargable o ejecutable
Publicado por: Usuario887 en 19 Noviembre 2021, 16:54 pm
Hola, a un programa con extensión .exe se le dice ejecutable porque justamente es un programa de ejecución y de hecho lo tiene en su misma extensión, por ejemplo:

Firefox.exe

significaría;

Firefox.executable

Es decir que siempre será un programa ejecutable aunque no esté funcionando, justamente es algo "ejecutable" del verbo que se puede "ejecutar".

Es como que diga que x código es compilable, significaría que se puede "compilar", aunque no esté compilado.


Saludos

Gracias por responder, Daniel. Tienes razon, pero no tienes razon en una cosa porque tienes razon en la otra; Un programa es ejecutable porque se puede ejecutar, pero firefox.exe no puede ser ejecutado, puede ser cargado, en un sistema Windows o en una plataforma como Wine. Lo unico real y enteramente ejecutable en el disco son el bootstrap del sistema de archivos y el bootloader primario del sistema operativo; todo lo demas depende de un cargador. Tendria mas sentido una extensión ".ldb" firefox.loadable.

En una primera instancia

Hola, Machacador. Es una primera instancia que comienza (valga la redundancia) con un archivo .exe.

Claro, la extension es clara, pero de eso se trata, de que es claramente equivocada; No es un archivo de "Segunda instancia". Es de primera instancia, asi que su nombre deberia corresponder a lo que ocurre en ella y no en seguida.
Gracias por responder.

Si el término es ambiguo excepto para quien no entiende la sutileza.
Algo ejecutable se carga en memoria sin modificación. Algo cargable precisa una preparación.
Quiénes pasaron de un sistema a otro, no pensaron en su definición, sino en las ventajas que ofrecía...

Fíjate por ejemplo que igualmente el término compilar, tampoco significa lo que se hace, sino que procede de los tiempos de las tarjetas perforadas... para ejecutar el programa (que tampoco existía ese concepto, sino el de cálculos), exigia reunir en orden todas las tarjetas que contenían las instrucciones, o sea compilar las tarjetas.

... pero en fin, el nombre se queda aunque luego cambien cosas, porque después de todo el fin perseguido no ha cambiado y aunque en origen un nombre definiera un proceso más o menos específico, al final el nombre se populariza y se asocia al fin perseguido, matiz que con el tiempo se desdibuja y hasta se pierde.

... seguimos llamando 'ordenador, calculador, computador', aún cuando hoy día realizan muchas mas y diversas tareas que las que inicialmente tenían asignadas cuando se acuñó el nombre. Curioso que la 'maquina de escribir', siempre fue eso...y cuando se integró al ordenador, cambió a 'teclado', aún cuando las teclas principales mantienen el mismo modus operandi (salto de línea, retorno de carro, etc...).

Eso tiene mas sentido, Serapis... No pense en las convenciones pero era de esperarse.

Citar
Curioso que la 'maquina de escribir', siempre fue eso...y cuando se integró al ordenador, cambió a 'teclado', aún cuando las teclas principales mantienen el mismo modus operandi (salto de línea, retorno de carro, etc...).

Es analogo al dilema de los "Ejecutables". Aunque, por lo menos "Maquina de escribir" y "Teclado" podrias tecnicamente considerarlos sinonimos y si bien "Cargable" y "Ejecutable" no son antonimos e incluso tienen una relacion estrecha (Tanto como para que se escribiera un libro titulando las dos palabras), son diferentes y esa diferencia deberia estar mas clara.

¿Por que deberia y no dejarlo "Como esta"? Porque la gente se confunde. Recuerdo hace años haber intentado mapear un .EXE puro en un emulador de procesador y haber sentido la frustracion de "XXh no es una instruccion x86 valida"  :xD

No baso la confusion de los demas en la mia, pero bueno. Apuesto a que alguien mas no habra notado la diferencia, centrandose solo en que "Claramente" la extension .EXE representa un archivo que puede ser ejecutado. Como lo es un COM.

Incluso tendria mas sentido que los COMs fueran llamados EXE y los EXE a su vez COM. Un archivo que contiene instrucciones para ser mapeado, secciones en las cuales difieren su posicion, estructura y contenido en disco y en memoria principal, que se enlazan a codigo externo (librerias dinamicas, etc), y cuya estructura depende de un linker dinamico, tendria mas sentido ser llamado del tipo Component Object Model; Mientras que una archivo que puede ser mapeado y ejecutado inmediatamente o incluso ejecutado desde el disco si la arquitectura permitiera ejecucion directa desde almacenamientos secundarios tendria mas sentido ser llamado EXEcutable.

Gracias por su atencion y respuestas,
Buenas noches.



Título: Re: Un sutil conflicto de definiciones. Cargable o ejecutable
Publicado por: Eternal Idol en 19 Noviembre 2021, 18:27 pm
https://en.wikipedia.org/wiki/Component_Object_Model
https://en.wikipedia.org/wiki/COM_file


Título: Re: Un sutil conflicto de definiciones. Cargable o ejecutable
Publicado por: Usuario887 en 19 Noviembre 2021, 19:17 pm
https://en.wikipedia.org/wiki/Component_Object_Model
https://en.wikipedia.org/wiki/COM_file

 xd