Soporte para IL en C#

30/01/2005 - 18:25 por Alejandro Serrano | Informe spam
A veces resulta necesario expresar algunas construcciones en lenguage
intermedio directamente. Esto no se puede hacer con C# de la misma
manera que se hace con el lenguaje ensamblador en C o C++. Pero después
de todo, IL es el ensamblador de .NET, ¿no?
Sé que algunos otros compiladores como F# poseen esta característica,
que yo particularmente encuentro muy útul. Así pues, me gustaría
proponer una extensión a C# que s eparecería a algo así:

unsafe int __il
{
ldarg.0
ldarg.1
add
}

Que correspondería al código en F#:

(# "ldarg.0
ldarg.1
add" : int )

El código debería marcarse como no verificable con "unsafe", así como
marcar el tipo de lo que se devolverá. Así nos evitaríamos tener que
usar Reflection para estos menesteres, que resulta muy complejo (y feo a
la vista), así como mucho menos eficiente.

He puesto esta sugerencia en el "MSDN Product Feedback". Puden verla en
http://lab.msdn.microsoft.com/Produ...te;BK20847

¡¡Vota si te parece bien!!
 

Leer las respuestas

#1 Octavio Hernandez
30/01/2005 - 19:10 | Informe spam
Alejandro,

La idea en principio me parece buena, me recuerda la posibilidad de escribir
ensamblador en línea de Delphi y muchas variantes de C/C++...
Mis posibles "objeciones" (habría que pensar más sobre el asunto):
a) ¿no haría eso al lenguaje más "dependiente" aún de la plataforma .NET?
Aunque en buena medida ya lo es, indudablemente...
b) seguridad. ¿no abrirá esto más "agujeros" potenciales de los que
introduce el actual "unsafe code"?
c) sintaxis. Yo buscaría una nueva palabra reservada que no empiece por los
dos subrayados. Todo el mundo parece estarse apartando de ese estilo
últimamente (Managed Extensions de VC++, Borland C++...).
d) tampoco me gusta del todo lo de tener que especificar el tipo, cosa que
se justifica más en un lenguaje funcional. Si se pudieran definir bloques de
código IL, me gustaría que la sintaxis fuera al estilo de por ejemplo
unchecked { ... }. La otra posibilidad sería que sólo se pudieran definir
METODOS enteros de código IL.

Slds,

Octavio


"Alejandro Serrano" escribió en el mensaje
news:
A veces resulta necesario expresar algunas construcciones en lenguage
intermedio directamente. Esto no se puede hacer con C# de la misma manera
que se hace con el lenguaje ensamblador en C o C++. Pero después de todo,
IL es el ensamblador de .NET, ¿no?
Sé que algunos otros compiladores como F# poseen esta característica, que
yo particularmente encuentro muy útul. Así pues, me gustaría proponer una
extensión a C# que s eparecería a algo así:

unsafe int __il
{
ldarg.0
ldarg.1
add
}

Que correspondería al código en F#:

(# "ldarg.0
ldarg.1
add" : int )

El código debería marcarse como no verificable con "unsafe", así como
marcar el tipo de lo que se devolverá. Así nos evitaríamos tener que usar
Reflection para estos menesteres, que resulta muy complejo (y feo a la
vista), así como mucho menos eficiente.

He puesto esta sugerencia en el "MSDN Product Feedback". Puden verla en
http://lab.msdn.microsoft.com/Produ...te;BK20847

¡¡Vota si te parece bien!!

Preguntas similares