Domanda

Sono curioso di sapere come .NET influenzerà le applicazioni Python e Ruby.

Le applicazioni scritte in IronPython / IronRuby saranno così specifiche per l'ambiente .NET, che diventeranno essenzialmente specifiche della piattaforma?

Se non utilizzano nessuna delle funzionalità .NET, qual è il vantaggio di IronPython / IronRuby rispetto alle loro controparti non .NET?

È stato utile?

Soluzione

Non posso dire nulla su IronRuby, ma la maggior parte delle implementazioni di Python (come IronPython, Jython e PyPy) cercano di essere il più fedele possibile all'implementazione di CPython. IronPython sta rapidamente diventando uno dei migliori in questo senso, e c'è molto traffico su Planet Python al riguardo.

La cosa principale che incoraggerà gli sviluppatori a scrivere codice diverso da quello che scriverebbero in CPython è la mancanza di moduli di estensione C come NumPy (questo è un problema anche in Jython e PyPy).

Un progetto interessante da tenere d'occhio è IronClad, che ti permetterà di chiamare i moduli di estensione C da IronPython. Questo dovrebbe eventualmente significare che puoi sviluppare codice sotto CPython, usando qualunque modulo ti piaccia, e verrà eseguito senza modifiche su IronPython.

http://www.resolversystems.com/documentation/index.php/Ironclad

Quindi, per rispondere alle tue domande:

Dovrebbe essere abbastanza facile scrivere applicazioni IronPython che funzionano anche su CPython, ma probabilmente vorrei mirare a fare il contrario: i programmi CPython che funzionano anche su IronPython. In questo modo, se non funziona, è più probabile che si tratti di un bug noto con un rimedio noto.

Il vantaggio di IronPython et al esistente è che forniscono implementazioni alternative del linguaggio, che a volte sono utili per individuare i bug in CPython. Forniscono anche metodi alternativi per distribuire le tue applicazioni Python, se per qualche motivo ti trovi in ??una situazione (come silverlight) in cui la distribuzione dell'implementazione di CPython con la tua applicazione non è appropriata.

Altri suggerimenti

  

Le applicazioni scritte in IronPython / IronRuby saranno così specifiche per l'ambiente .NET, che diventeranno essenzialmente specifiche della piattaforma?

Attualmente IronRuby viene fornito con la maggior parte della libreria standard di rubini di base e il supporto per le gemme di rubino.

Ciò significa che supporterà praticamente qualsiasi app ruby ??nativa che non si basa sulle estensioni C.
Il rovescio della medaglia è che sarà possibile scrivere app ruby ??native in IronRuby che non si basano sul CLR e che saranno portabili alla risonanza magnetica.

Se le persone scelgono o meno di creare o utilizzare le estensioni per le loro app usando il CLR è la stessa domanda se le persone creano o usano le estensioni C per la risonanza magnetica: una non è più portatile dell'altra.

C'è una domanda secondaria di " poiché è molto più facile creare estensioni IronRuby in C # piuttosto che creare estensioni CRuby in C, le persone creeranno estensioni dove dovrebbero attenersi al codice ruby ??nativo ? " , ma è del tutto soggettivo.

Nel complesso, tuttavia, penso che qualsiasi cosa che renda più semplice la creazione di estensioni sia una grande vittoria.


  

Se non usano nessuna delle funzionalità .NET, qual è il vantaggio di IronPython / IronRuby rispetto alle loro controparti non .NET?

  1. Prestazioni: IronRuby è già più veloce della MRI 1.8 e non è lontano dalla MRI 1.9 e le cose miglioreranno solo in futuro. Penso che Python sia simile in questo senso.

  2. Implementazione: come è già stato detto, l'esecuzione di un'app di rails multipiattaforma ruby ??nativa all'interno di IIS è una proposta interessante per alcuni sviluppatori basati su Windows, poiché consente loro di integrarsi meglio con i server esistenti / l'infrastruttura di gestione / ecc.

  3. Stabilità: sebbene la risonanza magnetica 1.9 sia molto meglio della 1.8, non penso che nessuno possa essere in disaccordo sul fatto che CLR abbia un Garbage Collector e un runtime di base molto migliori rispetto a C ruby.

IronPython / IronRuby sono creati per funzionare sulla macchina virtuale .net, quindi sono come dici essenzialmente specifici della piattaforma.

Apparentemente sono compatibili con Python e Ruby fintanto che non usi nessuno dei framework .net nei tuoi programmi.

Se si crea una libreria o un framework, le persone possono usarlo su .NET con il proprio codice .NET. È fantastico per loro e per te!

Quando si sviluppa un'applicazione, se si utilizzano le funzionalità di .NET con abbandono, si perde "multipiattaforma", il che non è sempre un problema.

Se si avvolgono questi usi con un'API interna, è possibile sostituire le implementazioni .NET in un secondo momento con pure-Python, C (per CPython) o Java (per Jython) in un secondo momento.

Secondo la pagina Mono, IronPython è compatibile con l'implementazione Mono del runtime .Net, quindi gli eseguibili dovrebbero funzionare sia su Windows che Linux.

Rispondi alla tua prima domanda con la seconda, se non usi nulla da .Net solo le librerie originali fornite dall'implementazione della lingua, puoi interpretare il tuo file * .py o * .rb con un'altra implementazione e dovrebbe funzionare.

Il vantaggio sarebbe che se sei un negozio .Net di solito ti occupi di avere il giusto framework installato sul computer client ecc ... beh, se vuoi il codice Python o Ruby, ora devi supportare un altro "framework". è necessario distribuire l'installazione, occuparsi del problema della versione, ecc ... Quindi ci sono 2 vantaggi, usando la potenza del framework .Net in un'altra lingua + mantenere la distribuzione / manutenzione il più semplice possibile.

Sarebbe bello eseguire Rails / Django sotto IIS piuttosto che soluzioni di tipo Apache / Mongrel

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top