Martin Aspeli published an article in CIO magazine titled, “You Used Python to Write WHAT?”
It’s a good introduction for the non-technical manager to Python in the enterprise. And the article’s comments (so far) are good reading, too. If you’re looking to gently introduce the notion of Python or Django to a manager, you could do a lot worse than start here.
I often find the “cons” of a pro/con list piled on a little too thick and high in a technical-introduction-for-the-nontechnical article. Many authors feel safer criticizing a new alternative, perhaps because the status quo is their safe harbor. But I think Martin paints a fair picture. The major cons he notes are:
The main disadvantage of using Python in an enterprise setting is that Python programmers can be harder to find than, say, Java developers. Python is easy to pick up for an experienced programmer, but the plethora of books, training courses and certifications in the Java world cannot be matched by Python.
Furthermore, the power and expressivity that Python offers means that it may require more skilled developers. Java or C# are more restrictive by design, forcing programmers to adhere to stricter rules around type safety and interface compliance. For some, that hinders productivity. For others, it reduces mistakes or accidents of design.
…
Python may not be an appropriate choice if you:
- Are building embedded or massively parallel systems for which a scripting language would be an inappropriate choice (due to concerns about execution speed)
- Build primarily desktop applications, especially for Windows. Platforms like .Net usually offer more sophisticated tools and easier distribution of the final software.
- Rely on teams of less-experienced programmers. These developers may benefit from the wider availability of training for languages like Java and are less likely to make mistakes with a compile-time, type-checked language.
- Have specialized needs better served by other languages that you already know. For example, if you want to do a lot of text processing and you have a basement full of Perl programmers, there’s no compelling reason to switch.
It’s worth mentioning that Python is a first-class language for developing applications for a Mac desktop. There is excellent integration into the common widgets and systems – it’s called PyObjC.
IronPython (a CLR based Python on Windows) is not terribly lagging, although Microsoft hasn’t gone out of it’s way to make reasonable support for it. You can still do a tremendous amount in either, although in the Win32 world, you may well be better off doing the VBScript/C#/C++ thing.
Additionally, python is excellent for massively parallel systems. The additional component that you need is someone familiar with writing C extensions to interface to Python to provide the speed boosts where it’s critically nessecary. For many applications in the “massively parallel” space, the ease of writing the code far outweighs the execution time component, and there are a number of heavy-lifting C-based python libraries already available for a lot of duties.
The embedded space is harder – as most embedded devices lack enough additional compute resource to easily support a Python runtime. I have seen it used quite successfully as an application on a linux handheld device for doing VOIP applications – very performance sensitive.
Microsoft not going out of its way to help an open-source lanauage? Joe, that’s crazy talk! 🙂
Thanks for the great comments. You got me thinking more about massively parallel systems; I think I agree with you, and would now say that Aspeli overstated Python’s weakness there. Personally, I would enjoy doing some Python work in a massively parallel system.
You said:
>>I often find the “cons” of a pro/con list piled on a little too thick and high in a technical-introduction-for-the-nontechnical article. Many authors feel safer criticizing a new alternative, perhaps because the status quo is their safe harbor.<<
Actually, it’s quite the opposite. The authors in this series — all experts in their languages (we have similar articles about PHP, Perl and JavaScript, and Ruby coming pretty soon) — tended to write at length about what was great about the language. They had a hard time coming up with the weaknesses… which was necessary since (as their editor) I was paying them for both the pros and cons.
Thanks for the inside scoop, Esther. And thank you for doing a great job as editor. Maybe I just usually read magazines that are more negative than CIO…
Very informative article – thank you for taking the time to share it ^^ If you’re willing to share, what is the theme have you got here? I want to know where I can get a copy.
I like this theme quite a bit. It’s “Cutline,” by Chris Pearson. It’s in WordPress.com’s theme library, and is free to any blog hosted there.
If your blog’s not hosted at WordPress.com, you can download the theme from Pearson’s theme page.
FYI, if you use header levels past <h3>, they’ll need custom styling.