In creating software that behaves and “thinks” in ways dramatically different from that of human beings, a programming languages provide a mean for defining the structure and behavior of the finished product. When humans communicate and relay orders to computers, their expressions take the form of programming languages. Thus, the essential task of a programming language is to describe data related to computers and then to show how the data is changed or impacted by the performance of functions. Programming languages are composed of two kinds of information, syntactic and semantic. Syntax relates to the structure of a programming language, and semantic data to the information it is intended to impart. Syntax may be expressed as text, made up, like human languages, of words, symbols and numerals, to express functions, while others take the form of graphics showing the relationship between different aspects of software in terms of spatial relations between visual symbols.
In defining what can be said to constitute a programming language, scholars of the programming field usually identify such key elements as the goal of and ability to enable computers to perform computations and algorithms that allow them to perform their functions. Another essential quality of programming languages that is usually identified is the presence of abstractions, which allow data structures to be shaped and ordered and the rate of performance to be controlled. In part, this aspect of the programming language definition is intended to remind programmers to make such use of abstractions to perform these functions. Programming languages, then, are understood and classified in terms of the computations that they are able to express to control software. Other languages with more limited utility are not considered to fully constitute programming languages.
The means for understanding the derivation of programming languages possesses more complexity than the equivalent comparison of human languages. Though families of languages can be identified, the ideas they express are often spread out over a wide array of dissimilar types. In addition, a number of different methods exist for understanding the relation of one programming language to another, in terms of various permutations of how they are operate and the goals they are intended to accomplish. Two primary means by which programming languages are classified are as programming paradigms and in terms of their “intended domain of use.” Programming paradigms are determined according to how a programming language announces its order to the software, which can vary from orders passed along dictatorially to answers that await activation by queries. Domain of use, as its name suggests, looks at the field which the software is intended to serve.
Another point of departure from the model of human languages exists in the difficulty found in determining how widely used any given programming language might be. Different kinds of programming language are popular in different kinds of environments, from corporate business to academic research settings. Programming languages also vary in the way in which they take up human attention, whether they demand greater amounts of time from programmers or contain larger quantities of information.


