though each programming language is different (though not as different as their designers would have us believe)there are some dimensions along which they can be related low-level versus high-level refers to whether we program using instructions and data objects at the level of the machine ( move bits of data from this location to that locationor whether we program using more abstract operations ( pop up menu on the screenthat have been provided by the language designer general versus targeted to an application domain refers to whether the primitive operations of the programming language are widely applicable or are fine-tuned to domain for example adobe flash is designed to facilitate adding animation and interactivity to web pagesbut you wouldn' want to use it build stock portfolio analysis program interpreted versus compiled refers to whether the sequence of instructions written by the programmercalled source codeis executed directly (by an interpreteror whether it is first converted (by compilerinto sequence of machine-level primitive operations (in the early days of computerspeople had to write source code in language that was very close to the machine code that could be directly interpreted by the computer hardware there are advantages to both approaches it is often easier to debug programs written in languages that are designed to be interpretedbecause the interpreter can produce error messages that are easy to correlate with the source code compiled languages usually produce programs that run more quickly and use less space in this bookwe use python howeverthis book is not about python it will certainly help readers learn pythonand that' good thing what is much more importanthoweveris that careful readers will learn something about how to write programs that solve problems this skill can be transferred to any programming language python is general-purpose programming language that can be used effectively to build almost any kind of program that does not need direct access to the computer' hardware python is not optimal for programs that have high reliability constraints (because of its weak static semantic checkingor that are built and maintained by many people or over long period of time (again because of the weak static semantic checkinghoweverpython does have several advantages over many other languages it is relatively simple language that is easy to learn because python is designed to be interpretedit can provide the kind of runtime feedback that is especially helpful to novice programmers there are also large number of freely available libraries that interface to python and provide useful extended functionality several of those are used in this book