« Concurrent Testing and Patterns for Java | Main | I wanted generic method dispatch, but all I got was this lousy IoC tee-shirt »

Python will assimilate you

[From the wind-up school of technology strategizing]

Is it game over for language choice? Python will now run on:

  • .NET
  • Mono
  • Windows
  • Linux
  • Solaris
  • JVM
  • Apple
  • Symbian (Series 60)
  • EPOC
  • Apache

In other words, not only will Python run on most of the operating systems you might care about, it will also run on most of the managed runtimes you might care about and will do so in a less politically heated manner than other languages (for the runtimes at least). Which raises the bar, both for actually portability and for protecting a software investment for anyone tasked with choosing a middleware container or an operating system in these turbulent times.

Some notable past objections against the language appear to have died away:

  • PythonWhatsThat (1999)
  • JavaJavaJava (2000)
  • DotNetDotNetDotNet (2001)
  • DynamicTypingIsADangerousAndMorallyQuestionableActivity (2002)
  • ItsNotFastEnoughForRealWork (2003)

In 2004, the objections against Python seem to be reduceable to two:

  • MyIDERocksAllPythonIDEsSuck
  • WhoWillMaintainMyPythonLegacy

Now, personally I don't care too much about the first (after all, you only have to wear a O'Reilly tee-shirt to not need an ide), and I can certainly help answer the second question, for Ireland anyway - it has in the region of 20 Python developers, enough surely for any small nation; all told, there may be as many as 200 Pythonistas within the European Union alone (wow!). Nonetheless, these are two reasonable objections, worth addressing.

The solution? Some corporate entity should immediately sponser a port of Emacs to Python along with a cool GUI, as that kills two birds with one stone - shiny IDEs will appeal to developers and the people that hire them, thus creating a meat-market for Python skills. Plus since it's really SonOfEmacs, it'll be downright impossible for the half-dozen or so 'great hackers' on the planet to object.

Please don't take this too seriously ;-)


August 8, 2004 02:08 PM

Comments

Dan Diephouse
(August 8, 2004 04:24 PM #)

Personally, I think the "MyIDERocksAllPythonIDEsSuck" argument is a big one. Granted I know next to nothing about python, so this is your chance to correct me. For java we have class/method refactoring, method extraction, etc. Is there a python equivalent? Is it even possible? I think python has uses, just as long as its not the one tool for everything. The prevalence of it is a big plus though.

Mike Kozlowski
(August 8, 2004 05:04 PM #)

You forget NoMatterHowMuchITryToLikeItTheItJustSeemsUgly. Not exactly a strong technical objection, and certainly a sentiment that has a lot of dissidents, but there you are.

Anothermike
(August 8, 2004 05:40 PM #)

As long as the threading/locking model in Python is what it is with global locks and all, it will not be very useful as a general purpose language.

Bob
(August 8, 2004 05:56 PM #)

Python is just vbscript in a new package

Bill de hra
(August 8, 2004 06:20 PM #)

"Is there a Python equivalent? Is it even possible?"

Dan, I don't think there is. I think it is possible, but the dynamic typing in theory makes the find-all-callers act difficult, which affects a lot of the standard refactorings we get in Java (and eventually C#).

Bill de hra
(August 8, 2004 06:22 PM #)

Mike: "You forget NoMatterHowMuchITryToLikeItTheItJustSeemsUgly."

LOL! How about using that objection in 2005 ;)

Russ
(August 8, 2004 06:34 PM #)

Python also runs on Symbian (Series 60) and could possibly become the default scripting language for smart phones as well.

-Russ

Bill de hra
(August 8, 2004 06:38 PM #)

Russ: "Python also runs on Symbian"

Ooh! Added!

Nathan McFarland
(August 8, 2004 06:44 PM #)

AnyLanguageWhereYouNeedTheRightNumberOfTabsIsTheWrongLanguage.

Bill de hra
(August 8, 2004 06:49 PM #)

Nathan: "AnyLanguageWhereYouNeedTheRightNumberOfTabsIsTheWrongLanguage"

Also slated for 2005 ;)

Nathan McFarland
(August 8, 2004 08:07 PM #)

Well that is fantastic.

I've found python to be very useful, but tab issues have actually caused surprisingly large problems with usage. For the tiny admin. tasks we've use it for, mailing code around is common, and editing it in your mailer inevitably breaks it, mysteriously to less technical people. Tools help, but 10 line scripts don't require tools in perl.

These is the sorta practical things that actually hamper uptake. I'm glad that python comunity is addressing them.

Andy Todd
(August 8, 2004 08:16 PM #)

The tab argument is soooo 1997 people. Anyway, it's spaces not tabs ;-)

http://www.python.org/peps/pep-0008.html

Ian Bicking
(August 8, 2004 08:31 PM #)

Tabs are so 70s. Semantic ASCII is dead. The only good character code under 32 is 10. And the global interpreter lock is only a problem for whiners (http://blog.colorstudy.com/ianb/weblog/2003/10/31.html#P24) -- the GIL is why Python has reliable access to a ton of C libraries, and there's no way I'm giving those up because someone is worried their second CPU won't get enough use.

Though I would add that web programming in Python is a fucking mess.

Yuri Schimke
(August 8, 2004 09:01 PM #)

And you know which is the most important, .Net, because python on .Net becomes a serious choice for companies using C# or VB.Net.

You can reuse existing frameworks, and leverage the python executables later from C#.

anonymous
(August 9, 2004 01:12 AM #)

"""
Is it game over for language choice? Python will now run on:

* .NET
* Mono
* Windows
* Linux
* Solaris
* JVM
* Apple
* Symbian (Series 60)
"""

Add EPOC to that

Robert Sanders
(August 9, 2004 01:41 AM #)

It's great that Python has Jython and IronPython, but how much serious Python code depends on C modules of some kind? And then there's the portability question in the other direction. From IronPython you can use CLR libraries. From Jython you can use Java class libraries. So you may have a portable language, and somewhat portable programmers, but you may not wind up with portable code.

Manuzhai
(August 9, 2004 09:11 AM #)

About the IDE: I've worked with ActiveState Komodo as a Python IDE, and it's quite nice. I've never liked the big MSVS or Eclipse (I considered them somewhat bloated). In fact, a new version just came out, I think I'll try that now.

http://www.activestate.com/Products/Komodo/

Jason Yip
(August 9, 2004 09:22 AM #)

"the dynamic typing in theory makes the find-all-callers act difficult"

The original Refactoring Browser was for SmallTalk so I would imagine that it's not *that* difficult.

Xavier Combelle
(August 9, 2004 09:38 AM #)

"It's great that Python has Jython and IronPython, but how much serious Python code depends on C modules of some kind? And then there's the portability question in the other direction. From IronPython you can use CLR libraries. From Jython you can use Java class libraries. So you may have a portable language, and somewhat portable programmers, but you may not wind up with portable code."
IMHO, it's wrong, at least for Jython. Unless I do a mistake, in Jython, programs wich use only python library are full portable. What you call absence of portability, is an elegant way to access to the platform. I would be quite afraid if my linux would access to the Dom services, and you ?

toto
(August 9, 2004 09:40 AM #)

Python runs everywhere ... sounds familiar to me, another (younger) langage managed to do that before.
Anyway, on the performance side python really sucks, it must be terrible on a mobile phone.

Lawrence Oluyede
(August 9, 2004 10:00 AM #)

Take a look at WingIDE:
http://wingware.com/wingide/beta

Jim Hughes
(August 9, 2004 10:11 AM #)

Add in the UIQ flavour of Symbian OS - http://www.monkeyhouse.eclipse.co.uk/mobile/python.htm
and the venerable Amiga - http://www.monkeyhouse.eclipse.co.uk/amiga/python/

And performance on a mobile phone is actually very good (I'm running the Nokia Series 60 Python), remember that these phones are around Pentium 133 level in performance, and that's meaty enough to run Python swiftly.

fonz
(August 9, 2004 10:38 AM #)

add OS/2 (Ecomstation) to the list

Sean O'Donnell
(August 9, 2004 12:01 PM #)

MyIDERocksAllPythonIDEsSuck is a valid one, I use python a lot, but i regularly find myself wishing for a refactoring browser the larger my code gets, and bicyclerepairman is not there yet.

Bill Seitz
(August 9, 2004 04:02 PM #)

I have found the supply of Python programmers to be an issue (in NYC). If you're a smallco and not doing something really clearly exciting to outsiders, then developers are concerned about not being buzzword-compliant (which still means JavaJavaJava, sadly).

wni
(August 9, 2004 10:03 PM #)

First of all, last time a language called Java trying to Borg the world got a really bad taste in everybody's mouth.

I am a Scheme/Lisp person. I am now forced to re-live the Java nightmare in Python because it is more "acceptable" to my colleagues. I still hate the nonsense of indentation and greatly underpowered lambda (and the lack of macro but let's not push it).

As for performance, I am optimistic because I have seen the miracle of
http://psyco.sourceforge.net
which is one fine example of the theoretic triumph (partial evaluation). It's really >>>fast>>>>.

Randy Charles Morin
(August 10, 2004 01:09 AM #)

This seems very similar to the arguments why Perl and PHP will take over the world. Another argument, but Java, Delphi and VB were going to take over the world too. How many worlds are there?

Bill de hra
(August 10, 2004 01:13 AM #)

Randy, PHP, Perl and VB seem to have taken over large parts of the world already. How small does the world have to be before anyone notices?

towi
(August 11, 2004 10:20 AM #)

Python 1.5 runs on PalmOS (Pippy)

Johannes Gijsbers
(August 11, 2004 11:28 AM #)

"Is there a python equivalent?"

Bicycle Repair Man!

It's a refactoring browser for Python: it integrates with emacs, vim and idle. It has renaming, undo, find references, find definition, extract method, inline local variable, extract local variable and move class.

http://bicyclerepair.sourceforge.net

sebsauvage
(August 11, 2004 01:58 PM #)

"Python is just vbscript in a new package"

Er ?

Are you serious or YAT (Yet Another Troll) ?

You're misleading an opensource dynamic strongly-typed language (Python) with a proprietary weakly-typed language (VBScript).

I'm not even talking about libraries and portability...


Whatever.

sebsauvage
(August 11, 2004 02:15 PM #)

To add my opinion:

No, Python will not rule the world.
It's not a solution to *all* problems.
(You know, that "right tool for the right job" thing ?)

Despite the fact Python is not good at _everything_, it's good at a _lot_ of things.
That's why it's a good competitor.

And it will not rule the world because there are no marketting mercenaries to fight for it (look at C#, Java, Mozilla).


About identation: It's a Good Thing.
It reduces the number of different coding styles to an acceptable level.
And it's not line noise like perl, C# or Java.
Readability counts.
It "fits your brain" (as one author said).


BTW, RAD for Python DO exist, such as Boa Constructor: http://boa-constructor.sourceforge.net/


And finally:
import this

:-)

Steve Ferg
(August 11, 2004 07:11 PM #)

"We already have a huge body of legacy Perl code that everybody is afraid to touch, and we're so busy worrying about how to maintain it that we can't even begin to consider adding another language to our toolkit."

... or IveFallenAndICantGetUp

Seriously -- Being the first kid on the block with a shiny new dynamic language is easy. Being the second kid is a much tougher row to hoe.

thither
(August 11, 2004 08:22 PM #)

You can add to this list arm-linux: http://www.vanille.de/projects/python.spy and Palm OS: http://pippy.sourceforge.net/ - although that last one seems to be abandonware, sadly.

Mark Eichin
(August 12, 2004 05:31 AM #)

Yeah, I wouldn't count pippy - it was only ever "python-in-a-notepad', not useful for actual applications. (Lack of a viable python is one of the big reasons my next PDA *won't* be a Palm...)

As for the legacy perl code issue - once my coworkers saw how readable some *real* python code (snuck in via QMTest), they got very happy about replacing the perl code - gradually, but it's just about all gone, and it's been almost a year since the last new bit of perl was written (and I came in as a perl guru!)

Larry Bugbee
(August 12, 2004 05:41 AM #)

...and I've used Python on S/390, albeit SuSE.

James
(August 12, 2004 12:29 PM #)

It also runs on Parrot (well, almost) http://www.sidhe.org/~dan/blog/archives/000372.html

jorjun
(August 12, 2004 02:36 PM #)

Python is the first non OGO (Organ Grinding Oriented) programming language.


>Your employer needs you<

So Keep Grinding ;)

--

A l t e r n a t i v e l y

--

Find a Better Assignment.

--

Is it up to you?

--

Sylvain Hellegouarch
(August 30, 2005 09:07 AM #)

"""No, Python will not rule the world.
It's not a solution to *all* problems.
(You know, that "right tool for the right job" thing ?)"""

Right on the spot!

Anyway, this kind of thread always leads to troll and false truth.

I do code in both C# and Python, and Iwon't compare them per se because you don't code the same way with both, but you can be productive with both. Period.

Just to add my bit about IDEs:

http://www.die-offenbachs.de/detlev/eric3.html

It has everything you need...

gnuLNX
(February 12, 2006 11:32 PM #)

what is all this about an IDE? Haven't you people ever use vi? try gvim on windows...sheesh.

Michael
(March 20, 2006 02:47 AM #)

Check out zope and plone (.org) for a demonstration of Python @ its best. After you install a full blown CMF with built in DB and web server which r stable, easy 2 use, perform well and have a small foot-print, well, what more proof do u need that Python is well suited for real world tasks?!

May d 4s b wiz u!