7

Tenemos un IDE para automatización de máquinas que permite a sus usuarios desarrollar soluciones al conectar visualmente objetos y componentes. También pueden escribir "complementos" usando C++ y C#. El IDE se escribe usando .NET. Sus usuarios a menudo no se basan en el desarrollo de software tradicional y la programación, sino más bien en la dirección de ingenieros técnicos/eléctricos y de automatización, pero todos necesitan conocer los conceptos básicos de la programación C# y C++.¿Qué lenguaje de scripting para nuestro IDE basado en .NET?

Si tuviéramos que introducir un lenguaje de macro/scripting para el IDE en sí, incluyendo una consola interactiva (designtime solamente) ¿qué idioma deberíamos elegir? Debería ser un lenguaje de scripting dinámico que tenga una buena base en .NET y DLR, ya que es una prueba de futuro y tiene un buen soporte y un impulso decente, pero no tendría una curva de aprendizaje tan pronunciada para nuestros desarrolladores especiales. Idealmente, debería ser completamente intuitivo si conoce C++ y/o C#, incluso si no es un desarrollador de software sólido como una roca.

ACTUALIZACIÓN: La opción que actualmente nos resulta más atractiva es utilizar C# compilado dinámicamente. Nuestros usuarios podrían continuar usando C#. Incluso parece posible construir una consola interactiva, como lo demuestra CSI. ¿Qué piensas de esta opción? ¿Hay algún inconveniente/inconveniente potencial que nosotros (debido a nuestra falta de experiencia con el scripting en general) aún no conocemos?

+0

Bueno, parece que el DLR no va a ser compatible en el futuro, por lo que tendrá que deshacerse del requisito de "prueba futura" o usar algo que no sea el DLR. –

+0

@Richard - ¿Por qué harían eso? – ChaosPandion

+0

@Richard Hein - ¿Citación? –

Respuesta

2

creo que lo haremos bien ro Nuestro propio entorno de scripts basado en C#, algo así como una versión simplificada de la genial CS-Script o integraríamos CS-Script de inmediato.

2

Python (IronPython) tendría mi voto. Es un lenguaje dinámico que puede usar para crear scripts de programas .NET, y puede usarlo de forma interactiva (en realidad no lo ha intentado con IronPython, pero sí con python "normal"). Desafortunadamente, no va a ser completamente intuitivo para tus desarrolladores C++ y C#.

Puede usar C# como lenguaje de scripting (puede compilar y ejecutar el código en tiempo de ejecución), pero no obtendrá una consola interactiva, y no es muy similar a "script".

Creo que la simplicidad es muy importante en un lenguaje de scripting. "Hello World" en Python es simplemente print "Hello World", donde en C# necesitarías un espacio de nombres, clase, método principal estático, etc. Si quieres usar C#, puedes simular eso al envolver el código proporcionado por el usuario dentro de una definición de función (o al menos una clase) antes de compilar, por lo que su "script" puede ser simplemente el contenido de la función. Eso restringirá algo de lo que pueden hacer en un script, lo que podría ser bueno o malo, dependiendo de lo que quieras. Si necesitan múltiples clases y funciones, quizás necesiten escribir un complemento completo en su caso.

+0

¿Qué significa realmente "script-like" en la vida real? ¿Qué características traen a la mesa los lenguajes de scripting que son importantes/útiles que C# no tiene? – bitbonk

+0

Mi comentario se estaba volviendo largo, así que edité mi respuesta. Además, una de las características principales que diferencia a los lenguajes de scripting es que es muy dinámica (y tipada dinámicamente). Si bien hay nuevas extensiones dinámicas en .NET 4.0, C# sigue siendo un lenguaje bastante estático (y estáticamente tipado). – Bob

+0

Entonces, ¿la razón principal para tener un lenguaje de tipado dinámico es poder escribir menos caracteres? – bitbonk

1

El futuro no está claro para el DLR los idiomas dinámicos soportados actualmente IronRuby e IronPython. Lo que no está claro es la dirección de Microsoft en esos 2. Hasta que lo escuche de The Gu o superior, evitaría tomar una decisión sobre cualquiera de esos 2. Eso no lo ayuda hoy, tomando una decisión de diseño para sus usuarios. Tengo la sensación de que IronPython tendrá soporte, pero eso es solo una especulación sin fundamento.

Para secuencias de comandos .NET, también considere Boo.

Boo es una, tipos estáticos lenguaje de programación orientado a objetos que busca hacer uso de la ayuda de la infraestructura de lenguaje común para Unicode, las aplicaciones de internacionalización y de la tela, mientras que el uso de una sintaxis de Python-inspirado 1 y un enfoque especial en el lenguaje y extensibilidad del compilador Algunas características de la nota incluyen inferencia de tipo, generadores, métodos multimétodos, tipado de pato opcional, macros, cierres verdaderos, currying y funciones de primera clase.

+0

'El tiempo de ejecución de lenguaje dinámico (DLR) es una nueva API en .NET Framework 4. Proporciona la infraestructura que admite el tipo dinámico en C#' http://msdn.microsoft.com/en-us/library/dd264736.aspx –

+0

@Lucas: hay cosas geniales allí con el copy/paste. C# está compilado, no interpretado. El OP quería opciones para 'lenguaje de scripting dinámico'. No estoy seguro de lo que tu comentario tiene que ver con Boo. –

+0

copiar y pegar de nuevo :) dijiste 'El futuro no está claro para el DLR'. Está bastante claro, a menos que Microsoft quiera reemplazarlo en C# 5+. Incluso si lo hacen, DLR en sí mismo es seguro hasta que C# 4 no sea compatible. –

1

incorporadas, un pequeño editor de C# en una aplicación y compilado/corrieron resultados

ala

var codeProvider = new CSharpCodeProvider( 
       new Dictionary<string, string> { { "CompilerVersion", "v3.5" } }); 

var parameters = new CompilerParameters(); 
// add any of your 'library' dlls as references 
parameters.ReferencedAssemblies.AddRange(dlls.ToArray()); 
parameters.OutputAssembly = outputPath; 
CompilerResults r = codeProvider.CompileAssemblyFromFile(parameters, sourceFiles); 
+0

C# sería más atractivo para nuestros usuarios. Solo tendríamos que asegurarnos de que todo lo que normalmente espera de un entorno de diseño (como, por ejemplo, una consola interactiva) esté realmente allí. – bitbonk

1

Si observa la forma en que Microsoft se dirige con scripting/automatización de sus productos, PowerShell es el objetivo.

El desarrollo de su host y proveedor personalizado debe integrarse muy bien en su aplicación .NET.

Cuestiones relacionadas