Choosing an IronPython editor for teaching

The Northtec D520 “Programming” course is changing to IronPython (from Visual Basic) this year, so I have to figure out what editor/IDE the students should use.  In some ways, Visual Studio would be ideal, since they need to get exposed to that during the course (and it’s an excellent IDE, with a really great form designer), but since there isn’t any real IronPython support in Visual Studio (hopefully coming in 2010), it’s not really a viable option.  Instead, they’ll start with a simpler editor, and then briefly learn how to use Visual Studio’s form designer and subclass the forms in IronPython (as described in IronPython in Action).

The requirements here are a bit different than when selecting an editor/IDE for actual development work.  Firstly, it needs to be free (at least for educational use), and it needs to be reasonably simple to use the basic functionality (since these are first-year students).  Code-completion isn’t necessary (on the one hand, it helps them out while they are learning – on the other, they rely a little too much on it), nor is a built-in debugger, or support for complex projects.

I considered seven different editors/IDEs – there are a couple of others, but they either seemed too young (e.g. IronPython IDE, IronEditor), or inappropriate for other reasons (e.g. ZeusEdit is not free, I can’t stand Eclipse.  UPDATE: I decided to try Eclipse and Netbeans after all).

Notepad++

This is the editor that the students use (with CPython) in D500 in the first semester.  As such, it has a significant advantage in that the students are familiar with it.  It has a very traditional open-source look (a command/option for everything, and ease-of-use be damned), and seems like a pretty decent programmer’s text editor.  There’s no IronPython support, but the CPython code highlighting should work sufficiently well, and since it’s just an editor, there isn’t really a need for anything else.  In theory, I should be able to add a “IronPython Shell” (and maybe even “Run in IronPython”) command to the “Run” menu, but I wasn’t able to get that to work.

IronPython Studio

This is a project (not from the IronPython team, or the Visual Studio team) that uses the Visual Studio SDK to build a Visual Studio that does include IronPython support.  In many ways, it’s ideal – it is Visual Studio (not a clone, like SharpDevelop, discussed below), and it includes native support for IronPython.  All the components of Visual Studio (the good editor, the graphical form designer, the debugger) are present, and moving from IronPython Studio to Visual Studio would be fairly seamless. However, the IronPython support is for IronPython 1, and the students really need to be working with IronPython 2.0 or IronPython 2.6.  I believe that the project can be rebuilt to use the newer IronPython versions, but that’s too complex for the students, and too untested to rely on for the semester.

SharpDevelop 3.0

It seems like SharpDevelop is to Visual Studio as OpenOffice is to Microsoft Office, i.e. an open-source project that aims to completely reproduce the commercial product, rather than develop anything interesting of their own.  That does appeal in some ways (since it includes IronPython support, which Visual Studio currently lacks).  However, the 3.0 release doesn’t include a graphical form designer (at least for IronPython), which is the largest benefit (for these students) of Visual Studio (or a clone).  Although I’m a huge fan of open-source development, I’m less of a fan of clones of commercial software, and reluctant to have students get used to the clone, rather than the software that they would actually use in practice.  If the graphical form designer were present, that would probably be enough to overcome that reluctance, but as it is, I would rather have them start with a simpler editor and move to Visual Studio without IronPython support.

SharpDevelop 3.1b1

The 3.1 version of SharpDevelop (currently in beta) does have the graphical form designer for IronPython projects.  However, if I try to do just about anything in the beta version, it crashes.  I expect that this is something specific to my configuration (and would be resolved by the final release), but since the students will have exactly the same VM image, it’ll hit them, too.  So, unfortunately, this can’t really be considered.

Wing IDE 101

Wing IDE is the recommendation of Michael Foord, author of IronPython in Action, which carries a considerable amount of weight.  Although Wing IDE isn’t free, there is a version specifically designed for education (Wing IDE 101).  The biggest drawback is that, although the Python support is excellent, the IDE doesn’t support IronPython.  There are ways to add auto-complete support (which I believe is disabled in the 101 version anyway), but choosing to execute the file with Python will use CPython, and the built-in interactive interpreter is CPython.  I believe having Python support in the IDE but having to switch out to the shell to use IronPython would just confuse the students.  (However, if they used Wing IDE 101 in their first, CPython, course, then I would probably choose to continue with it).

Davy’s IronPython Editor

DIE reminds me a lot of Jen’s File Editor, which is the editor that was used throughout my own undergraduate study (but for C and C++, not Python).  I very much like the simplicity, and I like that it’s easy to use both CPython and IronPython (so the students could compare, and try to make code that was compatible with both variants).  The editor is reasonably young, however, and still fairly rough (e.g. the preferences dialogue requires “y” or “n” strings rather than using checkboxes), and the program exposes log information that a regular user wouldn’t be interested in.  The most annoying weakness for me personally is the lack of auto-indent (since I’m used to that from everywhere else).

Visual Studio under Experimental Hive

The Visual Studio SDK includes a sample project that adds IronPython support to Visual Studio (this is what IronPython Studio, discussed above, is based on).  If the SDK is installed, then it’s pretty simple to build the IronPython project, which leaves the user with a “Visual Studio under Experimental Hive” (this could optionally include other SDK projects) that is the desired Visual Studio with native IronPython support.  The biggest drawback here is that this is experimental, unsupported, code – worse in some respects than using a beta version.  However, I’ve played around with it a reasonable amount, and haven’t had any problems, so perhaps the stability of Visual Studio is enough to overcome the “experimental” aspect.

Komodo Edit

I use Komodo Edit as my primary editor (although on OS X) for actual development work, so it has a significant personal advantage in that respect.  In many ways, it’s similar to the Notepad++ option, in that there isn’t any real IronPython support, but the CPython support is sufficiently good that it would suffice.  However, unlike Notepad++, I was able to easily add a “Run with IronPython” command (as well as “Run with CPython”, “IronPython Shell”, and “CPython Shell”).  Like Wing IDE, it’s possible to add code-intelligence for IronPython.

Conclusion

Unfortunately, there isn’t a clear winner.  My recommendation will be that the students spend the first half of the course using a text editor: if they are comfortable continuing to use Notepad++, then that makes the most sense.  If they are willing to try a new tool, then I would recommend Komodo Edit (or DIE if they want something that just works without having to do any additional configuration).  When the time comes to start learning how to use a graphical form designer, then I would recommend that they install the Visual Studio SDK and add IronPython support under the “Experimental Hive”, although they’ll also learn how to use standard Visual Studio and subclass C#/Visual Basic forms in IronPython.  It seems like they could then continue to use the “Experimental Hive” for the rest of the semester (even for Console projects), although they would know how to fall back to the previous tools if necessary.

Advertisements

9 responses to this post.

  1. Thanks for including DIE in your list and I appreciate the feedback. Hoping to add Autoindent to the next release which is due out in a week or two with a bit of luck!

  2. Good post. 🙂

  3. Posted by Mike Huffman on July 18, 2009 at 5:11 am

    See if this helps setting up Notepad++ to run (Iron)Python:
    Notepad++ as Python IDE

  4. Posted by David Lawler on July 18, 2009 at 11:34 pm

    Hi there,

    If you download a recent ‘daily build’ of Sharpdevelop from http://build.sharpdevelop.net/buildartefacts it DOES include a graphical form editor! AFAIK it is the only ‘product’ out there with this feature! Matt Ward has done great work on this!

    Enjoy,

    David

  5. Hi David,

    I didn’t try a daily build of SharpDevelop – it may well not have the problems that I experience with 3.1b1. However, for my purposes (teaching), I just can’t recommend that first-year students use a daily build as their editor/IDE for the semester.

  6. Hi Mike,

    Thanks for the tip. I’ll pass that along to the students that choose to keep using Notepad++.

  7. Posted by David Lawler on July 20, 2009 at 8:04 am

    I can understand your reservations about using a daily build (though the daily build is a very well behaved MSI install and the code quality seems to be pretty high)! However, SharpDevelop is the only IDE for IronPython that gives you a Form Editor of any kind and the ability to set break points and debug your code! It has been a while since the last release of 3.0 (back in February) so I would be surprised if there is not a new release of 3.1 soon. People who do want to try it should look at the first two links on this page by Matt Ward: http://community.sharpdevelop.net/blogs/
    These talk about how the debugging works and the Form editor. The daily build has a large number of improvements to the form editor. I would encourage you to overcome your ‘clone of Visual Studio’ prejudice because it does have features such as Boo and IronPython support, code conversion to/from various languages, mixed language projects, as well as built in SVN support that goes beyond what Visual Studio does (at least the free Express versions). By the way I have no affiliation with the SharpDevelop people.

    Regards,

    David

  8. Hi David – SharpDevelop isn’t the only IronPython IDE that gives you a form editor – the “Experimental Hive” / SDK version of Visual Studio does as well.

    If this was for my personal development use, then the “clone of Visual Studio” issue wouldn’t be as relevant. However, an important aspect of the course is that the students are prepared for both later courses and real development work. They’re still pretty unlikely to use IronPython professionally, but getting familiar with .NET and Visual Studio is a very useful skill. IMO, getting the students familiar with an IDE that they won’t be using (probably won’t be able to use) professionally is not nearly as valuable as getting familiar with Visual Studio.

    I’d also argue that Visual Studio is (by far) the best IDE available for Windows (assuming it supports the language you want to use). It’s free for the students (part of the deal that Microsoft makes with educational institutions / governments), so it is hard to find something that is a better choice.

    I’m sure that features like Boo support, code conversion, mixed-language projects, and SVN support are relevant for some people. However, none of these are of any use in this course – in fact adding extra features is really a negative, since they just confuse the students. (This is why DIE is such an appealing choice – because of it’s targeted simplicity).

  9. Opps. I missed that the “Experimental Hive” install in the Visual Studio SDK is still IronPython 1.1 (just like IronPython Studio), even in the VS 2008 SDK. This is quite unfortunate, although it still does work, and having it integrated into the Professional version of Visual Studio that the students already have is still a benefit.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: