Python(ID:1658/pyt001)

String based scripting language 


OOL developed by Guido van Rossum CWI 1991.

Combines ideas from ABC, C, Modula-3, and ICON. It bridges the gap between C and shell programming, making it suitable for rapid prototyping or as an extension of C. Rossum wanted to correct some of the ABC problems and keep the best features.

At the time, he was working on the AMOEBA distributed OS group, and was looking for a scripting language with a syntax like ABC but with the access to the AMOEBA system calls, so he decided to create a language that was extensible; it is OO and supports packages, modules, classes, user-defined exceptions, a good C interface, dynamic loading of C modules and has no arbritrary restrictions.


Places
People:
Structures:
Related languages
ABC => Python   Evolution of
C => Python   Influence
Icon => Python   Influence
Modula-3 => Python   Influence

References:
  • van Rossum, Guido et al, "Linking a Stub Generator (AIL) to a Prototyping Language (Python)", Proc 1991 EurOpen Spring Conf. view details
  • Van Rossum, Guido Python Tutorial. Dept. CST, CWI Kruislaan 413, 1098 SJ Amsterdam, The Netherlands, July 1993. view details
  • Alex Nicolaou "A survey of distributed languages" term paper at Waterloo view details External link: Online copy
  • Andrew Kuchling "LJ Interviews Guido van Rossum" Linux Journal November 1998 view details Abstract: Mr. Kuchling talks to the creator of Python to find out about the past, present and future of this versatile programming language Extract: Anecdote
    Andrew: What inspired you to write the Python interpreter?

    Guido: One, I was working at Centrum voor Wiskunde en Informatica (CWI) as a programmer on the Amoeba distributed operating system, and I was thinking that an interpreted language would be useful for writing and testing administration scripts. Second, I had previously worked on the ABC project, which had developed a programming language intended for non-technical users. I still had some interesting ideas left over from ABC and wanted to use them.

    I had a two-week Christmas holiday with nothing to do. So, I wrote the first bits of the Python interpreter on my Mac so that I didn't have to log into CWI's computers.

    Andrew: What other languages or systems have influenced Python's design?

    Guido: There have been many. ABC was a major influence, of course, since I had been working on it at CWI. It inspired the use of indentation to delimit blocks, which are the high-level types and parts of object implementation. I'd spent a summer at DEC's Systems Research Center, where I was introduced to Modula-2+; the Modula-3 final report was being written there at about the same time. What I learned there showed up in Python's exception handling, modules, and the fact that methods explicitly contain "self'' in their parameter list. String slicing came from Algol-68 and Icon.

    C is a second influence, second only to ABC in importance. Most of Python's keywords, such as break, continue and others, are identical to C's, as are operator priorities. C also affected early extension modules; many of them, such as the socket and POSIX modules, are simply the corresponding UNIX C functions translated into Python, with some modifications to make programming more comfortable. For example, errors raise exceptions rather than return a negative value, and sockets are objects.

    The Bourne shell was also a model for Python's behaviour. Like the shell, Python can execute scripts by specifying their file name, but when run without arguments, it presents you with an interactive prompt. This is well suited for experimenting with the language or with a new module you're trying to learn.
  • Phil Hughes "Guido van Rossum" Linux Journal Volume , Issue 68es (December 1999) view details Extract: Anecdote
    Phil: It seems like Python is starting to be taken really seriously in web development and so on. Is Python being taken seriously in academia? I guess I mean relative to Perl, because Perl isn't, as far as I can see.

    Guido: I would say Python is being taken a lot more seriously. There are language designers who don't approve of certain short cuts, or the fact that Python doesn't have static typing, or the fact that there are other languages out there that are as good as Python is, and again borrow all the good features from those languages.

    Phil: What languages?

    Guido: Some people think, for instance, that Dylan--which I think has a very academic flavor--is everything Python is plus so much more.

    Phil: Dylan? I've never heard of it.

    Guido: Well, that's exactly Dylan's problem. I don't know, but I think it started out as a LISP variant, with sort of an alternative syntax. The syntax was deliberately unLISPish in order not to scare off everyone who is not already brainwashed with LISP, because LISP has one of the biggest image problems of any programming language in the world.

    Phil: I had to learn LISP in college, and I can appreciate that! Keypunching parentheses is not my favorite thing.

    Guido: I like a lot of the concepts of LISP, but I strongly disagree with their approach to syntax, which happens to be the same approach Tcl has, more or less. Which is, there is no syntax, or it's so simple you have to do everything else outside the syntax.

    Phil: Is Tcl making it at all in academia?

    Guido: I am sort of removed from academia, so I don't quite know. I don't think so. I mean, one or two people I spoke to recently from academia had a very strong opinion that Python was a decent language and Perl and Tcl were not.

  • Philippsen, Michael "A survey of concurrent object-oriented languages" pp917-980 view details
          in Concurrency: Practice and Experience 2000 v12 view details
  • Wesley J. Chun "Keeping up with Python: the 2.2 release" Linux Journal Issue 99 (July 2002) view details Abstract: Unification, iterators and more--the improvements to the Python 2.2 release series.
          in Concurrency: Practice and Experience 2000 v12 view details
    Resources