Programming language, or often defined as computer language or machine languange, is a language used by human to communicate with computer or machine. As we all know, the purpose of language is to bridge communication between two entities so that both of the mentioned parties can communicate and understand the need of one another.
As we are talking about programming language or computer language, it means that we are trying to communicate with machine or computer. It seems impossible for machine or computer to understand human using human language. So how could human possibly communicate with machine? Study said that the only way to communicate with machine, is using machine language. Machine language differs from the ordinary human language because machines or computers can only read 1 and 0, or often called as binary digits. Machines can only understand instructions defined by algorithms.
Programming language often defined as a notation for writing programs, which are specifications of a computation or algorithm. The description of a programming language is usually split into the two components of syntax (form) and semantics (meaning). It is generally accepted that a complete specification for a programming language includes a description, possibly idealized, of a machine or processor for that language. In most practical contexts, a programming language involves a computer performing some kind of computation or algorithm and possibly control external devices such as printers, disk drives, robots, and so on.
There are programmable machines that use a set of specific instructions, rather than general programming languages. Early ones preceded the invention of the digital computer, the first probably being the automatic flute player described in the 9th century by the brothers Musa in Baghdad, during the Islamic Golden Age. Since the early 1800s, programs have been used to direct the behavior of machines such as Jacquard looms, music boxes and player pianos. The programs for these machines (such as a player piano’s scrolls) did not produce different behavior in response to different inputs or conditions.
Programming languages usually contain abstractions for defining and manipulating data structures or controlling the flow of execution. The practical necessity that a programming language support adequate abstractions is expressed by the abstraction principle. This principle is sometimes formulated as a recommendation to the programmer to make proper use of such abstractions.
The term computer language is sometimes used interchangeably with programming language. However, the usage of both terms varies among authors, including the exact scope of each. One usage describes programming languages as a subset of computer languages. Similarly, languages used in computing that have a different goal than expressing computer programs are generically designated computer languages. For instance, markup languages are sometimes referred to as computer languages to emphasize that they are not meant to be used for programming.
Instructions from the syntax can be executed directly when they are in the computer manufacturer-specific numerical form known as machine language, after a simple substitution process when expressed in a corresponding assembly language, or after translation from some “higher-level” language.
A machine language consists of the numeric codes for the operations that a particular computer can execute directly. The codes are strings of 0s and 1s, or binary digits (“bits”), which are frequently converted both from and to hexadecimal (base 16) for human viewing and modification. Machine language instructions typically use some bits to represent operations, such as addition, and some to represent operands, or perhaps the location of the next instruction. Machine language is difficult to read and write, since it does not resemble conventional mathematical notation or human language, and its codes vary from computer to computer.
Assembly language is one level above machine language. It uses short mnemonic codes for instructions and allows the programmer to introduce names for blocks of memory that hold data. One might thus write “add pay, total” instead of “0110101100101000” for an instruction that adds two numbers. Assembly languange isn’t executable in machines. Assembly code is converted into executable machine code by an utility program called assembler and the conversion process called assembly, as in assembling the source code.
Thousands of different programming languages have been created, and more are being created every year. Many programming languages are written in an imperative form written as a sequence of operations to perform while other languages use the declarative form which is focused on the specified desired result, not how to achieve it.
Some languages are defined by a specification document (for example, the C programming language is specified by an ISO Standard) while other languages (such as Perl) have a dominant implementation that is treated as a reference. Some languages have both, with the basic language defined by a standard and extensions taken from the dominant implementation being common.
Programming languages share similarities with natural languages related to their purpose as media for communication, having a syntactic (structure of language) form separate from its semantics (meaning of language). But as artificial constructs, they also differ in fundamental ways from languages that have evolved through usage. A significant difference is that a programming language can be fully described and studied in its entirety, since it has a precise and finite definition meanwhile natural languages have changing meanings given by their users in different communities. While constructed languages are also artificial languages designed from the ground up with a specific purpose, they lack the precise and complete semantic definition that a programming language has.
Natural language programming has been proposed as a way to eliminate the need for a specialized language for programming. However, this goal remains distant and its benefits are open to debate. Edsger W. Dijkstra took the position that the use of a formal language is essential to prevent the introduction of meaningless constructs, and dismissed natural language programming as “foolish”. Alan Perlis was similarly dismissive of the idea. Hybrid approaches have been taken in Structured English and SQL.
Programming language has become the fundamentals of many technologies that’s developing rapidly nowadays. In the era of technologies, able to understand programming language becomes very beneficial for people, especially to those who desires a non-formal job with a high amount of salary. People with the ability of programming have a higher chance to get a job or even being a succesful freelancer nowadays because the high needs of programmers in this technological era.