7

Abbiamo un IDE per l'automazione delle macchine che consente agli utenti di sviluppare soluzioni collegando visivamente oggetti e componenti. Possono anche scrivere "plugin" usando C++ e C#. L'IDE è stato scritto utilizzando .NET. I suoi utenti spesso non sono fondati nello sviluppo e nella programmazione di software tradizionali, ma più nella direzione degli ingegneri tecnici/elettrici e dell'automazione, ma hanno tutti bisogno di conoscere le basi della programmazione C# e C++.Quale linguaggio di scripting per il nostro IDE basato su .NET?

Se dovessimo introdurre un linguaggio di macro/scripting per l'IDE stesso inclusa una console interattiva (solo in fase di progettazione) quale lingua dovremmo scegliere? Dovrebbe essere un linguaggio di scripting dinamico che ha entrambe una buona base in .NET e nella DLR in quanto è a prova di futuro e ha un buon supporto e un discreto slancio, ma non avrebbe una curva di apprendimento così ripida per i nostri sviluppatori speciali. Idealmente dovrebbe essere completamente intuitivo da usare se si conoscono C++ e/o C# - anche se non si è uno sviluppatore di software solido come la roccia.

AGGIORNAMENTO: L'opzione che attualmente è più interessante per noi è utilizzare C# compilato in modo dinamico. I nostri utenti potrebbero continuare a utilizzare C#. Sembra persino possibile costruire una console interattiva, come dimostra CSI. Cosa ne pensi di questa opzione? Ci sono potenziali insidie ​​/ svantaggi che (a causa della nostra mancanza di esperienza con lo scripting in generale) non ne siamo ancora a conoscenza?

+0

Bene, sembra che il DLR non sarà supportato in futuro, quindi dovrete o eliminare il requisito "a prova di futuro" o usare qualcosa di diverso dal DLR. –

+0

@Richard - Perché dovrebbero farlo? – ChaosPandion

+0

@Richard Hein - Citazione? –

risposta

2

penso che lo faremo neanche ro ll nostro ambiente di scripting basato su C#, un po 'come una versione molto semplificata del fantastico CS-Script o integreremmo subito CS-Script.

2

Python (IronPython) avrebbe il mio voto. È un linguaggio dinamico che puoi usare per script di programmi .NET, e puoi usarlo interattivamente (non hai effettivamente provato interattivo con IronPython, ma puoi certamente farlo con python "normale"). Sfortunatamente, non sarà completamente intuitivo per i tuoi sviluppatori C++ e C#.

È possibile utilizzare C# come linguaggio di scripting (è possibile compilare ed eseguire il codice in fase di runtime), ma non si otterrà una console interattiva e non è molto simile allo "script".

Penso che la semplicità sia molto importante in un linguaggio di scripting. "Hello World" in Python è semplicemente print "Hello World", dove in C# avresti bisogno di un namespace, una classe, un metodo Main statico, ecc. Se vuoi usare C#, puoi simularlo avvolgendo il codice fornito dall'utente all'interno di una definizione di funzione (o almeno una classe) prima della compilazione, quindi il loro "script" può semplicemente essere il contenuto della funzione. Ciò limiterà in qualche modo ciò che possono fare in uno script, che potrebbe essere buono o cattivo, a seconda di ciò che si desidera. Se hanno bisogno di più classi e funzioni, forse avrebbero bisogno di scrivere un plugin completo nel tuo caso.

+0

Cosa significa realmente "script-like" nella vita reale? Quali caratteristiche portano i linguaggi di scripting alla tabella che sono importanti/utili che C# non ha. – bitbonk

+0

Il mio commento stava diventando troppo lungo, quindi ho modificato la mia risposta. Inoltre, una delle caratteristiche principali che distingue i linguaggi di scripting è molto dinamica (e digitata dinamicamente). Mentre ci sono nuove estensioni dinamiche in .NET 4.0, C# è ancora un linguaggio piuttosto statico (e tipizzato staticamente). – Bob

+0

Quindi la ragione principale per avere un linguaggio tipizzato dinamicamente è di poter scrivere meno caratteri? – bitbonk

1

Il futuro non è chiaro per il DLR i linguaggi dinamici attualmente supportati IronRuby e IronPython. Ciò che non è chiaro è la direzione di Microsoft su questi 2. Finché non lo avrò sentito da The Gu o da un livello superiore, eviterei di prendere una decisione su uno di questi 2. Ciò non ti aiuta oggi, prendendo una decisione di progettazione per i tuoi utenti. Ho la sensazione che IronPython manterrà il supporto, ma questa è solo una speculazione infondata.

Per lo scripting .NET, considerare anche Boo.

Boo è un linguaggio di programmazione a tipizzazione statica orientata agli oggetti che cerca di fare uso di sostegno del Common Language Infrastructure per Unicode, le applicazioni di internazionalizzazione e web, mentre si utilizza una sintassi di Python di ispirazione 1 e una particolare attenzione sul linguaggio e estendibilità del compilatore. Alcune caratteristiche di nota includono inferenza di tipo, generatori, metodi multimodali, digitazione anatra opzionale, macro, chiusure reali, curriculum e funzioni di prima classe.

+0

'Il dynamic language runtime (DLR) è una nuova API in .NET Framework 4. Fornisce l'infrastruttura che supporta il tipo dinamico in C#' http://msdn.microsoft.com/en-us/library/dd264736.aspx –

+0

@ Lucas: grandi cose lì con il copia/incolla. C# è compilato, non interpretato. L'OP voleva opzioni per "linguaggio di scripting dinamico". Non sei sicuro di cosa il tuo commento abbia a che fare con Boo. –

+0

copia e incolla di nuovo :) hai detto "Il futuro non è chiaro per il DLR". È abbastanza chiaro, a meno che Microsoft non voglia sostituirlo in C# 5+. Anche se lo fanno, DLR è sicuro fino a quando C# 4 non è supportato. –

1

ho inserito un po 'editor di C# in un app e compilato/corse risultati

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# sarebbe più attraente per i nostri utenti. Dovremmo solo assicurarci che tutto ciò che di solito ci si aspetta da un ambiente di scomodo (come ad esempio una console interattiva) sia effettivamente lì. – bitbonk

1

Se si guarda al modo in cui Microsoft si sta dirigendo con lo scripting/l'automazione dei propri prodotti, PowerShell potrebbe essere il bersaglio.

Lo sviluppo dell'host e del provider personalizzati deve essere integrato correttamente nell'applicazione .NET.

Problemi correlati