It may be inferred that programming languages were developed along with the computer, but this information is a misconception. Programming languages outdate computers. In fact, some would say the first programming language was actually developed in Ancient Greece, millennia before the computer was ever invented or even conceived. In Antikythera, an island south of mainland Greece, there had been a mechanism that used gears to calculate the Olympiads and the Metonic cycle. Centuries later in 1206, Al-Jazari invented automata which used pegs and cams within a wooden drum. It is fair to consider these systems programs, but defining their workings as languages is difficult. Still, it can be argued that true programming language might have never been possible if not for their influence. Most experts and text books would say the first programming language was written on punch cards. It was read by a machine designed by Herman Hollerith sometime during the late 1880s; however it was designed to control the machine, not store data.
The History of Programming Languages
The first programming languages used holes in punched cards to instruct a machine or device on the movements it must make to complete a task. A computer programming language is a set of instructions that tell a machine, device or computer what to do. The people who created these punched cards were called “keypunch” operators, but in essence, they were some of the world’s first programmers.
By the 1940s, work was underway on the world’s first computers. With these developments came the need to create programming languages to interface with the computer and provide the machine instructions. Machine languages work within computer architecture and define computer operations. Most programmers don’t write programming code in machine languages as it is cumbersome and difficult to write and work with. Often called the “native” code, most programmers now use higher level programming languages to write the needed machine coding.
Prominent People in the History of Programming Languages
Herman Hollerith first thought of using keypunch cards to format data collected from the U.S. Census. A statistician, the idea occurred to him while watching a train conductor use punched hole positions on a train ticket to identify where passengers sat. Hollerith developed an electric machine that tabulated punch cards containing statistical data and then sorted them. He received a patent for his device in 1889 and used it during the 1890 census to tabulate census statistics.
The Eniac computer designed for use by the military in World War II; its intent was to compute ballistics firing tables. The Eniac computer used a switchboard plug-in for its programming. Programmers would plug in electrical wires into sockets in key locations on the computer’s board. H. H. Goldstine and John von Neumann developed the Eniac code set that the female programmers used to code the computer. John von Neumann is also credited with the idea of creating an operating system language.
Other prominent people who figure into the history of programming languages include the developer of IBM’s first assembler, Nathaniel Rochester; Fortran developer John Backus (used for numeric and scientific computations); Common Business Oriented Language or COBOL developers comprised of the Short Range Committee headed up by Grace Hopper; Visual Basic developer Alan Cooper; Dennis Ritchie, the developer of C and Bjarne Stroustrup, C++ developer.
Early programmers had to program computers one instruction at a time using binary or hex code. Because this was a tedious and time-consuming process, many errors occurred. It was hard to proofread the programs and changing the program was often difficult. The reason: each code had to include absolute addressing – a specific address in memory. Not many people enjoyed this tedious process so computers often did not have software to run them. Original software often cost up to four times the cost of the computer. This led to the development of assembly language to represent the machine code in symbolic form. While this made programming easier – to many it was not easy enough because the hardware wouldn’t support some of the features programmers wanted and needed. This led to the development of high level languages to make programming easier.
The development of Formula Translation at IBM, known as FORTRAN, made it easier for programmers to do their jobs. Many programmers consider FORTRAN the first compiled language, which was released in 1957 and designed for the IBM 704. But because FORTRAN was proprietary to IBM, a new language named ALGOL 58, short for algorithmic language and based on FORTRAN was designed to be independent and universal.
Other languages developed through the years include variations of ALGOL, SNOBOL, BASIC, a computer language developed for nonscientific users at Dartmouth College and celebrated as one of the most common languages today and multiple variations of FORTRAN. Other programs include Pascal, Prolog, Common LISP, ADA, C, C++, QuickBASIC, Visual BASIC and Java. The languages used to code websites PHP, HTML, Ruby, Perl and more.
Elements of Programming Languages
Most computer programs require specific elements for the programming languages to work properly. The first group of elements includes “objects” or “variables” where data or pieces of data are stored while a program works on them. Variables define the way a program talks about the data (memory locations). Variables may be defined as “local” only available to certain parts of the program or “global,” accessible anywhere within the program.
“Expressions,” another element of programming languages, involve the computation of new values from old ones. “Assignments” store these values into variables. “Conditionals” help define whether an event or condition is true or false. Variables may be defined by “data types,” such as whether the value is text, numerical, currency or some other assigned type.
“Statements” contain the instructions that detail the program activity and may compute expressions, handle assignments or call functions, another element in programming languages. “Call functions” along with the other elements make up the body of the program. “Control Flow Constructs” the order statements are executed. Some statements only occur when a condition is met, such as when it’s true or false. A loop occurs when several statements, or a sequence of statements are repeated until the conditions are met. “Functions” comprise a set of statements, control flow constructs and declarations. Another name for function is a procedure, routine or subroutine.
Design and Implementation
When designing a programming language, the programmer first looks at what the program needs to solve. Programmers design computer languages with specific purposes in mind. Some may be created from scratch, while others may be combined with other languages. The need for a variety of programming languages arises from the variations and complexities of problems the language needs to calculate or solve. Programming languages can be small in nature, such as tiny scripts to complete tasks or large, such as those used in operating systems.
When software designers implement a new program, they may use data from a live system, but implement the program in a test environment to avoid corrupting the live data. Several tests of the language are run to ensure it functions properly, and then it is rolled out into the live environment. When used in the live environment, programmers often run parallel systems to ensure no data is lost during the implementation. Once used in a live environment, users may report bugs with the language that create the need for “fixes.”
Programming languages are used in a variety of scenarios. While thousands of computing programming languages have been created, programming languages require precision and exactness. The old saying, “garbage in, garbage out,” means that if you provide the wrong set of instructions within the language, the results will not be what you want them to be. Programs operate on specific commands—they do what they are told to do, no more and no less. The programming language defines the expected behavior or result. Programming languages require specific definition, instructions and the expected results when the program is executed.
While it may be ideal to try and classify programming languages by the languages before them, because most languages comprise bits and elements of multiple preceeding programs—this is not an easy task. Most programming languages arise from a combined need to calculate a new problem and will take bits and pieces of code from other programming languages. While there are relationships between programming languages, each language is generally its own new creation, morphed by the needs of the designer and the problem solving aspect of the language. Many computer programmers have desired to find a “universal” language, but computer languages are as diverse as the programmers who create them. Each language carries the virtual thumbprint of its designer and evolves from the languages before it.
In broad terms, programming languages can be classified by the problems they solve, the data types they use and the intended use of the language. Some may be object or variable-driven, or concurrent language driven, calculating parallel threads at the same time. In the general sense, programming languages can be grouped by their end purposes: general, scripting, system, domain-specific, concurrent or any combination of these.