Foros - Stratos

Programadores => General Programadores => Mensaje iniciado por: Diferencial en 22 de Junio de 2006, 10:28:40 AM

Título: Curiosidad
Publicado por: Diferencial en 22 de Junio de 2006, 10:28:40 AM
Imaginemos que tenemos una funcion declarada en c:

int suma(int a,int b) return a+b;

Ahora bien tenemos un fichero de texto :

y colocamos suma(5,9);

y desde nuestra main como hariamos para pasar esa funcion que esta escrita en el fichero de texto?
Título: Re: Curiosidad
Publicado por: ethernet en 22 de Junio de 2006, 11:09:54 AM
Cita de: "Diferencial"Imaginemos que tenemos una funcion declarada en c:

int suma(int a,int b) return a+b;

Ahora bien tenemos un fichero de texto :

y colocamos suma(5,9);

y desde nuestra main como hariamos para pasar esa funcion que esta escrita en el fichero de texto?


int suma(int a,int b){ return a+b };
int main()
{
#include "fichero_de_texto.txt"
return 0;
}
Título: Re: Curiosidad
Publicado por: Harko en 22 de Junio de 2006, 12:02:34 PM
Cita de: "ethernet"int suma(int a,int b){ return a+b };
int main()
{
#include "fichero_de_texto.txt"
return 0;
}

Eso funciona? Me parece que le faltan cosas, pero a lo mejor me equivoco no seria la primera vez.

Esque me parece demasiado pequeño. :P

Harko.
Título: Curiosidad
Publicado por: Shaitan en 22 de Junio de 2006, 12:22:42 PM
Y para que quieres hacer esto? No entiendo su utilidad, ya que necesita compilarse el archivo de texto. Otra cosa sería hacerlo en ejecución (como si fuese un script...)
Título: Curiosidad
Publicado por: ethernet en 22 de Junio de 2006, 12:42:44 PM
Me he limitado a poner lo que él pedía. Tal vez viendo eso se de (él y alguno más) cuenta de que necesita explicarse un poco más.
Título: Curiosidad
Publicado por: Diferencial en 22 de Junio de 2006, 07:02:41 PM
Cita de: "ethernet"Me he limitado a poner lo que él pedía. Tal vez viendo eso se de (él y alguno más) cuenta de que necesita explicarse un poco más.

Seguramente.

Citar
Y para que quieres hacer esto? No entiendo su utilidad, ya que necesita compilarse el archivo de texto. Otra cosa sería hacerlo en ejecución (como si fuese un script...)

Eso es exactamente lo que queria decir.
Título: Curiosidad
Publicado por: Diferencial en 22 de Junio de 2006, 07:06:06 PM
ethernet gracias por responder asi y todo no he probado lo que ponias, porque no era mi idea exactamente. ya puestos eso funciona? a simple vista diria que el include iria encima de la main no dentro porque el txt lo estas usando como un fichero de cabecera normal y corriente. Creo que la declaración tampoco haria falta, si esta puesto dentro del fichero de texto.
Título: Curiosidad
Publicado por: ethernet en 22 de Junio de 2006, 07:50:18 PM
Hazte un parser del lenguaje busca uno ya hecho. Incluso lo puedes hacer con la GPU!.
Título: Curiosidad
Publicado por: Diferencial en 22 de Junio de 2006, 08:26:59 PM
Gracias ethernet, le echare un vistazo a eso de parser (aunque me suena a xml y xsl). Y lo de la gpu eso debe ser la hostia.
Título: Curiosidad
Publicado por: Marci en 23 de Junio de 2006, 12:29:29 AM
CitarHazte un parser del lenguaje busca uno ya hecho. Incluso lo puedes hacer con la GPU!
A que te refieres con lo de la GPU?
Título: Curiosidad
Publicado por: [EX3] en 23 de Junio de 2006, 01:52:32 AM
Cita de: "Marci"A que te refieres con lo de la GPU?
A que la GPU vale para algo mas que ejecutar rutinas graficas por lo visto, si quieren hasta hacer motores de fisica e ia que corran sobre la GPU en vez de la CPU para *optimizar* a base de repartir tareas, estilo procesadores 'doble-core' y similares.

Salu2...
Título: Curiosidad
Publicado por: zupervaca en 23 de Junio de 2006, 02:15:51 AM
:shock: yo pense que estaba de cachondeo, lo que es estar un mes de relax.
Título: Curiosidad
Publicado por: ethernet en 23 de Junio de 2006, 07:56:13 AM
Pues medio de cachondeo medio no. Es obvio que si el chaval no sabía que lo que necesitaba era una parser del lenguaje requerido no se va a poner a realizar los cálculos con la GPU.

Lo de la GPU lo dije porque GLSL tiene una sintaxis similar a C, se compila en tiempo de ejecución, y es posible crear funciones y pasarle datos a traves de texturas, uniforms, atributos, colores, vértices y devolver datos a través, por ejemplo, de una textura. De hecho hay librerías que lo hacen y yo conozco gente que está trabajando en el procesado de imágenes médicas usando la GPU. Ejemplo: http://pinguino.dyndns.org/hospedados/gpgpu/gpgpu_ogl.html

Pero todo eso es caso aparte, no voy a discutir si las cosas están bien o mal, si es eficiente o no lo es o cualquier otro tipo de cosa. A los que duden si lo que he puesto funciona o no... que lo prueben. A buen entendedor...
Título: Curiosidad
Publicado por: Diferencial en 23 de Junio de 2006, 12:06:43 PM
Citar
A los que duden si lo que he puesto funciona o no... que lo prueben. A buen entendedor...

Rectifico y funciona perfectamente cuando dije, lo de declaración es porque pense que dentro del fichero estaba declarada la función (fue un lapsus) estaba la llamada suma(5,9);
Título: Curiosidad
Publicado por: Marci en 24 de Junio de 2006, 04:46:08 PM
CitarA que la GPU vale para algo mas que ejecutar rutinas graficas por lo visto, si quieren hasta hacer motores de fisica e ia que corran sobre la GPU en vez de la CPU para *optimizar* a base de repartir tareas, estilo procesadores 'doble-core' y similares.
Lo de usar la GPU para otras cosas lo sabia. Por ejemplo aqui os dejo un enlace bastante chulo: http://www.mathematik.uni-dortmund.de/~goeddeke/gpgpu/tutorial.html
Basicamente es un tutorial para crear una libreria matematica que corra en la GPU. Pero eso, son calculos matematicos que se supone que es en lo que una GPU se papa a la CPU. De ahi a crear un parser que corra en la GPU (eso me pareció entender en el post de ethernet) me parece que aun queda bastante.
Título: Curiosidad
Publicado por: Pablo Zurita en 24 de Junio de 2006, 05:01:49 PM
Pensando un poco si se podría hacer un parser, pero seria una gran pérdida de tiempo. Simplemente por tener un GPU no quiere decir que tenes que hacer todo en el GPU. Hacer un parser en GPU seria un proyecto de investigación pero nada mas, simplemente no tiene ningún sentido hacer un parser en GPU.
Título: Curiosidad
Publicado por: Diferencial en 24 de Junio de 2006, 05:17:38 PM
Pablo me gustaria que me explicaras a que te refieres sobre perdida.
No entiendo porque deberia de ser una perdida de tiempo, si puedes hacer calculos a la vez tanto en cpu como en gpu. Deberia de correr mas rapido la aplicación. Sin contar las numerosas ventajas que tendria en el campo de la IA.
Título: Curiosidad
Publicado por: zupervaca en 24 de Junio de 2006, 05:38:34 PM
Yo no tengo ni idea de parsers en gpu, pero conozco el tema de rendimiento, si usas para todo la gpu tendras el problema de que cuando tengas que hacer las cosas que le tocan a la gpu te ira lento por que lo has volcado todo a la gpu, opino que cada micro debe usarse para lo que es, y de hay que Pablo Zurita diga que hacer algo asi estaria bien como investigacion, ademas de que aprenderias bastante sobre la gpu.
Título: Curiosidad
Publicado por: Marci en 24 de Junio de 2006, 05:46:33 PM
CitarNo entiendo porque deberia de ser una perdida de tiempo, si puedes hacer calculos a la vez tanto en cpu como en gpu
Si parece una buena idea asignarle calculos a la gpu que no tengan nada que ver con los graficos (hay gente por ahi que piensa que es una aberracion) pero hay que tener en cuenta que la gpu esta diseñada para trabajar sobre todo con valores en coma flotante. Un parser va a trabajar con cadenas de texto y a priori no parece el trabajo mas adecuado para una gpu
Título: Curiosidad
Publicado por: Diferencial en 14 de Julio de 2006, 11:29:58 AM
Retomando el post, despues de busquedas interminables sobre el tema (Parser) he encontrado unas dudas, c# no tiene punteros lo mas parecido seria como ejemplo :

Objeto p;
objeto c = new Objeto();
p = c;

p  en este caso seria "entre comillas" un puntero que apunta a c.
A todo esto viene la siguiente duda, como podria hacer esta linea en C# :


int  (*func) (char *);


Un puntero que apunta a una función.
Título: Curiosidad
Publicado por: Vicente en 14 de Julio de 2006, 11:39:48 AM
Hola,

Sí, se llama delegado ;) (delegate):


//Declaramos el tipo
delegate void MiPunteroAFuncion();

//Una función compatible con la firma del tipo
void MiFuncion() { //codigo }

//Declaramos una variable del tipo del delegado y asignamos la función
MiPunteroAFuncion miVariable = MiFuncion;


Un saludo!

Vicente
Título: Curiosidad
Publicado por: Diferencial en 14 de Julio de 2006, 11:45:56 AM
Excelente muchas gracias Vicente.