|
Computer programming is the art and skill of creating a computer program, a defined set of instructions in
source code that a computer can
execute. Creating programs has elements of art, science, mathematics, and engineering.
- "There is no substitute for a working program"
- --Herbert Simon, a founder of artificial intelligence and Nobel
laureate
Programs versus algorithms
An algorithm is a description of how a program executes a finite operation. In
a sense, an algorithm is an abstracted program. All but the most simple programs contain many implementations of algorithms, as a
house is constructed by walls, doors, and floors.
Programming languages
Main article: programming language
A program is written in a programming language that is
translated into machine language executable by a computer, although
it is possible to write directly in machine code. Programs written in any programming language can be translated into machine
language, and its human-readable notation, assembly language.
Programming languages can be of different programming
paradigms and expose different levels of complexity to the programmer. So, each is suited to certain tasks.
Software development
Main article: software engineering
Software is a mass noun for
computer programs and data. The accompanying documentation is also considered an essential part of the software, even though it
doesn't involve any actual programming.
Creating software involves:
- Recognizing the need for a program to solve a problem.
- Planning the program and selecting the tools (including hardware platforms, languages, databases, browsers, development kits
) to solve the problem.
- Writing the program in the programming language of
choice.
- Translation: translating the human-readable source code into either machine-readable executable code, which is done by compilers, assemblers or other tools, such as interpreters, which directly execute source languages (such as Lisp, SQL, and
scripting languages) at a higher level than libraries of
machine code. See metaprogramming.
- Testing the program to make sure it works; if not, return to
step 3 (see code and fix).
- Documentation, deployment and delivery
These steps are collectively known as software
development. The skills required to be a coder require the ability to
mentally translate concepts of the first step to expressions in the target programming languages.
A revision control system for source code is a valuable resource
for a programmer. It facilitates the reversion of changes, and the comparison of different methods used in the code.
History
Hero of Alexandria in the first century invented automated
theatres that used analogue programming to control the puppets, doors, lights, and sound effects.
Ada Lovelace, daughter of Anabella and Lord Byron (the poet), was the first recognised computer programmer. Anabella gave her love of mathematics to Ada, who after meeting Charles Babbage, translated and expanded a description of his analytical engine. Even though Babbage never completed construction of any of his machines, the work that he and Ada did earned her the title of the world's first
computer programmer, see Ada Byron's notes on the analytical engine. The Ada programming language is named for her.
One early programmer known to have completed all the steps for unaided computation, including compiling and testing, is
W.J. Eckert. This man's work predated the rise of computer languages,
because he used the language of mathematics to solve astronomical problems. However, all the
ingredients were there: he operated a computing laboratory for Columbia University with
equipment provided by IBM, complete with a customer service
division, and special purpose engineering consultants, in New York
City, in the 1930s, using punch cards
to hold the intermediate results of his calculations, and then formatting the punch cards to control the printout of the answers,
just as in the work for the census decades earlier. He even had debugging techniques such as color coding, cross-footing,
verifying and duplicating. One difference between Eckert and today's programmers is that the example of his work influenced the
Manhattan project. His work was recognized by astronomers from
Yale University Observatory, Princeton University Observatory, U.S. Naval Observatory, Harvard College
Observatory, Student's Observatory of the University of California, Ladd Observatory of Brown
University and Sproul
Observatory of Swarthmore College.
Alan Turing is often considered the father of computer science, and by proxy, programming.
He was responsible for helping design and program a computer to break the German ENIGMA
code during World War Two.
See also
External links
|