Are the "Iron" languages ready for prime time?
Asked Answered
S

3

11

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?

Suspicious answered 22/10, 2010 at 14:12 Comment(9)
You might find this interesting before you start: bit.ly/dl7YC9Commonable
Yeah, as Lloyd points out, that's some pretty awesomely bad timing on your question, there...Oneness
Python is not a functional language.Geminate
I was hoping that Python would be used in the same sentence as dynamic.Brena
"given that F# is a functional programming language in the same way that Python is" -- what does that even mean?Fideism
Thanks for the clarification concerning Python's programming paradigm. I'm aware of Microsoft dropping, but don't consider that relevant yet to my situation.Suspicious
hmmmmmmmmmm, I just started learning IronPython today because it seemed fun and useful and now I read that Microsoft stops supporting it.Forney
TTT, Microsoft is effectively giving the Iron Languages to the open source community, but I don't see that as a reason not to use them. There are language written on top of Java's VM that are Sun don't support, as I understand it.Suspicious
The bonus part is probably covered by #3328385.Somnifacient
P
10

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.

Placida answered 22/10, 2010 at 14:39 Comment(2)
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?Suspicious
@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.Placida
I
3

We use IronPython to build B2B applications in Silverlight. We had never run into problems concerning performance or stability.

So fare we had build two applications (each ca. 20.000 lines of python code in the frontend - backends are build with the Django or Catalyst framework) and are building the next even bigger application.

With a dynamic language like IronPython it's possible to change f.e. a function in a class and reload it over an HTTPRequest. No need to recompile, reload the whole silverlight application in the browser and navigate to the point where the code changes take effect.

Recently the IronPython code was put in the hand of the community and people like Michael Foord are doing a very good job in keeping this version of Python up2date.

Insensible answered 20/6, 2011 at 19:45 Comment(2)
spassig, do you mostly use IronPython to create customizable business and validation rules that can be changed post-compilation?Suspicious
PureCognition, wo build the logic for the whole GUI of our application in IronPython (Dialoges, Charts, EventHandler, Requests, DocumentWindows, ...)Insensible
B
1

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.

Brena answered 22/10, 2010 at 14:34 Comment(2)
F# is also great for highly-concurrent apps.Brena
You're concurrency comment may come in handy moving forward, Greg. Thanks.Suspicious

© 2022 - 2024 — McMap. All rights reserved.