Question

Well, after a long time writing .net programs in C# I started to feel angry and frustrated about all that syntactic trash that comes with statically typed languages. Now I want to change to dynamically typed languages, that takes advantage of CLI. So I searched a bit around and I didn't like of what I saw. I first looked for IronPython. But the project feels disorganized, it just didn't look well at all. Then I heard about Boo. I liked boo's, the ideal and all, but it kinda feels like the project is halted. Then I heard of IronRuby, but the project is still at beta, and so I decided to wait until it gets more mature.

So as I couldn't find a good CLR compatible dynamic language, I'm asking you guys what do you(would you) use?

Since people started asking what is the reason for not choosing IronPython. Well the reason is, like I stated earlier, it seems disorganized. Why?

1- The homepage points to another page at codeplex, the homepage should be clean and just point the advantages of IronPython, take the IronRuby page as an example http://www.ironruby.net/ its that hides language-developent stuff from the user(even though the user has to access IronRuby's svn prior using it). What kind of issues IPython was trying to addres when it was created. Is there a page with that kind of information? Well the page is there, but its hidden on the 'More Information Page' among a bunch of meaningless links to articles. On Boo's page its at clear sight named as Manifesto http://boo.codehaus.org/BooManifesto.pdf .

There is more but the feeling that I have is that IPython is just a home-brewed interpreter, despite the quality that it can actually have. I felt that it was safer to download Boo and use IronPython(but no worries Microsoft I had also downloaded IPython).

About Duck-Typing and Boo's static typing they both seems to work fine for me.

Was it helpful?

Solution

I'd still use Boo. I'm not sure why you believe Boo has been halted. Development sometimes seems slow, but there are multiple people currently working on bug fixes as demonstrated by this list of recently fixed issues (bugs).

For those unfamiliar with Boo, it's very similar to Python, but includes things that Python does not (like string interpolation and syntatic macros). You can compile Boo programs or use Boo through the "Boo Interactive Shell" booish.

By the way, I didn't like IronPython either when I looked at it a couple years ago. To me it looked like a straight port of Python to the CLI, but as far as I could tell it did not include new features typical .NET development requires.

EDIT: IronPython does seem to have progressed since I first looked at it (thanks for Curt pointing this out). However I have not bothered to look at IronPython again since I found Boo.

OTHER TIPS

In terms of practical usability IronPython is going to be your best bet right now.

Why are people suggesting Boo? It's a statically typed language, which is not what this question is asking for. Yes, I know it has optional duck typing, but really if Boo-related information is acceptable to the question author then the question should really be edited to make that clear.

Regarding IronPython, you said you didn't like it, but there really isn't any response I can give to critical comments that are so vague :)

Alternatively, I would suggest that you take a look at cPython. A couple points:

  • You can building .exe files with py2exe and other tools.
  • Much larger access to 3rd-party Python libraries and frameworks
  • Access to Windows APIs via pywin32
  • Python extension writen in C are usable (unlike IronPython, though there are efforts underway to improve this situation)

You will find that you really don't need .NET for most things. Of course this all depends on your application. For integrating with existing .NET code then obviously you have to use IronPython.

You say you want "dynamic", but if the motivation is only to avoid "all that syntactic trash", you should have a look at F#. It's statically-typed, but has the light syntax feel of a dynamic language, as well as an interactive mode (REPL loop).

I agree with your sentiment that IronPython seems disorganized, but I have been using it for (small) projects and I have been pretty happy with it so far.

If you haven't seen it yet, you should check out IronPython Studio.

I've been down a similar path. Checked out Boo, dotLISP, IronPython, etc.

I recommend IronPython. BUT if you don't already have any Python experience, then you'll probably learn core Python quicker by loading CPython and using that for the examples & tutorials.

Once you have CPython understanding, IronPython will be a lot easier to understand. Of course, you still need to understand some C# and have access to the .Net SDK documentation. Without it, IronPython is extremely difficult to get useful things done with.

You can also take a look at Fan language. It is not pure dynamic, it's a mixture of both static & dynamic. And like most of the newer languages, it is pure OO with mixture of functional in it. It also run on both JVM and CLR platform.

Syntax wise it is closer to C# with a lot of sugar syntax so it kind of look like C# blend in with Ruby/Python.

Since the language is new, only 3 years old, its performance is not stellar yet.

Update 21-Feb-2014: Fan had changed its name to Fantom

Take a look at Clojure. The CLR version is still in the early stages, but you could probably get the java version working in .Net via IKVM

...syntactic trash that comes with statically typed languages...

If your concern is syntactic trash then you might also like to check out statically typed languages with type inference, most notably F#.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top