Python, the popular dynamic language, offers conciseness and a strong community. But it is dogged by the transition from the 2.x family to the 3.x line.
Developers using the language cite benefits in ramp-up time and library support. "Python's just a clear, concise, and productive language. That's it, really," says Jeff Zellner, a developer at Olark, which offers a chat service that uses Python. The language, he says, "just rocks" at simplicity. Python also offers a lot of open source libraries, notes Noah Seger, a developer at the Texas Tribune news organisation.
Mobile applications also present a new opportunity for Python developers, who are increasingly turning to Web development -- Python's forte -- for mobile apps. "More and more, people are starting to realise there's not as much sense in building native apps as we once thought," because devices are getting faster, says Allan Hart, an application developer at commercial real estate firm Bently Holdings who comes from an Apple iOS and Objective-C background. "Using Python to write the back end for our client apps has been a pleasure."
Everyone agrees: Python is easy to use"Python's a lot easier to use and you can focus more on actually writing programs" than on worrying about syntax, says Rachel Hathaway, a developer at the Barkley advertising firm. She writes mostly in PHP these days but nonetheless remains a Python fan. Bently Holdings' Hart is new to Python but loves its simplicity: "I've been picking it up quickly, and that's what I like a lot about Python."
"I like interpreted languages better than compiled languages because I can mess with it in the console," Hathaway adds. "I don't have to run the program every time and watch for errors in that way. It's a lot easier to debug." Another programmer, who lists Python as probably the eighth or ninth language he has used, also cites ease-of-use. "Syntactically, I like it. It's much easier to work with," said Jeff Triplett, a developer at software development and IT services firm Revolution Systems.
"Python has an ethos, starting with the Zen of Python [which features guidelines for Python's design] that is all focused on code [being] read more than it is written," said Erik LaBianca, CTO at health care decision support company Wiser Together and a self-described "Perl refugee."
Although Python sometimes has faced criticism about its performance, Darrell Bishop, founder of software-defined storage company SwiftStack, is satisfied: "I wouldn't say if you need to do something that needs to be terribly high-performance, Python's your first choice," but the language is fast when it comes to writing code, compared to C and C++.
The tough transition from Python 2.x to 3.xThe 3.x variant of Python introduced in December 2008 offers significant improvements in areas such as Unicode. But the switch from Python 2.x to 3.x is difficult, so many developers have put off the effort. The two versions are "significantly different," Bishop notes -- so much so that Python 2.x code is incompatible with Python 3.x. Plus, Python 2.x has more library support, says Texas Tribune's Seger. However, the current version 2.7 is the end of the Python 2.x line, with no capabilities to be added and no 2.8 version coming, says Python inventer Guido van Rossum -- so developers will need to shift to 3.x at some point.
"The thing that's killing me right now is the adoption of version 3," says Bently Holdings' Hart. His company still bases its software on Python 2.7. "It's such a boatload of work to move up to [version] 3 that I don't know if we ever will." Moving to the latest Python line is hard to justify from a business stance, he says.
Both versions of Python can present problems when doing functional programming and developing live functions, says Wiser Together's LaBianca. And there's not a strong selection of Python runtimes, he says. The only real Python implementation now is CPython, which has limitations such as not running on the Java Virtual Machine, he notes.
Now read sister title InfoWorld's interview with Python founder Guido van Rossum.