views:

186

answers:

2

Is it okay to start using Iron Ruby and Iron Python in production systems? Also, are there any additional requirements for hosting them?

And, for the bonus points, given that F# is a functional programming language in the same way that Python is, is there any advantage to using one over the other within the .NET framework?

+1  A: 

F# is good for scientific and financial applications. It can be used where Scala is used in JVM world. Other languages that implement these paradigms are Caml, OCaml, Erlang.

GregC
F# is also great for highly-concurrent apps.
GregC
You're concurrency comment may come in handy moving forward, Greg. Thanks.
PureCognition
+5  A: 

Is it okay to start using Iron Ruby and Iron Python in production systems?

Yes. I am responsible for a software system that runs 24/7/365. Not Life-Or-Death critical, but lots-of-money critical. And it uses IronPython, although not much of - mostly little scriplets for things that are easier to do in a dynamic language. That means: It works, it doesn't crash your process or eat insane amounts of memory for no good reason. But the user base and the "language community" are far smaller than e.g. C#, so it might be harder to find help online.

Add: About the "MS dropped Iron*"-news: I really wouldn't care to much about that. There are many good languages that aren't actively developed by Microsoft. As long as there is active development, as long as it does what you want it to do and as long as you can find support if you can't understand what's going on, you should be fine. But that's probably more a matter of taste than a technical point.

Also, are there any additional requirements for hosting them?

For IronPython 1.0 (which is still usable) you only need two assemblies. For 2.0, you also need the DLR assemblies, but neither of them are very big or have any external dependencies (that I'm aware of).

And, for the bonus points, given that F# is a functional programming language in the same way that Python is, is there any advantage to using one over the other within the .NET framework?

As delnan said, F# is a functional language, Python is not. Python is a multiparadigm language that supports some functional programming concepts like lambda expressions or list comprehensions, but so does C#. F# and Python are really very different beasts.

The main differences are:

  • F# is compiled to IL by the F# compiler (it's not a dynamic language), IronPython can be compiled or interpreted at runtime
  • F# is statically typed with type inference, Python is dynamically typed (type checking is done at run time)
  • F# is a functional language: It supports things like pattern matching, higher-order functions and -types, metaprogramming. It's really great if you need to implement a highly complex algorithm that can be easier implemented in a functional language, and you want to interface with C# code. (The last part is my personal view.)
  • Python is primarily a OOP/imperative language. It's really great for adding scripting to an existing C# application. (The last part is my personal view.)

If you tell us more about what you want to do, maybe we can give you more specific input or suggest other alternatives.

nikie
Sorry for my misunderstanding concerning Python's programming paradigm, and thanks for the clarification. It seems that Iron Python would be best to add scripting support to my applications, and F# would be best to add complex algorithms (such as pattern matching). Does this sound about right?
PureCognition
@PureCognition: Yes, that sounds right to me, and that's how I use the two. But if anybody else disagrees, I'd be happy to extend the list with more pros and cons.
nikie