Python is a programming language; in fact it was released by its designer, Guido Van Rossum, in February 1991 while working for CWI also known as Stichting Mathematisch Centrum. Many of Python’s features originated from an interpreted language called ABC. Rossum wanted to correct some of ABC’s problems and keep some of its features. At the time he was working on the Amoeba distributed operating system 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 generally extensible. Since he had some experience with using Modula-2+, he decided to talk with the designers of Modula-3. Modula-3 is the origin of the syntax and semantics used for exceptions, and some other Python features. In 1989, during the Christmas holidays, he decided to give it a try and design a language which he later called Python.
Just in case you’re wondering how the language got its name, well it’s not from those dangerous reptiles. Python actually got its name from a BBC comedy series from the seventies “Monty Python’s Flying Circus”. The designer needed a name that was short, unique, and slightly mysterious. Since he was a fan of the show he thought this name was great.
Significant Language Features
Python is an interpreted, interactive, object-oriented programming language. It incorporates modules, exceptions, dynamic typing, very high level dynamic data types, and classes. Python combines remarkable power with very clear syntax. It has interfaces to many system calls and libraries, as well as to various window systems, and is extensible in C or C++. It is also usable as en extension language for applications that need programming interfaces. Finally, Python is portable across all major hardware and software platforms.
Areas of Application
Python is ideally suited for rapid prototyping of complex applications. It is also used as a “glue language” for connecting up the obvious pieces of a complex solution, such as Web pages, databases, and Internet sockets.
Python is a general purpose programming language that is able to be used on any modern computer operating system. It may easily be used for processing text, numbers, images, scientific data, or anything else which one might save on a computer. It is used daily in the operations of the Google search engine, the video sharing web site YouTube, NASA , and the New York Stock Exchange. These are but a few of the places where Python plays important roles in the success of business, government, and non-profit organizations; there are many others.
Python – language of the decade
Looking at the study, we can deduce that Python has the biggest increase in the last decade. What’s better we can see good linear growth for 10 years! Greetings for Python!
The plot is interesting indeed, because constant line doesn’t mean bad. It’s mean that constantly some group of people (for Java and PHP – a large group) wants to learn this language. Python is the only language which behaves different here.
As we known Python start from scripting and scientific fields, and now becomes increasingly popular, hitting the technologies which are dominated by web and business. Those technologies are supported by big companies (Java, C#, C++), which pay big money for support, and web (PHP, Ruby), which makes a lot of noise in the internet. It is very difficult to become popular in such big competition. And Python get it successively. For me this is the reason why Python is the language of the decade.
The Python Advantages
Cost savings in development and maintenance
It’s no secret that IT shops have more work to be done and fewer resources with which to do it. Any IT solution that promises to increase coder productivity and reduce the ongoing total cost of ownership of software merits careful consideration. Python makes a strong argument that it can save the enterprise money both in the software creation and the maintenance stage, where software spends 50 percent to 95 percent of its life cycle.
Python is simple
In general, scripting languages are much simpler than system languages like C++ and Java (Laird & Soraiz, 1998b). Python has a simple, regular syntax. Statements are terminated by end of line, and block structure is indicated by indentation. Python programs look like executable pseudo-code. This eliminates a host of troublesome errors for beginning programmers, especially placement of semi-colons, bracketing and indentation.
Semantically, Python is also simple. Python is dynamically typed, so there is no need for variable declarations. This reduces the amount of code that students have to write and also eliminates common errors stemming from misunderstanding the subtle distinctions of declaration, definition and use.
Python has a minimal but complete set of simple control structures: one selection construct (if-elif-else), one definite loop (for) and one indefinite loop (while). Python also has a modern exception handling mechanism similar to that found in C++ and Java. Unlike Java, however, you do not have to understand the exception mechanism to write simple programs. From a pedagogical perspective, Python’s for loop is illustrative. It allows a control variable to take on successive values in a sequence. It can be used to iterate through any sequence such as a list (array) or string.
Easy to understand Data Model
Python has a simple uniform data model. Variables are always references to heap allocated values (objects). The model is consistent, avoiding the confusion over heap versus automatic variables in C++ or primitive versus object types in Java. Both of these languages require the teaching of multiple allocation models to implement even relatively simple programs.
Similarly, Python has only a single parameter passing mechanism (by value). Parameter passing is simply assignment of actual to formal parameters at call time. Once students understand the simple assignment model, they get parameter passing for free.
Python is safe
Python provides full dynamic run-time type checking and bounds checking on array subscripts. Python employs garbage collection so there is no problem with dangling pointers or memory leaks. It is impossible for user code in Python to produce a segmentation violation. In this respect Python is similar to Java, and both are much safer than C++.
Python supports object-oriented programming
Although one doesn’t have to use classes to write Python programs, Python does support object-oriented programming through a class mechanism similar to that provided by C++ and Java. The class model of Python is a simplification of the C++ model and supports multiple inheritance. Since Python is dynamically typed, there is no need for abstract classes a la C++ or the interface mechanism of Java. In this respect, Python is actually closer to the pure object model provided by Smalltalk.
One weakness of Python from a systems development perspective is that encapsulation is only enforced through convention. There is no mechanism for specifying that class members are private. Pedagogically, this does not seem to be a major weakness, since it is still possible to teach the principles of data-hiding; it is just not enforced by the language. The language provides an elegant mechanism but keeps it simple, avoiding the complexity of the various “visibility modes” that must be discussed in C++ or Java.
The dynamic typing model of Python makes it particularly convenient for discussing container classes in a data structures course. A stack class, for example, can be used to store any type of object. It can be an int stack, a float stack, a string stack, or a mixture of types. This is accomplished without having to introduce generics (templates) or performing dynamic type casting.
Python is fun
The simplicity of Python makes it easy to learn. In addition to the list (dynamic array) data structure, Python provides tuples (immutable lists) and dictionaries (hash tables). Together with the class mechanism, these can be used to quickly build sophisticated data structures for interesting projects. The absence of type declarations makes for less code and more flexible programming. There is also a huge library of standard and contributed modules providing components for programming GUIs, client-server applications, html viewers, databases, animations, and much more. The rising popularity of scripting languages is directly attributable to the ease with which sophisticated applications can be built by combining off-the-shelf components. Interesting projects can be developed with only a fraction of the code that would be required in a system language. If we are serious about designing engaging introductory courses, Python seems to be a natural choice.
Python is practical
Scripting languages in general are gaining popularity ([footnote] See, for example, the February 1998 issue of Dr. Dobbs Journal, a special edition featuring scripting languages.) . By some accounts, more software is written in scripting languages than in more traditional system languages. Although Python is somewhat more obscure than its cousins (Perl, Tcl, Visual Basic), it is a mature language and enjoys widespread use in industry (Laird & Soraiz, 1998a). Python is available for all the major platforms (Windows, MacOS, Linux, Unix, BeOS, Java). And it is completely free.
Some Obstacles (Real and Imagined)
Given the advantages of using a scripting language like Python for the introductory computer science classes, the lingering question is why everyone isn’t (anyone) doing it? Scripting languages are often rejected without adequate consideration. In this section I discuss some of the typical objections.
Python is Unfamiliar
Some developers may object to Python as a first language because it is unfamiliar. However, scripting languages are simple, and anyone qualified to teach computer science can pick up Python in days, if not hours. In fact, after a couple days playing with Python, many developers who are now using C++ would know Python better. C++ has evolved during standardization but true experts on modern C++ are relatively rare.
Absence of GUI and teamwork tools
Creating graphical user interfaces on Python applications is unnecessarily complex. Tk ships with the Python distribution and is the tool most often used by Python developers. But there is no accessible, easy-to-use GUI tool for Tkinter (Tk as deployed with Python). The embryonic PythonCard project, which is in prototype at the moment (and in which I play a developmental role), intends to fill that gap. One product, boa-constructor, has caught on with some Python programmers, but it’s a complex effort to create a full-flown Integrated Development Environment (IDE).
More than its rival languages Perl, Java, and to some extent PHP, Python suffers from a lack of extensive, accessible documentation and published books. There are nearly twice as many PHP titles on the market as Python books; both are dwarfed in this respect by the more than 400 Perl titles available.
Lack of prepackaged solutions
PHP has gained a strong foothold in enterprise software, primarily because of a wide range of usable off-the-shelf products, such as discussion boards, chat servers, individual and group calendars, and instant messaging. By comparison, Python offers relatively few packaged solutions. It does include an extensive class library with the language’s distribution, and there are more and more programmers working on developing a PHP-equivalent tool. But if time to market is crucial and there’s a PHP solution to the problem you are facing, PHP is probably a better first place to look.
Python’s obscurity in development shops
Most development managers know very little, if anything, about Python. In high-pressure environments like modern IT shops, a manager’s lack of familiarity with a proposed language or tool and its implications for other aspects of software development can be the death knell for adopting that language. After all, the CIO or director of development is under the gun to produce finished applications. Absent concrete and compelling proof of a significant gain, most development managers stay with what they know. And very few of them know Python.
The emergence of scripting languages such as Python, Tcl, and Perl as major tools in software development represents a potentially revolutionary change in computer programming. This is surprising, as, from a instructive standpoint, scripting languages would seem ideally suited for the type of programming that is typically done in the initial phases.
Given the existence of scripting languages such as Python that also provide good support for modular and object-oriented program design, there is no good reason for not using them. Given the current lack of consensus on a single first language, it seems like the ideal time to begin a movement to scripting languages.
When all is said and done, of course, the decision of whether to try or adopt Python in an enterprise is a complex one that has far too many site-specific variables to lend itself to generic advice. That caveat aside, we can probably safely say:
- If you have an extensive amount of PHP code or a significant number of PHP applications in place, moving to Python for those purposes is not viable.
- If you have a solid Java code base but you need lots of small apps, applets, and interfaces with that code, Python/Jython could be a real time-saver.
- If you have one or two coders who can be spared for a week or less, giving them the task of evaluating Python could pay significant dividends in the future.
Drop Us A Note