On Fri, 28 Aug 2009 15:37:46 -0700, qwe rty wrote: > i know that an interpreted language like python
Languages are neither interpreted nor compiled. *Implementations* are interpreted or compiled. Perl has only one implementation, which is interpreted (as far as I know); Java has a number of implementations, some of which compile to byte-code, some compile to machine-code. There are C interpreters as well as C compilers. And languages like Forth have an unusual programming model which doesn't easily match the conventional interpreted/compiled distinction. Python has a number of implementations, all of which are compiled to byte- code, like early Java. None are purely interpreted; none are compiled to machine-code, although there are add-ons to CPython which will compile most Python code to machine-code. Some day, Python may include implementations which compile directly to machine-code. > can't be used to make an operating system or system drivers. With existing Python implementations, it would be difficult to write an OS, because the implementations assume there is already an operating system available to handle things like memory and disk IO. So before you could write an OS in Python, you would need to write a new Python implementation. However, you could easily write a "virtual OS" in Python which sat on top of the regular OS. Device drivers would be less difficult, but performance may be slow compared to drivers written in (say) C. Boot loaders are another type of software which would be impractical to write in existing Python implementations. > what else can NOT be done in python? what are the limitations of the > language? As a language, Python has no theoretical limits -- it is Turing Complete, which means anything you can do in C, Java, Lisp, or any other Turing Complete language, you could do in Python -- with sufficient effort, and provided you don't care about efficiency. In practice, though, we *do* care about efficiency, and about the effort required to write the program in the first case. In practical terms, Python the language makes most things easy to write but slower to run, so there are very few applications which couldn't be written in Python. A few things are more difficult than others. One of the hardest things to do is to "sandbox" some arbitrary Python code from an untrusted source and execute it in a restricted environment. In practical terms, Python will let you write nearly any sort of program you want, provided absolute performance isn't your provided. (To put it another way, Python code is rarely "the fastest", but it is usually "fast enough".) If performance is too slow, Python is an excellent "glue" language, letting you write the bulk of your program in Python for ease, the performance-critical parts in C for speed. Some practical restrictions... if you are writing a web app, some hosting providers don't provide access to Python on their webserver, so you're limited to using whatever languages they provide, or finding another provider. All existing Python implementations require a minimum amount of memory to operate. This is relatively high, so you probably couldn't use Python on a device where you only had (say) 64K of memory. There's no Python implementation for your ancient Mac Plus or Commodore 64, and there probably never will be. Python the language is based on an execution model with relatively high overhead, so even if you wrote an implementation for such ancient machines, you probably couldn't do much with it. Existing Python implementations don't give you direct access to hardware, and bit-manipulation has a lot of overhead in Python. Numerical calculations (e.g. scientific array calculations) also suffer from overhead, which is barely noticeable if you're doing a few thousand calculations, but if you're doing a few tens of millions may be a little slow. For these, you should use Python as an interface to numeric libraries written in C, like Scipy and Numpy. -- Steven -- http://mail.python.org/mailman/listinfo/python-list