3.1. Read the text
A LINGUA FRANCA FOR THE INTERNET
The plethora of modern programming languages has a common evolutionary background. With each new generation,
programming languages have tended to become more abstract and remote from the computer that they
45
communicate with. First-generation languages talked to the computer in the ones and zeros of "machine code",
which was interpreted directly by its central processor as instructions for manipulating data stored in its memory. The
second-generation, or "assembly", languages were devised to make the task of writing and reading such instructions
easier, by using a code composed of letters and numbers, which was subsequently translated into the is and os that
the machine could comprehend.
Third-generation languages, such as c, Pascal and FORTRAN, consist of English words such as READ, WRITE, and
GOTO as well as mathematical symbols. Unlike first- and second-generation languages, the syntax (i.e., the rules for
combining symbols and words) of third-generation languages is in principle independent of the computer they run
on. A separate program called a compiler is used to translate the code into machine language.
A further abstraction is achieved in fourth-generation languages such as SQL (Structured Query Language), a
programming language for querying
1
databases, or Mathematica and MathCad, languages for performing advanced
mathematical manipulations and solving scientific problems. These languages also offer the programmer a far more
natural form of expression, but at the expense of considerably narrowing the range of problems that the language
can tackle.
When it came to developing a fifth generation of computer languages, this orderly evolution fizzled out
2
. The
Japanese government's Fifth-Generation Computer project — aimed at marrying artificial intelligence techniques with
programming — was abandoned in 1992, with little to show for ten years of research and billions of yen. The
Japanese policymakers did not foresee the rise of the Internet and the need for an entirely different approach.
What the Internet has done, in effect, is to place the priority on the programmer, rather than the language. The
elegance of computer languages — so dear to academic software gurus — has been sacrificed for ease of use. That
is what matters to people who are building web applications on a tight schedule. Hence the rise over the past decade
of the quick-and-dirty
3
scripting
4
languages — the "sticky tape" of the World Wide Web.
While scripting and object-oriented programming
5
represent significant new trends, the biggest shift in the past
decade has been in the definition of what a programming language actually is. The success of Java and the high
hopes that Microsoft is pinning on
6
C# have little to do with the languages themselves (both are really just variations
of C++, an object-oriented version of C). What matters most for the success of these languages is that they are
embedded in an Internet-friendly software environment.
As the battle between C# and Java rages in the student dormitories, the struggle will continue on a rather more
conceptual level on the web. Conceptually, the two languages represent wholly different bets on the future of the
Internet. The Internet is about data transfer and not data processing. Where Java's philosophy is based on moving
applets around the Internet — which, for many, is disturbingly similar to creating computer viruses — C# focuses
much more on moving information.
Perhaps the closest thing today to a language that expresses the architecture of a program is UML (unified modelling
language). Originally, UML was conceived as a way of standardizing existing tools used to design computer
programs. It is a "big picture" modelling language, and it has been embraced by many computer programmers, even
though it is not restricted to programming.
On the horizon, programming languages face the daunting challenge of helping to turn the Internet into a more
intelligent place. Computers should be able to recognize the meaning of information on the web by its context, and
provide users with much more relevant information than web browsers now do.
Although such programs can no doubt be constructed in Java or C#, these languages were not designed for such
purposes. Herein lies an opportunity for languages designed with artificial intelligence specifically in mind. Such
languages have existed for decades. The so-called functional language Lisp computes with symbolic expressions
rather than numbers; the logical language Prolog works by making logical statements about objects.
Lisp and Prolog still have a loyal following in research circles, but their impact elsewhere has been modest.
Languages such as Java have proved to be the fittest, in a Darwinian sense, because the Internet dictated that the
big programming challenge was not one of artificial intelligence, but one of data manipulation, visualization and
communication between programs. As in Darwin's theory, the definition of what is fittest depends on the
environment, which is constantly changing. Even though Lisp and Prolog may not be the shape of things to come, a
46
programming language that incorporates concepts from artificial intelligence will no doubt appear when the time is
ripe — and leave the likes of Java and C# by the wayside.
As the clash between C# and Java shows, there is a huge amount at stake in setting the trend for programming
languages. Expect a whole alphabet soup of new languages within the next decade.
Economist 9/22/2001
Do'stlaringiz bilan baham: |