Computer Programming Languages

The following list of languages is sorted by what seems like popularity, based from research on programming language related Internet traffic. It's the best way I could think of to sort languages, but is not meant to be taken scientifically. The Internet traffic was based on things like volume of web sites, language downloads, documentation, tutorials, books published, development news, and active projects related to the language. I sorted it this way because I wanted to learn about what's still thriving, even if it is not a 'hot job technology'.

Mainpage     Programming Terms     Programming Technologies    

01.C   02.Java   03.C++   04.Visual Basic   05.Perl   06.PHP   07. Pascal   08.Python   09.Jython   10.C#   11.JavaScript   12.COBOL   13.Lisp   14.Fortran   15.Ada   16.VB.NET   17.Felix   18.Awk   19.Ruby   20.Logo   21.Forth   22.S-Lang   23.Tcl/Tk   24.Bash   25.Icon   26.LabView   27.REXX   28.Clipper   29.Objective-C   30.Erlang   31.Smalltalk   32.ML/SML   33.Groovy   34.Lingo   35.VB Script   36.Actionscript   37.Csh/tcsh   38.Scala   39.Modula-2/Modula-3   40.Windows Script   41.Dylan   42.Curl   43.D   44.Eiffel   45.Haskell   46.Lua   47.Oberon   48.Pliant   49.Rebol   50.Squeak   51.Scheme   52.R   53.S   54.Prolog   55.RPG   56.S-Plus   57.S-Lang  
Actionscript
The object oriented programming language used by Macromedia's Flash product. Flash is a proprietary plaform for producing animations or basic video games. It is most commonly seen creating animations for web pages. ActionScript was created by Gary Gossman, the Principal Engineer for the Macromedia Flash Team.

Ada
A high-level programming language developed in the late 1970s and early 1980s for the United States Defense Department. Ada was designed to be a general-purpose language for everything from business applications to rocket guidance systems. One of its principal features is that it supports real-time applications. In addition, Ada incorporates modular techniques that make it easier to build and maintain large systems. Since 1986, Ada has been the mandatory development language for most U.S. military applications. In addition, Ada is often the language of choice for large systems that require real-time processing, such as banking and air traffic control systems.

Ada is named after Augusta Ada Byron (1815-52), daughter of Lord Byron, and Countess of Lovelace. She helped Charles Babbage develop programs for the analytic engine, the first mechanical computer. She is considered by many to be the world's first programmer.

Awk
An interpreted programming language that is included in most versions of UNIX. The name is derived from the initials of its creators -- Alfred Aho, Peter Weinberger, and Brian Kernighan -- who developed the language in 1977 and 1978. The language is particularly designed for filtering and manipulating textual data. In this respect, it is similar to Perl, though Perl is more powerful. There are many variants of awk, including gawk, which is the GNU version.

Bash
Bourne Again Shell is an sh-compatable shell, or command language interpreter, that incorporates useful features from the Korn shell (ksh) and C shell (csh). It offers functional improvements over sh for both programming and interactive use. In addition, most sh scripts can be run by Bash without modification. Bash is the default Linux shell.

The improvements offered by BASH include:

* Command line editing * Unlimited size command history * Job Control * Shell Functions and Aliases * Indexed arrays of unlimited size * Integer arithmetic in any base from two to sixty-four

Basic
Acronym for Beginner's All-purpose Symbolic Instruction Code. Developed by John Kemeney and Thomas Kurtz in the mid 1960s at Dartmouth College, BASIC is one of the earliest and simplest high-level programming languages. During the 1970s, it was the principal programming language taught to students, and continues to be a popular choice among educators.

Despite its simplicity, BASIC is used for a wide variety of business applications. There is an ANSI standard for the BASIC language, but most versions of BASIC include many proprietary extensions. Microsoft's popular Visual Basic, for example, adds many object-oriented features to the standard BASIC.

Recently, many variations of BASIC have appeared as programming, or macro, languages within applications. For example, Microsoft Word and Excel both come with a version of BASIC with which users can write programs to customize and automate these applications.

C
A high-level compiled programming language developed by Dennis Ritchie at Bell Labs in the mid 1970s.

Although originally designed as a systems programming language, C has proved to be a powerful and flexible language that can be used for a variety of applications, from business programs to engineering. C is a particularly popular language for personal computer programmers because it is relatively small -- it requires less memory than other languages.

The first major program written in C was the UNIX operating system, and for many years C was considered to be inextricably linked with UNIX. Now, however, C is an important language independent of UNIX.

Although it is a high-level language, C is much closer to assembly language than are most other high-level languages. This closeness to the underlying machine language allows C programmers to write very efficient code. The low-level nature of C, however, can make the language difficult to use for some types of applications.

C#
Pronounced "see-sharp." A hybrid of C and C++, it is a Microsoft programming language developed to compete with Sun's Java language. C# is an object-oriented programming language used with XML-based Web services on the .NET platform and designed for improving productivity in the development of Web applications. C# boasts type-safety, garbage collection, simplified type declarations, versioning and scalability support, and other features that make developing solutions faster and easier, especially for COM+ and Web services. Microsoft critics (and a Sun lawsuit against Microsoft) have pointed to the similarities between C# and Java.

C++
A high-level programming language developed by Bjarne Stroustrup at Bell Labs. C++ adds object-oriented features to its predecessor, C. C++ is one of the most popular programming language for graphical applications, such as those that run in Windows and Macintosh environments.

Clipper
Clipper The official moniker is CA-Clipper. This is just as well since the US Government and its contractors have appropriated the name "Clipper" to apply to an encryption scheme that has nothing to do with this programming language.

Clipper is a programming language, and it is also a compiler. The programming language is a superset of dBASE III+, and also shares some features with C/C++ and Smalltalk. It is a general-purpose, high-level programming language well suited to corporate and commercial applications development.

CA-Clipper is also a compiler product marketed by Computer Associates, the second largest software vendor in the world today. The CA-Clipper compiler is (by definition) a fully conformant implementation of the CA-Clipper programming language for IBM-PC-type personal computers running DOS-like operating systems.

There are other Clipper implementations, from vendors other than Computer Associates, that have varying capabilities and run on platforms other than MS-DOS, but as a whole, clipper is pretty much out dated.

COBOL
Acronym for common business oriented language. Developed in the late 1950s and early 1960s, COBOL is the second-oldest high-level programming language (FORTRAN is the oldest). It is particularly popular for business applications that run on large computers.

COBOL is a wordy language; programs written in COBOL tend to be much longer than the same programs written in other languages. This can be annoying when you program in COBOL, but the wordiness makes it easy to understand programs because everything is spelled out. Although disparaged by many programmers for being outdated, COBOL is still the most widely used programming language in the world.

Csh/tcsh
C shell (csh) and an enhanced C shell (tcsh) Are shell languages. A shell is a command interpreter. You type commands into a shell, and the shell passes them to the computer for execution. UNIX systems usually provide several shell choices. C shell (csh), a popular command interpreter that has its origins in Berkeley UNIX, is particularly suited for interactive use. It offers many features, including an ability to recall and modify previous commands, a facility for creating command shortcuts, shorthand notation for pathnames to home directories, and job control.

tcsh, an enhanced version of csh, is almost entirely upward compatible with csh, so whatever you know about the C shell you can apply immediately to tcsh. But tcsh goes beyond csh, adding capabilities like a general purpose command line editor, spelling correction, and programmable command, file, and user name completion.

Shells other than csh and tcsh may be available on a UNIX or Linux system. The two most significant examples are the Bourne shell (sh) and the Korn shell (ksh). The Bourne shell is the oldest of the currently popular shells and is the most widely available. The Korn shell was developed at AT&T and is most prevalent on System V-based UNIX systems. BASH, the Bourne Again SHell is the default shell for most Linux systems.

Curl
Curl is a new language for creating web documents with almost any sort of content, from simple formatted text to complex interactive applets. Curl provides a rich set of formatting operations similar to those implemented by HTML tags. Unlike HTML, the Curl formatter can be extended by users to provide additional functionality, from simple macros (e.g., to provide a convenient way to switch to a particular font, size and color) to direct control over the positioning of subcomponents (e.g., as in a TeX-like equation formatter). Several packages of useful formatting extensions are currently under development.

Using a TK-like interface toolkit of interactive components, Curl makes it easy to build simple interactive web pages. One can view interactive objects like buttons or editable fields as extensions to the basic formatting operations provided above -- one uses the same easy-to-learn syntax to create interactive documents as to create regular text documents. There's no need to learn a separate scripting language!

D
D is a general purpose systems and applications programming language. It is a higher level language than C++, but retains the ability to write high performance code and interface directly with the operating system API's and with hardware. D is well suited to writing medium to large scale million line programs with teams of developers. D is easy to learn, provides many capabilities to aid the programmer, and is well suited to aggressive compiler optimization technology.

D is compiled with GCC, not a scripting language, nor an interpreted language. It doesn't come with a VM, a religion, or an overriding philosophy. It's a practical language for practical programmers who need to get the job done quickly, reliably, and leave behind maintainable, easy to understand code.

D is the culmination of decades of experience implementing compilers for many diverse languages, and attempting to construct large projects using those languages. D draws inspiration from those other languages (most especially C++) and tempers it with experience and real world practicality.

Dylan
Dylan is an advanced, object-oriented, dynamic language which supports the rapid development of programs. When needed, the programmer can later optimize [his or her] programs for more efficient execution by supplying type information to the compiler. Nearly all entities in Dylan (including functions, classes, and basic data types such as integers) are first class objects. Additionally Dylan supports multiple inheritance, polymorphism, multiple dispatch, keyword arguments, object introspection, and many other advanced features.

Dylan is fast, flexible and capable of unusually sophisticated abstractions. Some of its more interesting features include:

* An advanced object model. Dylan's object model is more powerful than those of most mainstream languages, but more familiar than what you'd find in an academic language. * Efficiency and flexibility. Dylan can be used as a dynamic prototyping language (like Smalltalk) or an efficient compiled language. Functional Developer, Functional Objects' Dylan compiler, generates code as good as that of most C compilers. Still, it provides an interactive prototyping environment like those found in Smalltalk or Common Lisp. * Support for advanced IDEs. The original implementation of Dylan stored code in a database and provided multiple views of how definitions were related. Cross-referencing, hypercode and online documentation were all popular research topics among the language's designers. * Infix syntax. (Most languages, including C, are infix. LISP is prefix and Forth is postfix.)

Eiffel An advanced programming language created by Bertrand Meyer and developed by his company, Interactive Software Engineering (ISE). The language was introduced in 1986 and a basic Windows compiler is available at no charge.

Eiffel encourages object-oriented program development and supports a systematic approach to software development. The Eiffel compiler generates C code, which you can then modify and re-compile with a C compiler.

Erlang
Erlang is a general-purpose programming language and runtime environment. Erlang has built-in support for concurrency, distribution and fault tolerance. Erlang is used in several large telecommunication systems from Ericsson. The most popular implementation of Erlang is available as open source from the open source erlang site.

OTP is a large collection of libraries for Erlang to do everything from compiling ASN.1 to providing a WWW server. Most projects using "Erlang" are actually using "Erlang/OTP", i.e. the language and the libraries. OTP is also open source.

Erlang particularly suitable for distributed, reliable, soft real-time concurrent systems. Telecomms systems, e.g. controlling a switch or converting protocols. Servers for Internet applications, e.g. a mail transfer agent, an IMAP-4 server, an HTTP server or a WAP Stack.Telecomms applications, e.g. handling mobility in a mobile network or providing unified messaging. Database applications which require soft realtime behaviour. Erlang is good at solving these sorts of problems because this is the problem domain it was originally designed for. Stating the above in terms of features:

Erlang provides a simple and powerful model for error containment and fault tolerance (supervised processes).
Concurrency and message passing are a fundamental to the language.
Applications written in Erlang are often composed of hundreds or thousands of lightweight processes.Context switching between Erlang processes is typically one or two orders of magnitude cheaper than switching between threads in a C program.
Writing applications which are made of parts which execute on different machines (i.e. distributed applications) is easy. Erlang's distribution mechanisms are transparent: programs need not be aware that they are distributed. The OTP libraries provide support for many common problems in networking and telecommunications systems.
The Erlang runtime environment (a virtual machine, much like the Java virtual machine) means code compiled on one architecture runs anywhere. The runtime system also allows code in a running system to be updated without interrupting the program.

Felix
A high power, Open Source, community based programming language which provides an ML style type system with a syntax that C++ programmers should find easy to learn. It generates C++ and supports both use of C++ types as primitives, as well as embedding in existing C++ written architectures in a natural manner.

Unlike many other scripting languages, Felix boasts seamless integration with C and C++ code bases, which it achieves by adopting the C/C++ object model directly.

Forth
Forth is an interactive programming environment originally designed for programmers developing applications using mini- and micro-computers. Its primary uses have been in scientific and industrial application such as instrumentation, robotics, process control, graphics and image processing, artificial intelligence and business applications. The principal advantage of Forth include rapid, interactive software development and efficient use of computer hardware.

Forth is often spoken of as a language because that is its most visible aspect. However, Forth is more than a conventional programming language in that all the capabilities normally associated with a large portfolio of separate programs (compilers, editors, assemblers, etc.) are included within its range. It is also less than a conventional programming language in its deliberate lack of complex syntax characteristic of most high-level languages.

The original implementations of Forth were stand-alone systems that included functions normally performed by separate operating systems, editors, compilers, assemblers, debuggers and other utilities. A single, simple, consistent set of rules governed this range of capabilities. Today, although very fast stand-alone version are sill marketed for many processors, there are also many versions that run co-resident with conventional operating systems, such as MS-DOS and Unix.

Forth was not derived from another language. As a result, its appearance and internal characteristics may seem unfamiliar to new users. But Forth's simplicity, extreme modularity, and interactive nature offset the initial strangeness, making it easy to learn and use. A new Forth programmer must invest some time mastering its large command repertoire. After a month or so of full-time use, the programmer could understand more of its internal working than is possible with conventions operating systems and compilers.

The most unconventional feature of Forth is its extensibility. The programming process in Forth consists of defining new words, actually new commands in the language. These may be defined in terms of previously defined words, much as one teaches a child concepts by explaining them in terms of previously understood concepts. Such words are called "high level definitions." Alternatively, new words may also be defined in assembly code, since most Forth implementations include an assembler for the host processor.

As a result of this extensibility, developing an application has the collateral result of developing a special "application-oriented language" for that type of application which may be applied to a similar application or used to modify this one.

Fortran
Acronym for formula translator, FORTRAN is the oldest high-level programming language. Designed by John Backus for IBM in the late 1950s, it is still popular today, particularly for scientific applications that require extensive mathematical computations.

Groovy
Groovy is a new agile dynamic language for the JVM combining lots of great features from languages like Python, Ruby and Smalltalk and making them available to the Java developers using a Java-like syntax.

Groovy is designed to help you get things done on the Java platform in a quicker, more concise and fun way - bringing the power of Python and Ruby inside the Java platform. Groovy can be used as an alternative compiler to javac to generate standard Java bytecode to be used by any Java project or it can be used dynamically as an alternative language such as for scripting Java objects, templating or writing unit test cases.

Haskell
Haskell is a computer programming language. In particular, it is a polymorphicly typed, lazy, purely functional language, quite different from most other programming languages. The language is named for Haskell Brooks Curry, whose work in mathematical logic serves as a foundation for functional languages. Haskell is based on lambda calculus.

Haskell is a wide-spectrum language, suitable for a variety of applications. It is particularly suitable for programs which need to be highly modifiable and maintainable. Much of a software product's life is spent in specification, design and maintenance, and not in programming. Functional languages are superb for writing specifications which can actually be executed (and hence tested and debugged). Such a specification then is the first prototype of the final program. Functional programs are also relatively easy to maintain, because the code is shorter, clearer, and the rigorous control of side effects eliminates a huge class of unforseen interactions.

What is functional programming? C, Java, Pascal, Ada, and so on, are all imperative languages. They are "imperative" in the sense that they consist of a sequence of commands, which are executed strictly one after the other. Haskell is a functional language. A functional program is a single expression, which is executed by evaluating the expression. Anyone who has used a spreadsheet has experience of functional programming. In a spreadsheet, one specifies the value of each cell in terms of the values of other cells. The focus is on what is to be computed, not how it should be computed.

Icon
Icon is a high-level, general-purpose programming language with a large repertoire of features for processing data structures and character strings. Icon is an imperative, procedural language with a syntax reminiscent of C and Pascal, but with semantics at a much higher level.

Java
A high-level programming language developed by Sun Microsystems.
Java was originally called OAK, and was designed for handheld devices and set-top boxes. Oak was unsuccessful so in 1995 Sun changed the name to Java and modified the language to take advantage of the burgeoning World Wide Web.

Java is an object-oriented language similar to C++, but simplified to eliminate language features that cause common programming errors. Java source code files (files with a .java extension) are compiled into a format called bytecode (files with a .class extension), which can then be executed by a Java interpreter. Compiled Java code can run on most computers because Java interpreters and runtime environments, known as Java Virtual Machines (VMs), exist for most operating systems, including UNIX, the Macintosh OS, and Windows. Bytecode can also be converted directly into machine language instructions by a just-in-time compiler (JIT).

Java is a general purpose programming language with a number of features that make the language well suited for use on the World Wide Web. Small Java applications are called Java applets and can be downloaded from a Web server and run on your computer by a Java-compatible Web browser, such as Netscape Navigator or Microsoft Internet Explorer.

JavaScript
A scripting language developed by Netscape to enable Web authors to design interactive sites. Although it shares many of the features and structures of the full Java language, it was developed independently. Javascript can interact with HTML source code, enabling Web authors to spice up their sites with dynamic content. JavaScript is endorsed by a number of software companies and is an open language that anyone can use without purchasing a license. It is supported by recent browsers from Netscape and Microsoft, though Internet Explorer supports only a subset, which Microsoft calls Jscript.

Jython
Jython is an implementation of the high-level, dynamic, object-oriented language Python written in 100% Pure Java, and seamlessly integrated with the Java platform. It thus allows you to run Python on any Java platform.

LabView
LabVIEW is a fully featured programming language produced by National Instruments. It is a graphical language quite unique in the method by which code is constructed and saved. There is no text based code as such, but a diagrammatic view of how the data flows through the program. Thus LabVIEW is a much loved tool of the scientist and engineer who can often visualise data flow rather than how a text based conventional programming language must be built to achieve a task.

Lingo
Lingo makes it easy to learn to program for Windows. If you're new to programming, you can download Lingo and write your first program very easily. And experienced programmers benefit because Lingo is quick to install and simple to use! Lingo includes a Developer Environment for designing forms, managing projects and debugging.

* Lingo is a compilable high level language (like Eiffel, C, C++, Ada, Java, C#, Delphi).
* Lingo produces native Windows EXE files (like Eiffel, C, C++, Ada and Delphi).
* Lingo is fully integrated with program management tools and dialog layout editors (like VB5, C# and Delphi).
* Lingo has fully automatic memory management (like VB5, C# and Java).
* Lingo has safety features and pre and post conditions (like Eiffel).
* Lingo has high-level data types such as resizable arrays, lists and tables (like VB5 and Java).
* Lingo can read and write most file types, including text, binary, CSV, XML and dBase.
* Lingo programs use graphical objects (buttons, edit fields etc) that work properly under all versions of Windows.

Lisp
Acronym for list processor, a high-level programming language especially popular for artificial intelligence applications. LISP was developed in the early 1960s by John McCarthy at MIT.

Logo
The Logo Programming Language, a dialect of Lisp, was designed as a tool for learning. The most popular Logo environments have involved the Turtle, originally a robotic creature that sat on the floor and could be directed to move around by typing commands at the computer. Soon the Turtle migrated to the computer graphics screen where it is used to draw shapes, designs, and pictures.

Although there are some versions of Logo that compile, it is generally implemented as an interpreted language.

In the mid 1960s Seymour Papert, a mathematician who had been working with Piaget in Geneva, came to the United States where he co-founded the MIT Artificial Intelligence Laboratory with Marvin Minsky. Papert worked with the team from Bolt, Beranek and Newman, led by Wallace Feurzeig, that created the first version of Logo in 1967.

Lua
Lua is a powerful light-weight programming language designed for extending applications. Lua is also frequently used as a general-purpose, stand-alone language. Lua is free software. Lua combines simple procedural syntax with powerful data description constructs based on associative arrays and extensible semantics. Lua is dynamically typed, interpreted from bytecodes, and has automatic memory management with garbage collection, making it ideal for configuration, scripting, and rapid prototyping.

A fundamental concept in the design of Lua is to provide meta-mechanisms for implementing features, instead of providing a host of features directly in the language. For example, although Lua is not a pure object-oriented language, it does provide meta-mechanisms for implementing classes and inheritance. Lua's meta-mechanisms bring an economy of concepts and keep the language small, while allowing the semantics to be extended in unconventional ways. Extensible semantics is a distinguishing feature of Lua.

Lua is a language engine that you can embed into your application. This means that, besides syntax and semantics, Lua has an API that allows the application to exchange data with Lua programs and also to extend Lua with C functions. In this sense, Lua can be regarded as a language framework for building domain-specific languages.

Lua is implemented as a small library of C functions, written in ANSI C, and compiles unmodified in all known platforms. The implementation goals are simplicity, efficiency, portability, and low embedding cost. The result is a fast language engine with small footprint, making it ideal in embedded systems too.

Miranda Miranda was developed in 1985-86 by David Turner, and is now currently being marketed by Research Software Ltd. of England. Miranda was the successor of the functional languages SASL and KRC. With Miranda, the main goal was to produce a commercial version of a standard non-strict purely functional language. To make Miranda commercially viable, the development environment had to be made very flexible and easy-to-use.

ML/SML
ML is a general-purpose programming language designed for large projects. Standard ML is a safe, modular, strict, functional, polymorphic programming language with compile-time type checking and type inference, garbage collection, exception handling, immutable data types and updatable references, abstract data types, and parametric modules. It has efficient implementations and a formal definition with a proof of soundness.

Function calls in ML, like those of C, Pascal, C++, Java, etc., evaluate their arguments before entering the body of the function. Such a language is called strict or call-by-value, in contrast to some functional programming languages that are lazy or call-by-need. Strict evaluation makes it easier for the programmer to reason about the execution of the program.

Modula-2 / Modula-3 A programming language designed by Niklaus Wirth, the author of Pascal. Wirth created Modula-2 in the late 1970s to answer many of the criticisms leveled at Pascal, which he had created ten years earlier. In particular, Modula-2 addresses Pascal's lack of support for separate compilation of modules and multitasking. Although Modula-2 found support in academia, it is not often used for applications.

Modula-3 is a member of the Pascal family of languages. Designed in the late 1980s at Digital Equipment Corporation and Olivetti, Modula-3 corrects many of the deficiencies of Pascal and Modula-2 for practical software engineering. In particular, Modula-3 keeps the simplicity of type safety of the earlier languages, while providing new facilities for exception handling, concurrency, object-oriented programming, and automatic garbage collection. Modula-3 is both a practical implementation language for large software projects and an excellent teaching language.

Oberon
Oberon is a general-purpose programming language that evolved from Modula-2. Its principal new feature is the concept of type extension. It permits the construction of new data types on the basis of existing ones and provides relations between them. The Oberon project was launched in 1985 by Niklaus Wirth and Jürg Gutknecht. Although the project was originally targeted towards in-house hardware, the language and system have now been ported to many computer platforms. The Oberon system is available free of charge and no registration is required for downloading the material.

Objective-C
Objective-C is a object oriented superset of C with a Smalltalk style (infix) message syntax. It was originally written by Brad Cox and the StepStone corppration in the early 1980s. In 1988, it was adopted as the development language for NeXTstep and was made a part of the GNU gcc compiler in 1992. It is currently used as the principle programming language for MacOSX (which is based on NeXTstep) and as the language for the GNUstep project on Linux and other platforms. Objective-C's weak typing and runtime features distinguish it from C++ and Java.

Pascal
Pronounced pass-kal. A high-level programming language developed by Niklaus Wirth in the late 1960s. The language is named after Blaise Pascal, a seventeenth-century French mathematician who constructed one of the first mechanical adding machines.

Pascal is best known for its affinity to structured programming techniques. The nature of the language forces programmers to design programs methodically and carefully. For this reason, it is a popular teaching language.

Despite its success in academia, Pascal has had only modest success in the business world. Part of the resistance to Pascal by professional programmers stems from its inflexibility and lack of tools for developing large applications.

To address some of these criticisms, Wirth designed a new language called Modula-2. Modula-2 is similar to Pascal in many respects, but it contains additional features.

Perl
Short for Practical Extraction and Report Language, Perl is a programming language developed by Larry Wall, especially designed for processing text. Because of its strong text processing abilities, Perl has become one of the most popular languages for writing CGI scripts. Perl is an interpretive language, which makes it easy to build and test simple programs.

PHP
Self-referentially short for PHP: Hypertext Preprocessor, an open source, server-side, HTML embedded scripting language used to create dynamic Web pages.

In an HTML document, PHP script (similar syntax to that of Perl or C ) is enclosed within special PHP tags. Because PHP is embedded within tags, the author can jump between HTML and PHP (similar to ASP and Cold Fusion) instead of having to rely on heavy amounts of code to output HTML. And, because PHP is executed on the server, the client cannot view the PHP code.

PHP can perform any task that any CGI program can do, but its strength lies in its compatibility with many types of databases. Also, PHP can talk across networks using IMAP, SNMP, NNTP, POP3, or HTTP.

PHP was created sometime in 1994 by Rasmus Lerdorf. During mid 1997, PHP development entered the hands of other contributors. Two of them, Zeev Suraski and Andi Gutmans, rewrote the parser from scratch to create PHP version 3 (PHP3).

Pliant
First of all Pliant is a programming language that seeks to get rid of the barrier between low level languages like C and high level languages like Java or LISP. In order to achive this Pliant works on two levels. First of all there is the "Expression" level in which Pliant resembles LISP in several aspects and which contains a rather powerful "eval" semantic. The second level is the "Instruction" one which is very much like a subset of C. The concept of Pliant says that compiling is nothing else but bringing a program from the Expression to the Instruction level. This is done by a dynamic compiler plus optional "meta functions" which are provided by the program or by libraries. Due to the machine oriented structure of the Instruction level, Pliant programs are then theoretically as fast as ones written in C.

Pliant also removes the need for cryptic configuration files because they are implemented as dynamically interpreted Pliant code. This means that configuration files also have the whole spectrum of conditionals, includes and so on. But the biggest advantage is having a single syntax for all configurations: Pliant.

In order to use this the applications have to be written in Pliant of course which is why Pliant is also a set of standard applications that offer the traditional functionality. Servers for HTTP, FTP, SMTP and POP3 already exist. In this context it should also be noted that Pliant does have a file system including TCP, HTTP, FTP and SMTP which means that URLs can be treated like normal files.

All this lets Pliant blur the border between programming and configuration which was one of the motivations for developing it. The step that has to be overcome in order to get into programming is lowered since the same language framework used for configuration can be used for programming.

And finally Pliant is also a "high-level" operating system. It runs directly on the Linux kernel or on a standard Posix or Windows system. Pliant is then the only user-space process which can work free of glue code and legacies. Since there is only a single process needed to run a HTTP server, the system is potentially very stable.

Prolog
Prolog, a pure logic language was born of a project aimed not at producing a programming language but at processing natural languages; in this case, French. The project gave rise to a preliminary version of Prolog at the end of 1971 and a more definitive version at the end of 1972. This article gives the history of this project and describes in detail the preliminary and then the final versions of Prolog. The authors also felt it appropriate to describe the Q-systems since it was a language which played a prominent part in Prolog's genesis.

Python
Python is an interpreted, interactive, object-oriented programming language developed by Guido van Rossum. It is often compared to Tcl, Perl, Scheme or Java.

Python combines remarkable power with very clear syntax. It has modules, classes, exceptions, very high level dynamic data types, and dynamic typing. There are interfaces to many system calls and libraries, as well as to various windowing systems (X11, Motif, Tk, Mac, MFC). New built-in modules are easily written in C or C++. Python is also usable as an extension language for applications that need a programmable interface.

Although Python is copyrighted, the source code is open source, and unlike GNU software, it can be commercially re-sold.

R
The R programming language, sometimes described as "GNU S". R is considered by its developers to be an implementation of S, with semantics derived from Scheme. There are some important differences, but much code written for S runs unaltered under R. R provides a wide variety of statistical (linear and nonlinear modelling, classical statistical tests, time-series analysis, classification, clustering, ...) and graphical techniques, and is highly extensible. The S language is often the vehicle of choice for research in statistical methodology, and R provides an Open Source route to participation in that activity.

One of R's strengths is the ease with which well-designed publication-quality plots can be produced, including mathematical symbols and formulae where needed. Great care has been taken over the defaults for the minor design choices in graphics, but the user retains full control.

Rebol
REBOL was designed over a 20 year period by Carl Sassenrath, the system architect responsible for the world's first multitasking multimedia operating system, the Commodore Amiga OS. The first implementation of REBOL (pronounced like "rebel yell") was released in 1997 to a small group of users running on three operating systems, and today REBOL has grown to reach more than 1,000,000 users running on more than 40 OS platforms.

REBOL is not a traditional computer language like C, BASIC, or Java. Instead, REBOL was designed to solve one of the fundamental problems in computing: the exchange and interpretation of information between distributed computer systems. REBOL accomplishes this through the concept of relative expressions (which is how REBOL got its name as the Relative Expression-Based Object Language).

Relative expressions, also called "dialects", provide greater efficiency for representing code as well as data, and they are REBOL's greatest strength. For example, REBOL can not only create a graphical user interface in one line of code, but it can also send that line as data to be processed and displayed on other Internet computer systems around the world.

REBOL's consistent architecture provides powerful range of capabilities, from its small kernel interpreter (called REBOL/Core) up to an entire Internet Operating System (called REBOL/IOS).

REXX
A programming language designed by Michael Cowlishaw of IBM UK Laboratories. Rexx is an acronym which stands for "Restructured Extended Executor Language". In Mike's own words: "REXX is a procedural language that allows programs and algorithms to be written in a clear and structured way." REXX doesn't look that different from any other procedural language.

What makes REXX different from most other languages is that it is also designed to be used as a macro language by arbitrary application programs. The idea is that application developers don't have to design their own macro languages and interpreters. Instead they use REXX as the macro language and support the REXX programming interface.

If a REXX macro comes across an expression or function call that it cannot resolve, it can ask the application to handle it instead. The application only has to support the features that are specific to it, freeing the developer from handling the mundane (and time-consuming) task of writing a language interpreter. And if all applications use REXX as their macro language, the user only has to learn one language instead of a dozen.

RPG
Short for Report Program Generator, a programming language developed by in the mid-60's for developing business applications, especially generating reports from data.

The newest version, RPG IV, is still widely used on AS/400 systems. Not to be confused with Role-Playing Games, computer games where one or more players adopt a role and act it out in a virtual reality.

Ruby
Ruby is free interpreted scripting language,created by Yukihiro Matsumoto, for quick and easy object-oriented programming. It has many features to process text files and to do system management tasks (as in Perl). It is simple, straight-forward, extensible, and portable.

Ruby has simple syntax, inspired by Eiffel and Ada, exception handling features, like Java or Python, to make it easy to handle errors, in a complete, full, pure object oriented language: OOL. This means all data in Ruby is an object, not optional, as with Python or Perl, but in the sense of Smalltalk: no exceptions. Ruby features blocks in its syntax (code surrounded by '{' ... '}' or 'do' ... 'end'), and allows for C extensions through an extension API. Ruby is developed mostly on Linux, but works on many types of UNIX, DOS, Windows 95/98/Me/NT/2000/XP, MacOS, BeOS, OS/2, etc.

S / S system
S is a language and system for organizing, visualizing, and analyzing data. It has been a project of statistics research at Bell Labs since 1976, evolving continually through that time. In 1998, S became the first statistical system to receive the Software System Award, the top software award from the ACM.

S has from the start been aimed at programming with data; that is, at describing to the computer some graphical view, numerical summary, statistical model, or other information you want to produce. It occupies a middle ground between packages that emphasize standard operations and research projects in language design that start from a more abstract goal. S has always been designed to be used in practice, but with an emphasis on users who wanted to turn new ideas into software.

S was invented at Bell Labs, and continues to be involved very much in its evolution, the implementations actually available, S-Plus and R, are distinct from the S language itself.

S-Lang
S-Lang is a free multi-platform programmer's library designed to allow a developer to create robust multi-platform software. It provides facilities required by interactive applications such as display/screen management, keyboard input, keymaps, and so on. The most exciting feature of the library is the slang interpreter that may be easily embedded into a program to make it extensible.

S-Plus
S-Plus products are distributed by the MathSoft Corporation. In particular, the S-Plus language is based on the S software from Bell Labs; MathSoft has an exclusive license with Lucent Technologies to distribute software based on S from Bell Labs.

Scala
Scala is a modern multi-paradigm programming language designed to express common programming patterns in a concise, elegant, and type-safe way. It smoothly integrates features of object-oriented and functional languages.

Scala is a pure object-oriented language in the sense that every value is an object. Types and behavior of objects are described by classes and traits. Class abstractions are extended by subclassing and a flexible mixin-based composition mechanism as a clean replacement for multiple inheritance.

Scala is also a functional language in the sense that every function is a value. Scala provides a lightweight syntax for defining anonymous functions, it supports higher-order functions, it allows functions to be nested, and supports currying. Scala's case classes and its built-in support for pattern matching model algebraic types used in many functional programming languages.

Furthermore, Scala's notion of pattern matching naturally extends to the processing of XML data with the help of regular expression patterns. In this context, sequence comprehensions are useful for formulating queries. These features make Scala ideal for developing applications like web services.

Scala is designed to interoperate well with popular programming environments like the Java 2 Runtime Environment (JRE) and the .NET CLR. In particular, the interaction with mainstream object-oriented languages like Java and C# is as smooth as possible. Scala has the same compilation model (separate compilation, dynamic class loading) like Java and C# and allows access to thousands of high-quality libraries.

Scheme Scheme is a statically scoped and properly tail-recursive dialect of the Lisp programming language invented by Guy Lewis Steele Jr. and Gerald Jay Sussman. It was designed to have an exceptionally clear and simple semantics and few different ways to form expressions. A wide variety of programming paradigms, including imperative, functional, and message passing styles, find convenient expression in Scheme.

Smalltalk
An object-oriented operating system and programming language developed at Xerox Corporation's Palo Alto Research Center. Smalltalk was the first object-oriented programming language (Simula was the very first). Although it never achieved the commercial success of other languages such as C++ and Java, Smalltalk is considered by many to be the only true object-oriented programming environment, and the one against which all others must be compared.

Squeak
Squeak is an open, highly-portable Smalltalk-80 implementation whose virtual machine is written entirely in Smalltalk, making it easy to debug, analyze, and change. To achieve practical performance, a translator produces an equivalent C program whose performance is comparable to commercial Smalltalks.

Other noteworthy aspects of Squeak include

* real-time sound and music synthesis written entirely in Smalltalk
* extensions of BitBlt to handle color of any depth and anti-aliased image rotation and scaling
* network access support that allows simple construction of servers and other useful facilities
* it runs bit-identical on many platforms (Windows, Mac, Unix, and others)
* a compact object format that typically requires only a single word of overhead per object
* a simple yet efficient incremental garbage collector for 32-bit direct pointers
* efficient bulk-mutation of objects

Squeak is available for free via the Internet, at this and other sites. Each release includes platform-independent support for color, sound, and network access, with complete source code. Originally developed on the Macintosh, members of its user community have since ported it to numerous other platforms including Windows 95 and NT, Windows CE (it runs on the Cassiopeia and the HP320LX), all common flavors of UNIX, Acorn RiscOS, and a bare chip (the Mitsubishi M32R/D).

The Squeak Smalltalk system bears no relation to the "Squeak" language designed by Rob Pike and Luca Cardelli in 1985, nor to its successor, "Newsqueak".

Tcl / Tk
Tool Command Language is a simple-to-learn yet very powerful language. Its syntax is described in just a dozen rules, but it has all the features needed to rapidly create useful programs in almost any field of application - on a wide variety of platforms.

Tk started out as a graphical toolkit for Tcl, but has since been modified to work on a variety of languages such as Perl and Python. TK allows you to develop graphical applications that run on Windows, Linux, MacOSX and many other platforms.

VBScript
Visual Basic Script is owned, maintained, and developed by Microsoft for Microsoft products.

Visual Basic Scripting brings active scripting to a wide variety of environments, including Web client scripting in Microsoft Internet Explorer and Web server scripting in Microsoft Internet Information Service.

If you already know Visual Basic or Visual Basic for Applications (VBA), VBScript will be very familiar. Even if you do not know Visual Basic, once you learn VBScript, you are on your way to programming with the whole family of Visual Basic languages. VBScript talks to host applications using Windows Script.

VB.NET
Owned, maintained, and developed by Microsoft for Microsoft products. Microsoft Visual Basic for the .NET platform. Although it shares the same name, VB.NET has been dramatically changed to fit the .NET platform.

Visual Basic
A programming language and environment developed by Microsoft. Based on the BASIC language, Visual Basic was one of the first products to provide a graphical programming environment and a paint metaphor for developing user interfaces. Instead of worrying about syntax details, the Visual Basic programmer can add a substantial amount of code simply by dragging and dropping controls, such as buttons and dialog boxes, and then defining their appearance and behavior.

Although not a true object-oriented programming language in the strictest sense, Visual Basic nevertheless has an object-oriented philosophy. It is sometimes called an event-driven language because each object can react to different events such as a mouse click. Since its launch in 1990, the Visual Basic approach has become the norm for programming languages. Now there are visual environments for many programming languages, including C, C++, Pascal, and Java. Visual Basic is sometimes called a Rapid Application Development (RAD) system because it enables programmers to quickly build prototype applications.

Windows Script

With Windows Script, browsers and other host applications do not require special integration code for each scripting component. Windows Script enables a host to compile scripts, obtain and call entry points, and manage the namespace available to the developer. With Windows Script, language vendors can create standard language run times for scripting.

Microsoft is working with various Internet groups to define the Windows Script standard so that scripting engines can be interchangeable. Windows Script is used in Microsoft® Internet Explorer and in Microsoft® Internet Information Service.


Programming Tutor/Learning Sites


How to think like a computer scientist
Dr. Dobb's Journal

Mainpage     Programming Terms     Programming Technologies    
1