Having recently discovered the craze for the Python language, I had the chance to ask some questions to a confirmed Python developer. So here is what Facundo Batista, Senior Software Developer at Canonical, and member of the Python Software Foundation, told me.

Note: If you prefer French to English, you can read the article « Python : ce qu’en pense un développeur de Canonical » based on the original questions and answers translated from English to French.

Adopting Python

1) Python has some dynamic programming languages competitors like Perl, PHP and Ruby. What are the key features that have made you choose Python?

Over Perl: mainly mantainability… Python is not only easy to write, but also very easy to read after you left the code one month alone, and also it’s very straightforward to understand code written by somebody else.

PHP lacks of a lot of features to be considered a serious language for non-web development.

Regarding Ruby… when I started with Python it didn’t exist. I checked it out, but the good stuff in Ruby it’s also in Python, and it has a lot of things I don’t like (for example, that you can do one thing in a zillion different ways, and that is encouraged!).

2) Python has a huge number of specialized libraries. Is that a major asset that could be sufficient to convince a developer to adopt Python?

No, but it’s a very important one,  ;)

3) Python is known for it’s short learning curve. Do you think that this could lead to a situation favoring the use of Python while lowering the grade of programming knowledge required for Python developers?

Yes. A lot of people that is starting to program likes to do it in Python, because it’s easiest to learn.

Of course, you will need time and effort to master Python, and you can not a production system with a thousand clients two days after you started programming, but at least you can have good results doing small stuff without being a wizard.

Coding with Python

4) Python is now your main programming language but you’re not a newbie. What are the programming languages that you stopped using after switching to Python, and those that you still use in parallel?

I do some C, but very very little, more to experiment than anything else. I passed through a lot of programming
languages (Perl, COBOL, Java, C, Clipper, even BASIC!). I only do Python now, the rest is not fun!

5) Python applications are said to be higly maintainable on the long term. Could you confirm this, and illustrate by a real-world convincing scenario?

No, how that can be proved beyond day to day usage?  That assertion is more based on my experience and everybody else’s. Every person that do Python will tell you how much they love it being maintainable.

6) Python source code is not intended to produce binary executable file that can hide implementation details. This is not a concern for open source software, but what about proprietary software development?

All programming languages that provide binaries can be reversed engineered. You should never rely on that the bin is
difficult to transform into source for your commercial strategy, being it open or closed.

7) Python has some syntactic and usage particularities. What software tools could you suggest to Python developers for improving their daily development process?

Use a decent editor (gVim, Emacs, Eclipse, etc), but don’t think you need a full IDE. Maybe a checker like pylint, or pychecker. Nothing else, really.

Side effects of Python

8) Python is a scripting language with lower performances than compiled languages like C or C++. Don’t you think that big applications like Bazaar will suffer from that?

Not in the long term. You can use libraries that are written in C for the speed critical sections of your code, or write yourself the extensions.

Speed should never be a problem in the long term.

The trick is that you can write a complex application now and then profile it. If you’ll start something big and complex in C, the time you need to finish it is longer that writing it in Python and maybe (maybe, as programmers can not predict profiling results) optimizing it later.

9) Python tends to be used more and more for Desktop applications development. What could be the impact on the user experience?
A good desktop application does not depends of the language, you can have good and bad experiences with Python, or C, or Mono, or Java, etc.

The advantage of it being Python, is that is straightforward to see the working code when you have the applications installed, and even change it on the fly, run it again and see your changes work.

Of course, this allows you to fix issues, but also is a very good way for people to *learn* how to program.

The future with Python

10) Python 3.0 will break compatibility in many places. What are your plans to deal with that part of Python evolution?

The same as everybody, wait to migrate until you have the libraries migrated, and you’re ready to make the jump.

This is a classic advice in the Py3k migration path, you surely can find it more detailed out there.