About programming language
A programming language is a stylized communication technique intended to
be
used for controlling the behavior of a machine (often a computer).
Like human languages programming languages have syntactic and semantic
rules used to define meaning.
Thousands of different programming languages have been created and
new ones are created every year. (see list of programming languages).
Few languages ever become sufficiently popular that they are used by
more than a few people, but professional programmers are likely to use
dozens of different languages during their career.
Definitions of programming language
There is no universally agreed definition for the term programming
language. The following is a list of some of the methods that have been
used to categorize a language as being a programming language.
- What it is used for. For instance, a programming language is a
language used to write programs. - Those involved in the interaction. For instance, a programming
language differs from natural languages in that natural languages
are used for interaction between people, while programming languages
are used for communication from people to machines (this rules out
languages used for computer to computer interaction). - The constructs it contains. For instance, a programming language
contains constructs for defining and manipulating data structures,
and for controlling the flow of execution. - Its expressive power. The theory of computation provides a
classification of languages based on the range of computations
expressible by them, with the most expressive language being one
that is Turing complete (the language needs to contain at least a
looping construct and a method of storing values, ie, variables).
Any program that can be written in a language that is Turing
complete can also be written in another language that is Turing
complete. Some examples of languages that are not Turing complete
are pure HTML (the use of embedded PHP or Javascript makes it Turing
complete) and SQL (SQL vendors invariably add language extensions
that create a Turing complete language, e.g., PL/SQL).
Features of a Programming Language
Each programming language can be thought of as a set of formal
specifications concerning syntax, vocabulary, and meaning.
These specifications usually include:
- Type system
- Data structures
- Instruction and control flow
- Design philosophy
- Compilation and interpretation
Those languages that are widely used – or have been used for a
considerable period of time – have standardization bodies that meet
regularly to create and publish formal definitions of the language and
discuss the extension of existing definitions.
History of programming languages
The development of programming languages follows closely the
development of the physical and electronic processes used in today's
computers.
Programming languages have been under development for years and will
remain so for many years to come. They got their start with a list of
steps to wire a computer to perform a task. These steps eventually found
their way into software and began to acquire newer and better features.
The first major languages were characterized by the simple fact that
they were intended for one purpose and one purpose only, while the
languages of today are differentiated by the way they are programmed in,
as they can be used for almost any purpose. And perhaps the languages of
tomorrow will be more natural with the invention of quantum and
biological computers.
Charles Babbage is often credited with designing the first
computer-like machines, which had several programs written for them (in
the equivalent of assembly language) by Ada Lovelace.
In the 1940s the first recognizably modern, electrically powered
computers were created. Some military calculation needs were a driving
force in early computer development, such as encryption, decryption,
trajectory calculation and massive number crunching needed in the
development of atomic bombs. At that time, computers were extremely
large, slow and expensive: advances in electronic technology in the
post-war years led to the construction of more practical electronic
computers. At that time only Konrad Zuse imagined the use of a
programming language (developed eventually as Plankalkül) like those of
today for solving problems.
Subsequent breakthroughs in electronic technology (transistors,
integrated circuits, and chips) drove the development of increasingly
reliable and more usable computers. The first widely used high-level
programming language was FORTRAN, developed during 1954–57 by an IBM
team led by John W. Backus. It is still widely used for numerical work,
with the latest international standard released in 2004. A Computer
Languages History graphic shows a timeline from FORTRAN in 1954.
Shortly after, Lisp was introduced. Lisp was based on lambda
calculus, and is far more regular in its syntax than most non-Lisp
derived languages.
Dennis Ritchie developed the C programming language, initially for
DEC PDP-11 in 1970.
During the 1970s, Xerox PARC developed Smalltalk, an object oriented
language.
Based on the development of Smalltalk and other object oriented
languages, Bjarne Stroustrup developed a programming language based on
the syntax of C, called C++ in 1985.
Sun Microsystems released Java in 1995 which became very popular as
an introductory programming language taught in universities. Microsoft
presented the C# programming language in 2001 which is very similar to
C++ and Java. There are many, many other languages
Object-oriented programming language
An object-oriented programming language (also called an OO language)
is one that allows or encourages, to some degree, object-oriented
programming methods.
Simula (1967) is generally accepted as the first language to have the
primary features of an object-oriented language. It was created for
making simulation programs, in which what came to be called objects were
the most important information representation. Smalltalk (1972 to 1980)
is arguably the canonical example, and the one with which much of the
theory of object-oriented programming was developed.
OO languages can be grouped into several broad classes, determined by
the extent to which they support all features and functionality of
object-orientation and objects: classes, methods, polymorphism,
inheritance, and reusability.
- Languages called "pure" OO languages, because everything
in them is treated consistently as an object, from primitives such
as characters and punctuation, all the way up to whole classes,
prototypes, blocks, modules, etc. They were designed specifically to
facilitate, even enforce, OO methods. Examples: Smalltalk, Eiffel,
Ruby. - Languages designed mainly for OO programming, but with some
procedural elements. Examples: Java, Python. - Languages that are historically procedural languages, but have
been extended with some OO features. Examples: C++, Fortran 2003,
Perl. - Languages with most of the features of objects (classes, methods,
inheritance, reusability), but in a distinctly original, even
elegant, form. Examples: Oberon, and successor Oberon-2. - Languages with abstract data type support, but not all features of
object-orientation, sometimes called object-based languages.
Examples: Modula-2 (with excellent encapsulation and information
hiding), Pliant.
Inheritance and polymorphism are usually used to reduce code bloat.
Abstraction and encapsulation are used to increase code clarity, quite
independent of the other two traits. [Source: Compiled from Wikipedia]
Links to Programming Languages
Essentials of Programming Languages: The goal of this book is to give students a deep, hands-on understanding of the essential concepts of programming languages, using Scheme as an executable
metalanguage. Because Scheme is a wide-spectrum language, it enables us to write both at the very high level needed to produce a concise, comprehensible interpreter and at the much lower level needed to understand how that interpreter might be coded in assembly language, or transformed into a compiler.
Resources for Programming Language Research:
A collection of information and resources for research in programming language
theory, design, implementation, and related areas. Additions and corrections are
welcome!
Visual Language Research Bibliography:
This page is a structured bibliography of papers pertaining to visual language (VL)
research. It also contains a brief list of links to other, related resources
about visual language research.
Programming Languages:
Topics within this page: Object-Oriented Languages, Documentation Generator
Tools, Functional Languages, Free Implementations, Logic Programming Languages,
Language Design Issues/Mistakes, Text Formatting Languages (TeX,HTML).
Dictionary of Programming Languages:
Welcome to the Dictionary of Programming Languages, a compendium of computer
coding methods assembled to provide information and aid your appreciation for
computer science history. The dictionary currently has over 120 entries.
THE Language List:
The largest and most comprehensive list on the net by the CUI group at
University of Geneva and Bill Kinnersley, with good search capability, and
links to FTP sites for compilers and tools. Some of the links on the list may be
outdated.
The Random Programming Languages List:
Have you ever programmed something just for fun? Written a program just for the
challenge of writing it? Have you ever wondered whether there are languages that
are more fun than C? Have you ever wondered what life would be like without our
nifty tools? If so, this is the page for you. It might be the page for you even
if you didn't answer yes, but it is definitely the page for you if you did.
Programming Languages: Every
serious student of computing should be familiar with a range of different
languages (for example, I used a mixture of C, C++, Delphi, JavaScript, Perl and
Tcl/Tk to create this CD). This collection includes compilers and other
resources for a wide variety of programming languages, including conventional
procedural languages, object-oriented languages, functional languages, logic
programming languages, scripting languages, and some just plain weird languages.
You can choose which are which!
Review of Programming Languages:
When Tunes is ready, this page will be made a query-driven database (with
standard query forms) where languages/implementations couples will be classified
upon the characteristics below. Meanwhile, please forgive the bad quality of
this page, and think about enhancing it by your contributions.
Google Directory - Programming Languages:
The content of the Google directory is based on the Open Directory and is
enhanced using Google's own technology.