The Arrival of the Internet Languages


1991: Java

Designed by research staff at Sun Microsystems, Java is a simple, portable object-oriented language. It first appeared in their short-lived InteractiveTV project which was was eventually given up for the web oriented version of Java we see today. The feel of the Java language is fairly similar to that of C++, but it also borrows ideas from Modula-3, Mesa, and Objective-C.

According to its designers, Java was intended to be object-oriented, robust, secure, architecture neutral, portable, high-performance, threaded, and dynamic. Certainly Java succeeds at being object-oriented and threaded, it is fairly architecture-neutral and quite portable. Its performance is currently poor, but new JVM implementations that employ just-in-time compilation are helping to improve Java's speed. Java is fairly dynamic, but not as much so as other interpreted languages like LISP or Perl. Java security is better than many other embeddable languages, but still has significant problems to overcome, both in its security model and in various implementations.

The fundamental structural component of a Java program is the class. All data and methods in Java are associated with some class, there is no 'global' data or functions as in C++. Classes can be members of packages; package and class membership help determine scope and visibility of data and methods.

Java does not include features that its designers felt would compromise the similicity or safety of the language, so Java has no true pointers, no true multiple inheritance, no operator overloading, and no macro preprocessor. The lack of multiple inheritance could have been a serious shortcoming, but Java does support the definition and interitance of multiple stateless "interfaces", which serve for most areas where multiple inheritance might be desired. Java also has no facility for generic functions, but since the language imposes a rooted class hierarchy (all object classes inherit from the root class 'Object'), any need for generics is greatly reduced.

The feature set of Java is fairly broad: it has inheritance, strong type checking, modularity (packages), exception handling, polymorphism, concurrency, dynamic loading of libraries, arrays, string handling, garbage collection, and a pretty extensive standard library. Java 1.1 added powerful reflection and object class manipulation capabilities, and uses these to support object serialization I/O. The newest version of the language, Java 1.3 (released in 2000), includes nested classes, persistence, and reflection as well as many additional standard libraries.

Initiatives are underway for Java microprocessors, a Java OS, Java re-use framework (Beans), and a ISO Java standard.

Click to view a sample Java program


1991: Python

Originally conceived, by Guido Rossum, to be an extensible scripting language for the Ameoba operating system, Python would be made into a portable language of its own very early in its development.

Python is an interpreted, object-oriented language. It is intended to be highly effective, easy to use, and extensible. The syntax of Python is very simple and statement-oriented. Block structure is specified with indentation. Python supports a good set of primitive and composite data types: integers, floats, complex numbers, strings, lists, and associative arrays (dictionaries). Data values are typed, but strong type checking is not enforced. Like most scripting interpreters, Python does have the ability to execute a string as code. Python supports a conventional set of flow-control constructs: if-then, while and for loops.hon also has exceptional-handling constructs similar to those in Modula-3. Python supports subroutines, independent modules, and object classes.

It is also supported by a feature-rich standard library; which includes extensive string manipulation, I/O, parsing, date handling, low-level networking services, high-level protocol and data format handling, image I/O, and a variety of operating system-specific services.

Considered a good language to use for certain kinds of web programming, the standard library of Python supports HTTP and CGI services, as well as a Windows-specific library support ActiveX scripting (so that you can use powerful Python for active server pages instead of the intentionally weak VBScript). Python can be extended by adding C/C libraries, and it can also be embedded in an application to serve as its extension language.

There was originally only one Python implementation, an interpreter which ran on a wide variety of Unix platforms as well as Windows and Macintosh. Later, an implementation was created that compiled Python to Java bytecodes (jPython) and there is also one that targets the Microsoft C# environment. The newest versions of Python include v2.0 which was released in 2000.

Click to view a sample Python program


1991: Visual Basic

As a language, Visual Basic has evolved enormously since its commercial introduction in 1991 by Microsoft. Visual Basic is an advanced structured dialect of Basic that is intended for application development.

The "Visual" in the name Visual Basic does not really refer to the language, but to the development environment. The VB integrated development environment that Microsoft distributes has extensive facilities for on-screen design of graphical user interfaces: dialog boxes, window interfaces, menus, etc. It also provides a rich but complicated interface for code management and debugging. GUI programs are easy to write in Visual Basic, and the development environment provides copious support for coding the necessary event handling subroutines.

The syntax of Visual Basic is similar to that of other modern Basic dialects, but with many additional features. The following primitive data types are supported: integers, reals, strings, booleans, currency, dates, and object references. Variables may be declared, but need not be. Type checking can be performed, but is enforced only for declared variables and parameters. Composite data types include arrays and user-defined records. Control structures include various conditional and iteration constructs, and rudimentary error handling mechanisms. Memory management in Basic is automatic. Visual Basic is nominally an interpreted language, but newer implementations include native code compilers. During execution, Visual Basic programs are normally supported by a run-time library.

The popularity of Visual Basic is derived partly from its extensibility. New components, especially GUI elements, can be added to the language run-time system and transparently used by application developers. There is a large community of programmers who design and distribute "Visual Basic Controls" (VBXs) and "ActiveX Controls" for use in Visual Basic.

Click to view a sample Visual Basic program


1992: Dylan

Developed by Apple Computer in 1992 by their advanced technology east lab, Dylan (DYnamic LANguage) is a dynamic object-oriented language with both procedural and functional features, intended for application development and system programming.

The language syntax for Dylan is original, but structurally resembles Scheme. The language offers inheritance, type-safety, polymorphism, garbage collection, macros, modularity (named modules), reflections, error handling, multi-methods, and extensibility. Data types defined by the language include a variety of numbers, strings, symbols, various collections such as sequences, arrays, vectors, and hash tables.

In Dylan, as in Smalltalk, everything is an object. Even numbers are organized into a class hierarchy. Functions are also objects, and support a large number of interesting mechanisms including composition, currying, mapping, and reduction. Classes are also objects, with support for dynamic class definition and other advanced OOP techniques. Dylan facilities for GUI and database programming have been implemented, and most implementations of the language permit interfacing with external C/C++ libraries.

It was originally intended for the Macintosh, but has been ported to many other computers. Implementations of Dylan are available for most platforms including Unix, Macintosh, and Windows. Dylan has been implemented as an interpreter, as a C front-end, and as a native compiler.

Click to view a sample Dylan program


1993: Ruby

Based on earlier less known programming languages, Ruby was first a teaching language created in the late 1960's based on Markov processes. It eventually developed into a hardware specification language based on higher-order functions during the mid 1980's. The Ruby OOP language is the 3rd programming language to bear that name.

Ruby is an interpreted scripting language, fully object-oriented and designed for easy extensibility. The syntax of Ruby is simple but bears a strong resemblance to Perl. All data types in Ruby are object classes, like in Smalltalk. Pre-defined data types include integer and float numeric types, strings, arrays and hash tables, and structures. Control constructs in Ruby include a wide variety of conditionals and several kinds of loops, along with several controls structure variations like break and continue. Ruby does not have declarations; variables are weakly typed, and their scope is denoted by prefixes. It supports many important OO features, including classes with inheritance, class methods, and even closures. Ruby also supports exceptions with functionality similar to that of Java. However, it does not seem to support reflection or threading.

While Ruby resembles Perl in many respects, it differs substantially in its representation of data. Perl treats numeric data, strings, lists, and hashes as built-in types, while Ruby implements everything as objects. Another interesting aspect of Ruby is its notion of Modules. A class can implement any number of modules; they are similar to Java interfaces and to Flavors Lisp mix-ins. There are many extension libraries and toolkits available for Ruby, including database, network, GUI, IO libraries.

The current version of Ruby is 1.6.1 (released in 2000), and is available for Linux and other Unix systems, Windows, DOS, and some other platforms.

Click to view a sample Ruby program


1994: JavaScript

Invented by Netscape Communications for adding dynamic behavior to web pages, JavaScript was originally called 'LiveScript'. Sun Microsystems, developer of Java, took an interest in this powerful script and, along with Netscape, made some adjustments to re-introduce the script under the new name of JavaScript. Unlike Java, which can be used to develop entirely standalone applications, JavaScript works primarily with Web pages.

JavaScript is a loosely typed scripting language with object-oriented and block-structuring features. The syntax of JavaScript is similar to that of C or Java, but simpler and not as rich. Primitive data types include integers, reals, strings, and a associative arrays. Javascript is loosely typed, any variable can contain data of any type, and conversion is mostly automatic. The language definition includes extensive facilities for controlling and manipulating parts of web pages, especially HTML forms.

Each version of Netscape Navigator has brought a new version of JavaScript, and later versions also include a complicated security model for restricting the hostile capabilities of scripts embedded in web pages. Microsoft web browser also support Javascript, but under the name "JScript".

Click to view a sample Java program


1995: VBScript

Although VBScript was first developed in 1995, the first release of VBScript (v2.0) was part of Microsoft's Internet Explorer 3.0 which came out in 1997. VBScript has no language-defined I/O facilities, so that any I/O that it supports must be provided by object classes supplied from the controlling application environment. In a web browser client, these objects are not available, but in a web server environment they are.

VBScript (Visual Basic Scripting Edition) is a subset dialect of Visual Basic. It is an interpreted, procedural language intended for creating application extension scripts and for adding interactivity to web pages. VBScript's syntax resembles that of Visual Basic in that statements are bounded by end-of-line, and normal Basic keywords are used for control structures and code modularity. It supports a modest set of data types: various numeric types, strings, dates, booleans, arrays, and object references. Variables in VBScript are typed, however, they are not stongly type enforced by the interpreter. VBScript supports subroutines and functions, and can interact with objects provided by its environment (usually a scriptable application). It does not support the definition of new object classes, nor does it support overloading or polymorphism. The language has fairly good support for handling time, dates, and strings. The newest version of VBScript also supports a dictionary object, an associative array for storing string data.

VBScript is most commonly employed in web browsers and web servers from Microsoft. Under the 32-bit Windows environment, any application can employ VBScript if it is installed; Microsoft intends VBScript to be the baseline or typical scripting language for simple OLE applications.

Click to view a sample VBScript program


History Index Back: 1951-1970 Next: 1991-2001