Hola a todos, hola estimado Maestro
 
Hace algun tiempo quise encontrar un equivalente a la funcion
ExecScript(string) de nuestro nunca bien ponderado VisualFoxPro, donde un
ExecScript("SELECT ... FROM...") compila on-the-fly y ejecuta actualmente la
sentencia como si esta estuviese presente en ese lugar. Más aún, el runtime
de Fox podía ejecutar el comando COMPILE, para ir autogenerando bloques de
codigo enteros. Esta funcionalidad, por ejemplo, permitía compilar páginas
web con scripting en lenguaje Fox, de hecho, uno de los mecanismos de
WebConnection está basado en esta posibilidad. Otros lenguajes como Perl
tambien tienen una implementacion notablemente parecida a la de Fox.
 
En .NET parece ser que el problema está, al menos en parte, en lo
fuertemente tipado del entorno de ejecución y en el mecanismo del CLR, con
lo cual aparentemente es altamente complicado lograr esta funcionalidad en
runtime. Por ejemplo, nosotros necesitábamos cargar en un string algo asi
como "Dim obj AS "+ cTipoClase y luego ejecutarlo inmediatamente, donde el
tipo cTipoClase sólo se conocía en tiempo de ejecución, porque necesitábamos
generar un formulario de clase de base con la logica para el patrón
singleton a fin de heredarlo a lo largo de toda la solución. En el algoritmo
genético, algo parecido aplica, en cada época o generación del mismo es
posible que sea necesario alterar significativamente su comportamiento, ya
que por definición no bastaría sólo con cambiar sus parámetros de
funcionamiento, sino que el mismo algoritmo debe automodificarse en cada
iteración.
 
Al carecer de ejecución dinámica como lo pretendíamos, vimos que la mayor
parte de las soluciones venían del lado de crear un objeto compilador,
pasarle un string/archivo/bloque, luego enlazar el ensamblado creado y
ejecutarlo. Sin embargo, esto , aunque efectivo, no es elegante sobre todo
si recordamos aquellos lujos que tenía el zorro (permitanme ponerme un poco
nostálgico).  Tuvimos que lidiar con reflexión y esas cosas, y aunque se
tuvo la solución, no nos pareció elegante. Nuestra conclusion fue que
efectivamente era necesario recurrir a los trucos expuestos, al menos hasta
que eventualmente se coloque este proceso en un espacio de nombres en algun
release futuro de .NET, aunque si examinamos como está diseñado el CLR,
creería que va a costar algo, pero son solo conjeturas de este momento.
 
En java está la posibilidad de lograr evaluacion dinamica de expresiones a
través de un compilador on-memory y no necesariamente uno externo, el cual
genera bytecodes on-the-fly al recibir un string, aunque exige que el
programador conozca los internals de estos objetos para poder luego
utilizarlos. De todos modos, algunos ejemplos tirados por el Maestro podrían
considerarse como algo parecido a compiladores en-proceso de todos modos, y
en este caso el parecido (y las limitaciones) entre ambos mundos quedan muy
evidenciados.
 
Cordiales saludos,
 
Carlos A. Pérez


  _____  

De: puntonet@mug.org.ar [mailto:[EMAIL PROTECTED] En nombre de Angel
"Java" Lopez
Enviado el: Saturday, December 01, 2007 10:21
Para: puntonet@mug.org.ar
Asunto: [puntonet] evaluar funcion


Hola gente!
 
Hace poco creo hubo una pregunta parecida, no se si envie estos enlaces,
donde esta tambien el mencionado por Alan, (jeje.... ya va siendo tiempo de
publicar AjBasic con un ejemplo de este tipo):
 
(seria interesante tambien plantear el tema de algoritmo genetico en una
grid.... pero eso es otro tema.... ver algo en
http://msmvps.com/blogs/lopez/archive/2007/11/15/programando-para-una-grid.a
spx
http://msmvps.com/blogs/lopez/archive/2007/11/21/m-225-s-programando-para-un
a-grid.aspx
)
 
Build a Custom .NET "EVAL" Provider
http://www.eggheadcafe.com/articles/20030908.asp
 
http://www.codeproject.com/csharp/runtime_eval.asp
http://www.codeproject.com/csharp/csi.asp
 
Runtime Compilation (A .NET eval statement)
http://www.codeproject.com/dotnet/evaluator.asp
 
An Eval Function for C# using JScript.NET (JavaScript) 
http://www.odetocode.com/Code/80.aspx

Evaluate C# Code (Eval Function)
http://www.codeproject.com/csharp/evalcscode.asp

The expression evaluator revisited (Eval function in 100% managed .net)
http://www.codeproject.com/useritems/eval3.asp

Evaluating Mathematical Expressions by Compiling C# Code at Runtime
http://www.codeproject.com/cs/algorithms/matheval.asp

A Simple Compiler for the Common Language Runtime
http://www.codeproject.com/cs/algorithms/compiler.asp

Nos leemos!

Angel "Java" Lopez
http://www.ajlopez.com/
 

----- Original Message ----- 
From: Alan  <mailto:[EMAIL PROTECTED]> Lavintman 
To: puntonet@mug.org.ar 
Sent: Saturday, December 01, 2007 6:22 AM
Subject: [puntonet] evaluar funcion

Fijate si esto te puede servir...

http://www.odetocode.com/Code/80.aspx

Tuve que usarlo tiempo atras y me dio resultado...

SAludos.


Dario Quintana <[EMAIL PROTECTED]> wrote: 

Perdon si la pregunta sonó fea... no es con mala intención, me dí cuenta
despues que escribí, mejor me voy a dormir...

Saludos y segun nos comentes un poco más...podremos ayudarte.


On Dec 1, 2007 2:14 AM, Dario Quintana < [EMAIL PROTECTED]>
wrote:


Alguien tiene idea de que ? No quedó muy claro que estás necesitando.




-- 
Dario Quintana
http://darioquintana.com.ar  <http://darioquintana.com.ar> 




  _____  

Be a better sports nut! Let your teams follow you with Yahoo Mobile. Try
<http://us.rd.yahoo.com/evt=51731/*http://mobile.yahoo.com/sports;_ylt=At9_q
DKvtAbMuh1G1SQtBI7ntAcJ> it now.



__________ Información de NOD32, revisión 2124 (20070317) __________

Este mensaje ha sido analizado con NOD32 antivirus system
http://www.nod32.com

Responder a