Python is a programming language initially created by Guido van Rossum, who is sometimes referred to in the python community as pythons "benevolent dictator for life", or BDFL. The language is now developed by a group of loosely-affiliated programmers. It is an actively-developed language - features are added to both the language and it's library on a regular basis.
The Good
- cross-paradigm - can be used for object oriented or procedural programming, with some functional language features thrown in for good measure
- All type information checked at runtime, rather than compile time
- Interactive programming prompt
- Easy prototyping - makes hacking stuff together even easier
- Highly portable interpreter written in C - runs on all major platforms
- Alternative interpreter written in java, called Jython, allows for interactive exploration of java libraries with a python interactive terminal and for interop between python and java code.
- extensive standard library - makes programming for the following easy:
- network servers
- network clients
- platform-specific stuff
- ole on win32
- posix on unix.
- everything else
- lots of third-party libraries
- gtk bindings
- Qt bindings
- wxWindows bindings
- sdl bindings
- twisted matrix
The Bad
Performance - Because there are only interpreters available, some kinds of programs run slowly. Fortunately it is very easy to write modules in other (faster) languages and then use those modules in Python programs. Numeric is an excellent example of this.
Lack of thread.stop() makes it impossible to safely run untrusted Python code. (I asked Guido about this and he said that it will never be added. --MikeLeonhard)
Links
http://www.pygame.org/ <--- Game programming with Python!
http://directory.google.com/Top/Computers/Programming/Languages/Python/
http://www.ibiblio.org/obp/thinkCSpy/ <-- Intro to CS, happens to be written for Python
http://www.diveintopython.org/ <-- A python tutorial for people with programming experience
Mike, I'm confused. The jython website says that jython can do static compilation. I also don't see why you'd want to run untrusted code - what's to stop it playing games with the filesystem? Can you elaborate on where/why/how it would be useful? --IainMcCoy
Certainly. In my opinion, Java and Swing are a very very poor platform for writing network applications. I think that Python could make an excellent platform for running unsafe code. Modules like PyGame and PyOpenGl could be modified to provide safe high-performance graphics facilities to network applications. Currently, Python lacks a few features that would make this possible. The trouble is summed up in the note on this page: http://www.python.org/dev/doc/devel/lib/module-rexec.html --MikeLeonhard
Any recommendations for a python tutorial that's java programmer-friendly? -- KatieRivard
I just added http://www.diveintopython.org/ to the list above; it's pretty good.
