Oct 11 2008

Dynamic Languages for Desktop Apps

Published by at 5:05 am under Programming,Python

I posted this on Ted Leung’s blog today as my comment on the discussion on his ‘Dynamic Languages for Desktop Apps’ article. For those who don’t want to read the entire story, Ted is basically calling for more desktop applications that should be written (almost entirely) in dynamic languages like Python. He says that dynamic languages have been embedded as scripting languages into desktop apps for years, but since the performance of dynamic language runtimes has significantly increased over the years, “it should be possible to write really good desktop applications using them”.

His article can be found here:

http://www.sauria.com/blog/2008/10/10/retry-dynamic-languages-for-desktop-apps

One other commenter mentioned Basic and compared it to scripting languages, but I think he was rather mistaken there.

Here’s my post:

Well, Basic is neither a dynamic nor a typical scripting language. Rather the opposite: All modern Basic dialects are compiled, and when you look at Basic-compilers like BlitzMax or PowerBasic, those use strongly typed and static languages that produce compiled code which is at least as fast as the one emitted by any available C compiler. So, no, Basic is not a valid comparison here, not even if it’s VB.NET.

Civilization IV uses Python for its game logic, but I’m still waiting for a success story for PyGame – even that project’s homepage does not name a ‘real’ product that uses it, where ‘real’ stands for a game that has sold at least a couple of hundreds of thousands of copies. The pyglet project also seems to be under more development recently than PyGame, and it looks quite promising – although there are also no high profile/high visibility apps yet being made with it, as it seems.

Unfortunately the same has to be said for wxPython – there are no visible successful applications with large customer bases written in wxPython. At least I haven’t heard of one except for maybe Boa Constructor, which is rather complicated to get running on my platform, OS X, and an IDE is not necessarily a mass market application anyway. I would be very happy to hear of a very successful commercial wxPython application.

In direct comparison and outside of large corporate environments (where plenty of Java desktop apps exist), Java has at least Tribal Trouble (a very nice commercial and successful 3D real time strategy game), CyberDuck (one of the best FTP clients for OS X), Limewire, Netbeans and Eclipse, which both are not only IDEs, but rich client platforms on which several large desktop applications can be and actually already are built (BlueMarie, e.g.).

Deployment issues could be one of the things that is holding Python back on the desktop. Not everybody feels good about distributing source code or easy-to-reverse-engineer-byte code in an application bundle (OS X) or encapsulated in an .exe file. But maybe that’s more of a psychological problem than a technological one.

The reputation of being slow – whether or not this is justified does not even matter – is another issue. This one is still holding Java desktop apps back, although there are success stories like Eclipse out there.

Other problems that I see could be the fact that Python does not necessarily come with a modern GUI framework out of the box, and it does not come with pyglet or Pygame either in the standard distribution.

Then, as a Mac user in the year 2008, you don’t want to be caught writing Carbon-based applications anymore – but that’s all that wxPython will give you. And if you begin using the pyobjc-bridge: Why would you want to do that in the first place? When you’re giving up multi-platform capabilities, you could as well go with the native Objective-C language which has higher performance to offer than Python but at the same time is still dynamic and even garbage collected.

On Windows, you’d face a similar situation with C# and the .NET framework, and you’d have to ask yourself the same question whether it makes any actual sense to use Python instead of the platform’s native language.

Linux might be a different story, but Linux is far from becoming a widely accepted desktop platform in terms of user base and market share. It’s a huge server platform, but still basically irrelevant on the desktop.

No responses yet

Comments RSS

Leave a Reply

You must be logged in to post a comment.