views:

735

answers:

10

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.

+1  A: 

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.

Geoffrey Chetwood
A: 

If I use IronPython, i would rather go eclipse and leave visual studio for good.

Diones
+8  A: 

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.

Kevin
Hmm, I believe you are right. Guess I was looking at the wrong place, but about its usability, do you think it can be used on medium size applications?
Diones
And what IDE do you use to program Boo?
Diones
Other than LINQ (which is a little hard to shoehorn into Python without making changes to the core language -- cue remarks of "embrace and extend"), what "new features of .NET" do you think are missing?Obviously, I endorse IronPython wholeheartedly!
Curt Hagenlocher
Diones, I use Boo on small projects. It's nothing against Boo, it's just that at my job, we do a lot of embedded C. I use Boo to do testing on some .NET libraries we use to interface with the embedded C code. (For the .NET libraries we use C++/CLI to gain easy access to C libraries).
Kevin
@Curt: The biggest thing I miss in IronPython is access to .NET enumerations. (I haven't looked at IronPython in a while -- have they added that ability now?) Anyway, having to know the integer values for enumeration values made IronPython leave a sour taste in my mouth.
Kevin
@Curt (continued): When I found Boo, I never looked back. Can you tell me what features IronPython has that CPython doesn't? When I last looked, it was only the ability to make calls to .NET libraries.
Kevin
You can use enumerations from IronPython; I don't recall a time when you couldn't. In addition to .NET interoperability, IronPython gives you better performance for a lot of use cases. But we aim for a truly faithful Python impl, so if you don't need .NET, you may as well use CPython.
Curt Hagenlocher
And out of curiosity, what are the features of Boo that you like that you don't get from IronPython?
Curt Hagenlocher
+1 from me. Boo is a great language with a nice (albeit small) community. SharpDevelop is an excellent IDE that has Boo support from the get-go.
torial
@Curt - There are a number of excellent Boo features, and some innovative features. String interpolation (which 3.0 will get a simple variant of). Syntactic macros for those who want to customize their use of boo. Also, since SharpDevelop has it, WinForms design is EASY.
torial
@Curt: IronPython does support .NET enumerations now. When I looked a couple years ago, it certainly wasn't documented well. I couldn't find any information about them searching IronPython docs or via Google. Well, I'm glad to see you guys knew the importance of .NET enums. :-)
Kevin
Boo is great but it's not dynamic. That is the main difference between Boo and python.
justin.m.chase
@just in case: even though Boo isn't strictly dynamic, its type inference + duck typing makes it quite dynamic.
Mauricio Scheffer
@Mauricio Scheffer: Strictly speaking it's still not dynamic, but you're right those two features go a long way to make it feel dynamic. I think you have to be able to actually edit the Type metadata to be truly dynamic, though the duck typing is a way to do late bound invocation of objects which is a feature of dynamism.
justin.m.chase
+7  A: 

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.

Eric P. Mangold
Sorry about flagging your post as an answer, there isn't an right or wrong answer to my question.
Diones
A: 

IronRuby?

hectorsq
+1  A: 

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).

Brian
A: 

Brian, my previous experience says that functional languages have its application mostly on mathematics which is not my case(common windows applications).

Diones
A: 

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.

DJ
+1  A: 

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.

CyberED
A: 

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

Todd Stout