The Rise Of Scripting Languages
If you have an interest in programming, you have undoubtedly noticed the rise of scripting languages in the past few years. But perhaps a little more explanation is in order as to what the fuss is about.
What's the big deal? Interpreted scripting languages have the reputation of being slow, compared with compiled languages like C, Fortran, or COBOL. But in this day and age of fast PCs, compiled languages don't always exceed the performance of modern scripting languages. Indeed, many types of applications are ideal for scripting languages because they can be built in perhaps one tenth the time it would take to build the same application in something like C++.
If you're a project manager and you can get a job done either in three weeks or six months, with comparable performance, stability, security, and increased flexibility, what do you choose? The promise of scripting lanagues like Perl, Python, Tcl/Tk, and even others like Guile and Scheme, is that they can deliver the goods much sooner and much cheaper than compiled languages. And, they're portable, robust, full-featured, and much easier to learn and use than something like C++.
While the big-league system languages like C++, and even the newer compiled Java, offer an enormous breadth and depth of data types and sophisticated structural features, scripting languages let you say in 10 lines what it might take 100 or more lines to say in C++ or the like. Sometimes the trade off is worth it, but for many applications, preferring a scripting language is a no-brainer.
When to Use Each. Some applications are large and complex enough that you need to bring out the whole toolshed to get the job done. Also, in these cases, portability may not be an issue, nor might there be a need for many different people to become familiar with the source tree of the project. One close friend of mine worked on industrial strength voice mail and phone switching for fortune 500 companies: the source tree was many millions of lines long and took all night to compile on very fast workstations. Such a project would be well suited to something like C++ because its extensive features could all be utilized. Also, only a compiled language could deliver the necessary performance on such a large project. And, only a single development team would be required to know the source tree.
Other arenas are typically compiled language domain, also. Device drivers, OS kernels, embedded systems: these are usually compiled language projects.
Scripting languages excel in circumstances where many people are likely to use and maintain or modify the source. The ease of scripting languages is important here. For example, let's say you wanted to run a commerce-based website: Scripting languages are often the way to go. They're portable between nearly all architectures, they're short enough where their being interpreted languages doesn't diminish performance much, and they're flexibile because the source is easy enough for nearly anyone to learn what's going on and modify or maintain it as necessary. You don't need an expensive compiler and development environment: you can do it all with a free open source distribution of your language and a text editor.
What Language Should I Learn? Ideally, a programmer should have a command of several system languages and a handful of scripting languages. But for those of us whose programming is more fill-in, ad hoc, or recreational, scripting languages may fill the entire bill.
Perhaps the easiest and most immediately useful scripting language to learn is Tcl/Tk (pronounced ``tickle T K''). Created by John Ousterhout to fill his personal needs while teaching at Berkeley, Tcl/Tk became a hit soon after it was released over the Internet. Most appealing is its built-in windowing toolkit, Tk. Some argue that Tk is what really makes Tcl popular. Without the features of rapid-GUI building, Tcl might not be so popular.
I might tend to agree with this, since I'm very fond of Perl. Larry Wall developed Perl (Practical Extraction and Report Language) while working as system administrator on various projects. He eventually released it on the Internet for free (before Open Source became popular) and it became even bigger than Tcl/Tk. Perl embodies nearly all the features of most other scripting languages. It's extremely feature rich, especially since so many people have extended it and added powerful modules. It has enormous capabilities with text processing, inter-process communication, networking, system administration, and even object-oriented programming.
Guido Van Rossin's Python is still another more recent scripting language that has earned great respect and admiration from computer scientists and professional developers. Some prefer it over Perl because of its polished and consistent design. Perl can get pretty rustic and freewheeling: like the Camel that is its mascot, Perl can be great to have in the desert. But it doesn't always smell very nice. Yet, Perl's rugged side is what some prefer over Python. In short, Python was designed from the beginning as an object oriented scripting language, so it has many design features built-in that were added to Perl after the fact. But ``Perl vs Python'' is one of those ancient religious wars, like ``Emacs vs Vi'' and ``FreeBSD vs Linux'', that make paintball contests interesting at geek conventions.
The nice thing about Tk, and other widget sets, such as GTK (Gimp Tool Kit) or the Qt libraries from Troll Tech, is that they're being ported to scripting languages. Now, you don't have to use Tcl just to get the benefits of a Tk GUI. You can bind Tk widgets to your Perl and Python scripts. You can have your favorite features of your beloved scripting language and your Tk, Qt or GTK widgets too! And you can have them all for free. Each of these languages is open source.
Where To From Here? Now that you're all excited about scripting, you can check out www.scriptics.com (home of Tcl/Tk), www.perl.org and www.perl.com (homes of Perl), and www.python.org (home of Python). O'Reilly and Associates have some excellent books about Python and Perl. They're really big on Perl, and they sell more books about that language than any other. But check the scriptics.com website for many other books about Tcl/Tk and python.org for Python books.