[[preface]]
[preface]
== Preface

Python is probably one of the few programming languages which is both simple and powerful. This is
good for beginners as well as for experts, and more importantly, is fun to program with. This book
aims to help you learn this wonderful language and show how to get things done quickly and
painlessly - in effect 'The Anti-venom to your programming problems'.

=== Who This Book Is For

This book serves as a guide or tutorial to the Python programming language. It is mainly targeted
at newbies. It is useful for experienced programmers as well.

The aim is that if all you know about computers is how to save text files, then you can learn
Python from this book. If you have previous programming experience, then you can also learn Python
from this book.

If you do have previous programming experience, you will be interested in the differences between
Python and your favorite programming language - I have highlighted many such differences. A little
warning though, Python is soon going to become your favorite programming language!

[[history_lesson]]
=== History Lesson

I first started with Python when I needed to write an installer for software I had written called
'Diamond' so that I could make the installation easy. I had to choose between Python and Perl
bindings for the Qt library. I did some research on the web and I came across
http://www.python.org/about/success/esr/[an article by Eric S. Raymond], a famous and respected
hacker, where he talked about how Python had become his favorite programming language. I also found
out that the PyQt bindings were more mature compared to Perl-Qt. So, I decided that Python was the
language for me.

Then, I started searching for a good book on Python. I couldn't find any!  I did find some O'Reilly
books but they were either too expensive or were more like a reference manual than a guide. So, I
settled for the documentation that came with Python. However, it was too brief and small. It did
give a good idea about Python but was not complete. I managed with it since I had previous
programming experience, but it was unsuitable for newbies.

About six months after my first brush with Python, I installed the (then) latest Red Hat 9.0 Linux
and I was playing around with KWord. I got excited about it and suddenly got the idea of writing
some stuff on Python. I started writing a few pages but it quickly became 30 pages long. Then, I
became serious about making it more useful in a book form. After a _lot_ of rewrites, it has
reached a stage where it has become a useful guide to learning the Python language.  I consider
this book to be my contribution and tribute to the open source community.

This book started out as my personal notes on Python and I still consider it in the same way,
although I've taken a lot of effort to make it more palatable to others :)

In the true spirit of open source, I have received lots of constructive suggestions, criticisms and
<<who_reads_bop,feedback>> from enthusiastic readers which has helped me improve this book a lot.

=== Status Of The Book

- Latest update of this book was in Mar-Apr 2014, converted to
  http://asciidoctor.org/docs/what-is-asciidoc/[Asciidoc] using
  http://swaroopch.com/2013/10/17/emacs-configuration-tutorial/[Emacs 24] and
  https://github.com/sensorflo/adoc-mode/wiki[adoc-mode].
- In Dec 2008, the book was updated for the Python 3.0 release (one of the first books to do
  so). But now, I have converted the book back for Python 2 language because readers would often
  get confused between the default Python 2 installed on their systems vs. Python 3 which they had
  to separately install and all the tooling, esp. editors would assume Python 2 as well. I had a
  hard time justifying why I had to aggravate readers and make them go through all this when the
  fact is that they can learn either one and it would be just as useful. So, Python 2 it is.

The book needs the help of its readers such as yourselves to point out any parts of the book which
are not good, not comprehensible or are simply wrong. Please {contact}[write to the main author] or
the respective <<translations,translators>> with your comments and suggestions.

=== Official Website

The official website of the book is {homepage} where you can read the whole book online, download
the latest versions of the book, {buy}[buy a printed hard copy] and also send me feedback.

=== Something To Think About

[quote,C. A. R. Hoare]
__________________________________________________
There are two ways of constructing a software design: one way is to make it so simple that there
are obviously no deficiencies; the other is to make it so complicated that there are no obvious
deficiencies.
__________________________________________________

[quote,C. W. Wendte]
__________________________________________________
Success in life is a matter not so much of talent and opportunity as of concentration and
perseverance.
__________________________________________________
