11

Va bene iniziare a utilizzare Iron Ruby e Iron Python nei sistemi di produzione? Inoltre, ci sono dei requisiti aggiuntivi per ospitarli?Le lingue "ferro" sono pronte per la prima serata?

E, per i punti bonus, dato che F # è un linguaggio di programmazione funzionale nello stesso modo in cui è Python, c'è qualche vantaggio nell'usare l'uno sull'altro all'interno del framework .NET?

+3

È possibile trovare questo interessante prima di iniziare: http://bit.ly/dl7YC9 – Lloyd

+1

Sì, come Lloyd fa notare, questo è un tempismo abbastanza incredibilmente cattivo per la tua domanda, lì ... – Frosty840

+7

Python non è un linguaggio funzionale . – delnan

risposta

10

Va bene iniziare a utilizzare Iron Ruby e Iron Python nei sistemi di produzione?

Sì. Sono responsabile per un sistema software che funziona 24/7/365. Non critico per la vita o la morte, ma molto importante per il denaro. E usa IronPython, anche se non molto - per lo più piccoli script per cose che sono più facili da fare in un linguaggio dinamico. Ciò significa: Funziona, non blocca il tuo processo o mangia folle quantità di memoria senza una buona ragione. Ma la base di utenti e la "comunità linguistica" sono molto più piccoli di ad es. C#, quindi potrebbe essere più difficile trovare aiuto online.

Aggiungi: Informazioni sulla "MS caduta di ferro *" - novità: non mi interesserebbe molto di questo. Esistono molti buoni linguaggi che non sono sviluppati attivamente da Microsoft. Finché c'è uno sviluppo attivo, finché fa ciò che vuoi che faccia e finché puoi trovare supporto se non riesci a capire cosa sta succedendo, dovresti stare bene. Ma è probabilmente più una questione di gusti che un punto tecnico.

Inoltre, sono previsti requisiti aggiuntivi per l'hosting?

Per IronPython 1.0 (che è ancora utilizzabile) sono necessari solo due assiemi. Per 2.0, sono necessari anche gli assembly DLR, ma nessuno di questi è molto grande o ha dipendenze esterne (di cui sono a conoscenza).

E, per i punti bonus, dato che F # è un linguaggio di programmazione funzionale nello stesso modo in cui Python è, non v'è alcun vantaggio di utilizzare uno sopra l'altro all'interno del framework .NET?

Come detto delnan, F # è un linguaggio funzionale, Python no. Python è un linguaggio multiparadigm che supporta alcuni concetti di programmazione funzionale come espressioni lambda o list comprehensions, ma anche C#. F # e Python sono animali molto diversi.

Le differenze principali sono:

  • F # è compilato per IL dal compilatore F # (non è un linguaggio dinamico), IronPython può essere compilato o interpretato in fase di esecuzione
  • F # è staticamente tipizzato con inferenza di tipo , Python viene digitato in modo dinamico (il controllo del tipo viene eseguito in fase di esecuzione)
  • F # è un linguaggio funzionale: supporta elementi come la corrispondenza dei modelli, funzioni di ordine superiore e tipi, metaprogrammazione. È davvero fantastico se devi implementare un algoritmo estremamente complesso che può essere implementato più facilmente in un linguaggio funzionale e vuoi interfacciarlo con il codice C#. (L'ultima parte è la mia opinione personale.)
  • Python è principalmente un linguaggio OOP/imperativo.È davvero fantastico per aggiungere script a un'applicazione C# esistente. (L'ultima parte è la mia opinione personale.)

Se dirci di più su ciò che si vuole fare, forse possiamo darvi ingresso più specifiche o suggerire altre alternative.

+1

Ci scusiamo per il mio malinteso riguardo al paradigma di programmazione di Python, e grazie per il chiarimento. Sembra che Iron Python sarebbe meglio aggiungere il supporto per gli script alle mie applicazioni, e F # sarebbe meglio aggiungere algoritmi complessi (come la corrispondenza dei pattern). Ti suona bene? – PureCognition

+0

@PureCognition: Sì, mi sembra giusto, ed è così che uso i due. Ma se qualcun altro non è d'accordo, sarei felice di estendere la lista con più pro e contro. – Niki

1

F # è adatto per applicazioni scientifiche e finanziarie. Può essere usato dove Scala è usato nel mondo JVM. Altri linguaggi che implementano questi paradigmi sono Caml, OCaml, Erlang.

+1

F # è ideale anche per le applicazioni altamente concorrenti. – GregC

+0

Il tuo commento sulla concorrenza potrebbe rivelarsi utile andare avanti, Greg. Grazie. – PureCognition

3

Utilizziamo IronPython per creare applicazioni B2B in Silverlight. Non abbiamo mai avuto problemi di prestazioni o stabilità.

Quindi abbiamo creato due applicazioni (ognuna di circa 20.000 righe di codice Python nel frontend - i backend sono costruiti con il framework Django o Catalyst) e stanno costruendo la prossima applicazione ancora più grande.

Con un linguaggio dinamico come IronPython è possibile modificare f.e. una funzione in una classe e ricaricarla su una richiesta HTTP. Non è necessario ricompilare, ricaricare l'intera applicazione Silverlight nel browser e navigare fino al punto in cui le modifiche al codice diventano effettive.

Recentemente il codice IronPython è stato messo nelle mani della community e persone come Michael Foord stanno facendo un ottimo lavoro nel mantenere questa versione di Python up2date.

+0

spassig, usi per lo più IronPython per creare business personalizzabili e regole di validazione che possono essere modificate dopo la compilazione? – PureCognition

+1

PureCognition, per creare la logica dell'intera GUI della nostra applicazione in IronPython (Dialoghi, Grafici, EventHandler, Richieste, DocumentWindows, ...) – spassig

Problemi correlati