Autor Tema: Desafío: programa que ejecute su propio código como input

0 Usuarios y 1 Visitante están viendo este tema.

12 Enero, 2012, 10:11 pm
Respuesta #10

Phicar

  • $$\Large \color{#c88359}\pi\,\pi\,\pi\,\pi$$
  • Mensajes: 513
  • Karma: +1/-0
  • Sexo: Masculino
    • redinfocol.org
Hola, pues es que hay dos formas de interpretar esto..Una nos conduciria a un loop infinito y la otra, a los debuggers :P

http://imageshack.us/f/641/olly.png/
redinfocol.org

12 Enero, 2012, 10:26 pm
Respuesta #11

argentinator

  • Consultar la FIRMAPEDIA
  • Administrador
  • Mensajes: 7,797
  • País: ar
  • Karma: +0/-0
  • Sexo: Masculino
Sólo terminé de entender lo que querías hacer después de leer uno de los tantos otros hilos que abriste sobre este tema.

Hay que tratar de expresarse bien.

Así como lo habías planteado acá, parecía que sólo querías pasarle a un programa su propio código como input.

El usar ese código para luego ejecutarlo, es otra historia distinta.

La respuesta te la dí en el otro hilo, en el que Oscar explicó lo de las máquinas universales.

13 Enero, 2012, 04:12 am
Respuesta #12

Elius

  • $$\Large \color{#5e8d56}\pi\,\pi\,\pi$$
  • Mensajes: 399
  • País: ar
  • Karma: +0/-0
  • Sexo: Masculino
Tal vez no se entienda muy bien, porque lo escribí rápido, pero creo que dije "que ejecute su propio código", no que lo lea simplemente. De todas maneras, te pido disculpas si hubo ambigüedad, creo que abrí demasiados hilos y estoy medio desbordado.  jajaja!

La razón de abrir aquí un hilo similar al del foro de lógica es porque pensé que lo iban a ver personas que no van al de lógica.

Saludos!

13 Enero, 2012, 04:23 am
Respuesta #13

argentinator

  • Consultar la FIRMAPEDIA
  • Administrador
  • Mensajes: 7,797
  • País: ar
  • Karma: +0/-0
  • Sexo: Masculino
ok, me disculpo también por ofuscarme y no haberte entendido

13 Enero, 2012, 04:40 am
Respuesta #14

Elius

  • $$\Large \color{#5e8d56}\pi\,\pi\,\pi$$
  • Mensajes: 399
  • País: ar
  • Karma: +0/-0
  • Sexo: Masculino
ok, me disculpo también por ofuscarme y no haberte entendido

Ok, no problem :)

Saludos!

13 Enero, 2012, 04:41 am
Respuesta #15

Elius

  • $$\Large \color{#5e8d56}\pi\,\pi\,\pi$$
  • Mensajes: 399
  • País: ar
  • Karma: +0/-0
  • Sexo: Masculino
Hola, pues es que hay dos formas de interpretar esto..Una nos conduciria a un loop infinito y la otra, a los debuggers :P

http://imageshack.us/f/641/olly.png/

No te entiendo bien. ¿Podrías explayarte un poco más, por favor?

saludos!



13 Enero, 2012, 04:50 am
Respuesta #16

Phicar

  • $$\Large \color{#c88359}\pi\,\pi\,\pi\,\pi$$
  • Mensajes: 513
  • Karma: +1/-0
  • Sexo: Masculino
    • redinfocol.org
Pues si, Un programa son unos simbolos que lee el SO y este hace que el computador haga determinadas cuentas en determinado tiempo(me refiero secuencia). Si uno quiere ejecutar el programa en el que se va a ejecutar ese mismo lo que tiene que hacer es "atachar" el pedazo de memoria en RAM en el que el programa esta allocado..Eso produciria un loop infinito porque se estaria dando una rutina a una funcion que se llama a si misma siempre que se mantenga en memoria el programa. Pero si lo que quieres es ejecutar los simbolos(sin que esten en RAM) pues puedes usar un debugger..En la imagen que puse estoy ejecutando el OllyDbG que es un debugger(en windows) en el mismo.
redinfocol.org

13 Enero, 2012, 05:13 am
Respuesta #17

Elius

  • $$\Large \color{#5e8d56}\pi\,\pi\,\pi$$
  • Mensajes: 399
  • País: ar
  • Karma: +0/-0
  • Sexo: Masculino
Si uno quiere ejecutar el programa en el que se va a ejecutar ese mismo lo que tiene que hacer es "atachar" el pedazo de memoria en RAM en el que el programa esta allocado..Eso produciria un loop infinito porque se estaria dando una rutina a una funcion que se llama a si misma siempre que se mantenga en memoria el programa.

Eso es exactamente lo que yo sostengo, no es que quiera buscar una alternativa como los debuggers. Si demuestro eso que dices (ten en cuenta que estamos discutiendo en el plano matemáticos con profesionales de matemática que no quieren detalles de máquinas reales, sino de sus modelos matemáticos como las máquinas de Turing!) ya estoy contento :)

Saludos!

13 Enero, 2012, 01:06 pm
Respuesta #18

feriva

  • $$\Large \color{#a53f54}\pi\,\pi\,\pi\,\pi\,\pi\,\pi\,\pi$$
  • Mensajes: 12,032
  • País: es
  • Karma: +1/-0
  • Sexo: Masculino
Si uno quiere ejecutar el programa en el que se va a ejecutar ese mismo lo que tiene que hacer es "atachar" el pedazo de memoria en RAM en el que el programa esta allocado..Eso produciria un loop infinito porque se estaria dando una rutina a una funcion que se llama a si misma siempre que se mantenga en memoria el programa.

Eso es exactamente lo que yo sostengo, no es que quiera buscar una alternativa como los debuggers...



 Hola, Elius. El programa depuarador no es una alternativa al problema, es un medio para analizar el problema. Lo que te quiere decir Phicar es que, si lo que quieres es seguir la ejecución dl tu programa en pantalla, o sea, ir viendo el código fuente de la ejecución mientras se ejecuta, valga la redundancia, puedes instalar un depurador -si no lo tuvieras instalado- e ir comprobando lo que ocurre. Y creo que es completamente necesario para cualquier cosa que quieras encontrar respecto del problema, ya que, no estás funcionando directamente con una máquina virgen, sin programas auxiliares tan potentes como el propio SO, y así no puedes sacar conclusiones sobre lo que está ocurriendo por dentro; piensa que cualquier sistema operativo -Windows o Linux- en realidad son muchísimas "máquinas" o programas funcionando a la vez, y la función de muchas de esas rutinas consisten, digamos, en "sistemas de seguridad" para que no te quedes colgado, para que, si pasa algún desastre, el sistema operativo te devuelva el control del ordenador por medio del teclado y demás periféricos. Pasa como con esos sistemas des seguridad que tienen algunos coches, que bloquean las ruedas en cierto momento o modifican su posición automáticamente para que no vuelques ante cualquier volantazo que hayas podido dar o algo así. Por eso te decía lo de trabajar directamente en el nivel más bajo, en código máquina; ahí, las "paradas" son paradas de verdad, trabajando sobre un colchón de lenguajes auxiliares no puedes saber si las paradas son paradas de verdad, no puedes saber si ha entrado en acción alguno de esos "seguros" o programas de rescate. Por eso creo que sí estaría bien lo de usar un depurador.


P.D Recordando esos viejos tiempos me acabo de acordar de que en MS2 puedes utilizar el comando "debug", que hace eso precisamente, depurar.
Saludos.