Tuesday 15 July 2008

Review of "IronPython in Action"

The three most well-known implementations of Python are the original C implementation (CPython), one in Java (Jython), and one in .NET (IronPython). Jython makes it easy to write Python programs that use Java classes and to test a Java library at an interactive prompt. Similarly, IronPython allows Python programs to be written that use the .NET libraries (these are the same libraries used by C# and Visual Basic).

IronPython (sometimes abbreviated as FePy) is relatively new and had its first release in 2006. It is Open Source and developed by Microsoft (by the same developer who started Jython). Although .NET is strictly for Windows, IronPython can also run on top of Mono, the open source implementation of .NET which is available cross-platform.

As a cheminformatician should you be interested in IronPython or .NET? Well, Dimitris Agrafiotis thinks so. And Eli Lilly recently open sourced a life science platform implemented in .NET (here's the SF website, but where's the mailing list?). I'm not yet convinced, but I'm keeping an open mind. I'm helping Matt Sprague to prepare C# bindings for OpenBabel. I think this will make OpenBabel the first cheminformatics library accessible from C# (although probably someone will contradict me below).

At this point, if you're still interested, you should check out the first chapter of "IronPython in Action", which you can read on the web. This explains in more detail the background to IronPython and why you might want to use it. IronPython in Action will be published later this year by Manning Press, and is written by Michael Foord and Christian Muirhead. Foord (aka Fuzzyman) is a very active blogger on Python and FePy in particular, and works at a company whose main product is implemented in FePy.

Just to make it clear, this is not a book for someone who wants to pick up programming from scratch. There's little hand holding here. The obligatory introduction to Python is quickly and efficiently dealt with before moving on to the main subject - accessing .NET classes and creating a GUI application. For those coming from C# to IronPython, there is a whole chapter on unit testing with Python, as well as another that covers everything from Python magic methods to metaprogramming. A particularly nice feature of the authors' style is to logically link each section to the following, so that you always understand the point of what you've just read and where it fits into the bigger picture.

From my point of view, it's nice to see that explanations are provided for those using the free version of Visual Studio, Visual Studio Express, as this means that I can test out all of the examples myself. Other chapters yet to be finalised cover using IronPython in a webbrowser (apparently IronPython can run in Silverlight, the new browser plugin from Microsoft), and extending IronPython with C# or VisualBasic.

In short, for any serious users of IronPython, this book is a must have. It may also convince those using C# to make the switch to a better and more productive life with Python...

4 comments:

mesprague said...

Correction, the initial draft of ChemSharp predates OBDotNet.

-Matt Sprague

Michael Foord said...

Thank you for the review, I'm glad you're enjoying the book!

I'm just finishing chapter 15, so there is more to come soon (I assume you are reading the book through the early access preview).

One minor correction. FePy is actually the name for the "IronPython Community Edition", an alternative distribution of IronPython maintained by Seo Sanghyeon.

http://fepy.sourceforge.net/

The reason for the alternative distribution is to provide patches (where necessary) to allow IronPython to run on Mono, bugfixes, and patches to the Python standard library to work with IronPython.

Noel O'Boyle said...

@matt: I'm thinking here of released code, but for sure, what you say is right. In fact, without ChemSharp, there wouldn't any OBDotNet.

@fuzzyman: Thanks for the correction. I guess as a chemist I wanted FePy to be the abbreviation. :-) I look forward to the remaining chapters.

Michael Foord said...

Your review is quoted on the IronPython in Action home page: http://www.manning.com/foord/

:-)