We talked to Python practitioners for their advice to developers considering Python. Languages that do not have a formal corporate backing depend more on the user/developer community to become and stay popular and Python has its share of dedicated & devoted users.
Let me introduce the Python expert panel...
Tennessee Leeuwenburg: Editor-In-Chief of "The Python Papers". The Python Papers covers Python topics in industry, academia and the community.
Mark Mruss: Author of Learning Python.
Baiju M : a Python Programmer and developer of Zope 3. His ZWiki page http://kpug.zwiki.org/BaijuMuthukadan
Ben Last: An entrepreneurial engineer who understands technology from a business point of view. He, in his own words - "I'm the geek who can speak". His Live Journal.
Jim Hughes: A senior developer for an independent software vendor in the City of London. The Delicious Tinkering project covers his adventures in using del.icio.us for link blogging with Python. His blog
Alessandro Iob: Developed several complex software systems: Devil Framework, is representative of his knowledge and expertise (Python, distributed programming, dynamic systems, interface to external software/hardware, multi-platform (Unix, Windows, Mac OS X) development, GUI design).
Carlos de la Guardia: Author of "I Blog Therefore I am", covering ideas, experiences and opinions about web development with Plone and Zope, related web technologies and life in general
Jkx : Maintains pythonfr.org, writes extensively on Python and Zope. His blog
Matthew Wilson: Author of T+1, check out his Python section
Tim Parkin: He and his company Pollenation Internet uses Python for rapid development of a high-traffic website for Super League, the premier rugby league in the UK. His Journal
Corey Goldberg: Maintains Pylot, Python based open source web performance tool. His blog
Q: If you were to start afresh, would you learn Python again?
Tennessee: Absolutely. Python has given me a career, for one thing. I also find it to be a very satisfying language to use, allowing me to express logic elegantly and clearly. I think that a lot of people who love programming will also love Python. I believe that most developers eventually find a 'fit' with a particular language which matches their personality. Python has a unique personality which suits a great many people. It also has a fantastic community which means that developers always have somewhere to turn for support, advice and interaction with their peers.
If I were to consider the languages which have been most influential, I would list Python, Prolog, Java and C. While each has something unique about its development paradigm, Python for me represents the best balance of elegance and application.
Mark: Yes, I learnt Python for fun and to keep my programming skills sharp, but I don't use it in my current job. That being said learning a language like Python has taught me new programming skills that I have been able to transfer to my job.
Baiju: Sure. In fact, I started with FORTRAN then C and C++, but now I believe Python should be the first language to start learning programming.
Ben: Yes, though it wouldn't be the only language, of course. I think it's an excellent language for newcomers to programming: a great way to learn good habits before getting to grips with other languages that are less strict.
Jim: Yes.
Alessandro: Yes
Carlos: Definitely. It's a competitive advantage.
Jkx: Yes of course. Python has several power. First it's a full-featured programming language. You can build any kind of serious application with it. On the other side, it's for me the best sys-admin weapon. I man weapon, not knife ;) because you can do every days-to-days job with it, from DNS advanced test to spam filtering, for web testing.
Matthew: Absolutely.
Tim: Definitely! The language has helped my programming immensely and has done so without having to immediately change my whole way of thinking (although I have done over time)
Corey: Absolutely yes. I think it is a fantastic programming language with a great standard library.
Q:What do you think is the most important feature of the Python language?
Tennessee: At a high level, the most important feature of the language is its expressivity. There are really three things in the language which contribute to this -- Python's list manipulation syntax, its dictionary type and its use of whitespace. These might not seem like obvious strengths, but together they allow for very clear programming. This short (naive) quicksort algorithm shows how Python can be used to express the divide-and-conquer approach easily:
def qsort1(list):
if list == []: return list
pivot = list[0]
lesser = qsort1([x for x in list[1:] if x < pivot])
greater = qsort1([x for x in list[1:] if x > pivot])
return lesser + [pivot] + greater
Mark: That's a tough question, I'd have to say iterators and iterables. It takes something that is often a pain in other languages and makes it a breeze.
Baiju: Well, there are many features I like in Python. But when you asked the "most important feature", Python intrepreter is coming to my mind.
Ben: I'm not sure it's possible to choose one: it depends on your point of view and what you're using it for. The interpretive environment, where you can play with modules and code and check your understanding of how things work. The fact that every module can contain its own test harness (very good for Agile aficionados). The way that object orientation runs through the whole runtime environment.
Jim: One word, elegance
Alessandro: Only one clear way to do things.
Carlos: Simple but powerful syntax and included standard library.
Jkx: Hum, hard to say. The key for me is its simplicity through the use of externals modules, and dynamic typing.
Matthew: Python syntax encourages programmers to write easy-to-read programs . There are way fancier features in the language, like all the introspection, runtime evaluation, and dynamic typing, but I keep coming back to python because it is just so easy on the eyes. A well-written python program reads like a book.
Tim: It's pragmatic nature.. It doesn't try to be the coolest or most flexible or most 'enterprisey'. It gives the programmer a very predictable framework in which to ply their skills. In short it doesn't dictate or get in the way but does gently suggest that you could do better...
Corey : Two things. One is readability. The whitespace as part of the syntax tends to freak out people at first, but it makes reading code really easy. Python code is intuitive to read and understand compared to many other languages.
The other is the the Python philosophy of "There should be one, and preferably only one, obvious way to do it". Some languages give you a ton of different ways to achieve the same goal. In Python, this is not viewed as a positive thing. There should generally be one idiomatic way to achieve something.
Q: What Python forums would you recommend?
Tennessee: There are a few major places where people can interact with the Python community. One is "The Python Papers", the free journal which I edit. The news website planet.python.orgc ollects blog posts from the most active Python community members and is a fantastic source of current information about the language, projects and events. The Usenet newsgroup comp.lang.python is quite high-volume and very appropriate for newcomers. There is also new Python magazine available (on a commercial basis) called Python Magazine.
Mark: At this point in time I don't really visit any Python forums specifically. Usually I visit the forums of whatever toolkit or API I'm using in Python, but that's only when I encounter a problem.
Baiju: For newbies I would recommend Python tutor list.
Ben: I don't tend to use any, so I can't comment.
Jim: Not so much forums, but resources. Python.org for the docs, cheese shop, and more, plus the Python Grimoire and Python Cookbook for many hints and examples on how to do things in a Pythonic manner.
Alessandro: Sorry, but as I don't use any forum I can't recommend any.
Carlos: The comp.lang.python mailing list and the web forums at http://python-forum.org/py/index.php. Also, many interesting blogs can be found at http://planet.python.org and http://www.planetpython.org/.
Jkx: ASPN Cookbook is really kool, but not a true forum:
Matthew : The newsgroup comp.lang.python is excellent. The blogs at http://planet.python.org and http://planetpython.org are a great place to stay in touch with what people are doing with python.
Tim: The python.org forums are a good place but very 'noisy'. The IRC channel is great if you get stuck. Planet Python is a really good place to hear what people are currently writing about.
Corey : Not sure about Forums, but I stay up to date by suscribing to Planet Python. It is an aggregated feed of many different Python themed blogs.
Q: What book would you recommend to a newbie?
Tennessee : There is an online book called "Dive Into Python" which takes the reader on a practical crash-course in Python. It demonstrates the use of Python's unique syntax and its basic libraries through a large number of examples. I got started by working through this resource. It is available from http://www.diveintopython.org/, where an online version may be downloaded free-of-charge. A print version is also available for purchase to readers who prefer a physical copy.
I would also recommend "Python Cookbook" by O'Reilly publishers as another practical resource. First-time programmers might do better with "Python: How to Program" by Marvey M. Deitel. This book includes basic programming theory using Python.
Mark: There are lots of great books out there, but I'm not sure which one I would recommend. In fact I'm not sure that I would recommend a book to a newbie. I'd probably just point them to Guido's tutorial (http://docs.python.org/tut/) and tell them to start with that, it's good and free.
Baiju: Python official tutorial and then "Python in a Nutshell" by Alex Matelli
Ben: The O'Reilly books by Lutz & Ascher - Learning Python and Programming Python.
Jim: Dive Into Python and Learning Python
Alessandro: Learning Python (O'Reilly)
Carlos: Dive into Python, free at http://diveintopython.org/.
Jkx: "Introducing Python" from O'reilly, translated to "Introduction à Python" in French :)
Matthew : Fortunately, python comes with excellent documentation. The python tutorial on the python website is the first thing I recommend any newbie reads.
After that, the O'Reilly Python Cookbook is a great read because it walks through solution to many different programs.I really liked Magnus Hetland's first book, Practical Python, because he builds real applications and discusses why he makes certain design choices. I haven't read his more recent book. I find it ironic that there are a lot of great python bloggers, but I don't know about a lot of great python books.
Tim: How to think like a computer scientist and dive into python. These are both websites ( I think dive into python is now a book). A really good book to follow up would be the python cookbook.. However, use the first websites and download IPython (an enhanced python command line with lots of help) and just start programming.
Corey : Learning Python, by Mark Lutz and David Ascher (O'Reilly)
Q: Name a programming language that you would like to learn? (if you had the time & resources, of course)
Tennessee : Definitely Javascript. Most computing professionals will be familiar with Javascript and for those who work with the web it will be a bread-and-butter language. While I have a familiarity with the basics of Javascript, a strong familiarity with some of the more advanced toolkits and programming paradigms would be of huge advantage in today's market.
Mark: I wouldn't mind learning Java again, I dabbled in it a bit a University but have not had a chance to get back to it since. I also wouldn't mind seeing what Ruby is all about. C# seems to be in a lot of job postings as well these days, so it would have to be somewhere on my list.
Baiju: C#
Ben: I'm way too busy to learn languages for fun, more's the pity. I guess I find C# interesting, and I'd like the time to spend more time learning the runtime libraries (the language itself is simple enough).
Jim: Python :-) I still consider myself inexperienced in Python, and given time/resources I'd like to be able to write more idiomatic Python.
Alessandro: Lisp
Carlos: Smalltalk.
Jkx: OCaml but more the fun, than the profit of course.
Matthew: I study common lisp, prolog, erlang, and haskell when time permits. Studying common lisp in particular makes me a much better python programmer. I also try to keep up with events in the perl and ruby community, because those languages share a common heritage with Python and a clever hack in perl or ruby can usually be translated to python easily.
This is part of the "What Makes a Programming Language Popular" series where we compare Perl, PHP, Python and Ruby. See
This is really a great post! A helpful post for python beginner like me. Very inspiring and resourceful.
A number of this great python user are looking for c#. Do you consider c# also ? :)
Posted by james on December 17, 2007 at 07:12 PM CST #
"Dive into Python" is excellent book for programmers to learn Python (as second language), but not for total beginners.
Shameless self-promotion: I maintain a wiki LearnPython.pbwiki.com with links to info suited for beginners, including training tasks.
Posted by pmasiar on December 18, 2007 at 11:54 AM CST #