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.
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 195457 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.
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.
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.
Suggestions for Further Reading
- Common Gateway Interface - CGI
- CRM, Customer Relationship Management
- Data Warehouse and Data Mining Technologies
- Relational Databases
- DHTML Scripts - Resources For Dynamic Websites
- Domain Name Registration Services
- Ecommerce and Online Store Solutions
- Online Marketing Solutions and Promotions
- Essays on Information Technology
- Free Software, Tools and Applications
- Computer and Web Graphics
- HyperText Markup Language
- Html Tools for World Wide Web
- Java Programming language, Tutorials, Tools and Applets
- Computer Networks
- Computer Operating Systems
- OS X Mountain Lion and Parallels Desktop For Mac
- Perl Scripts - Resources for CGI and Perl Programming
- Programming Languages
- Project Management
- Search Engines and SEO
- Web design and Website development
- Best Web Hosting Services
- Web Resources and Web Tools
- Web Tools And Web Resources For The Web Masters
Attribution: Some information for this article has been adapted from wikipedia under Creative Commons Attribution-ShareAlike License.