Computer programming (often shortened to
programming or coding) is the process
of writing, testing, debugging/troubleshooting, and
maintaining the
source code of
computer programs. This source code is written
in a
programming language. The code may be a
modification of an existing source or something
completely new. The purpose of programming is to
create a program that exhibits a certain desired
behavior (customization). The process of writing
source code often requires expertise in many
different subjects, including knowledge of the
application domain, specialized
algorithms and
formal logic.
[edit]
Overview
Within
software engineering, programming (the
implementation) is regarded as one phase in a
software development process.
There is an ongoing debate on the extent to which
the writing of programs is an
art, a
craft or an
engineering discipline.[1]
Good programming is generally considered to be the
measured application of all three, with the goal of
producing an efficient and evolvable software
solution (the criteria for "efficient" and
"evolvable" vary considerably). The discipline
differs from many other technical professions in
that
programmers generally do not need to be licensed
or pass any standardized (or governmentally
regulated) certification tests in order to call
themselves "programmers" or even "software
engineers." However, representing oneself as a
"Professional Software Engineer" without a
license from an accredited institution is illegal in
many parts of the world.
Another ongoing debate is the extent to which the
programming language used in writing
computer programs affects the form that the
final program takes. This debate is analogous to
that surrounding the
Sapir-Whorf hypothesis
[2]
in
linguistics, that postulates that a particular
language's nature influences the habitual thought of
its speakers. Different language patterns yield
different patterns of thought. This idea challenges
the possibility of representing the world perfectly
with language, because it acknowledges that the
mechanisms of any language condition the thoughts of
its speaker community.
Said another way, programming is the craft of
transforming
requirements into something that a
computer can execute.
In
computer science, source code (commonly
just source) is any collection of statements
or declarations written in some
human-readable computer
programming language. Source code allows
the programmer to communicate with the computer
using a reserved number of instructions.
The source code which constitutes a
program is usually held in one or more
text files, sometimes stored in databases as
stored procedures and may also appear as
code snippets printed in books or other media. A
large collection of source code files may be
organized into a
directory tree, in which case it may also be
known as a source tree.
A computer program's source code is the
collection of files needed to convert from
human-readable form to some kind of
computer-executable form. The source code may be
converted into an
executable file by a
compiler, or executed
on the fly from the human readable form with the
aid of an
interpreter.
The code base of a
programming project is the larger collection of
all the source code of all the
computer programs which make up the project.
[edit]
Purposes
Source code is primarily used as input to the
process that produces an executable program (ie., it
is
compiled or
interpreted). It is also used as a method of
communicating
algorithms between people (eg.,
code snippets in books).[1]
Programmers often find it helpful to review
existing source code to learn about programming
techniques.[1]
The sharing of source code between developers is
frequently cited as a contributing factor to the
maturation of their programming skills.[1]
Some people consider source code an expressive
artistic medium.[2]
Porting software to other
computer platforms is usually prohibitively
difficult without source code. Without the source
code for a particular piece of software portability
is generally computationally expensive[citation
needed]. Possible porting
options include
binary translation and emulation of the original
platform.
Decompilation of an executable program can be
used to generate source code, either in
assembly code or in a
high level language.
Programmers frequently adapt source code from one
piece of software to use in other projects, a
concept known as
software reusability.
[edit]
Organization
The source code for a particular piece of
software may be contained in a single file or many
files. Though uncommon, a program's source code is
not necessarily all written in the same programming
language.[3]
Computer science (or computing science)
is the study of the theoretical foundations of
information and
computation and their implementation and
application in
computer systems.[1][2][3]
Computer science has many sub-fields; some emphasize
the computation of specific results (such as
computer graphics), while others relate to
properties of
computational problems (such as
computational complexity theory). Still others
focus on the challenges in implementing
computations. For example,
programming language theory studies approaches
to describing computations, while
computer programming applies specific
programming languages to solve specific
computational problems. A further sub field,
human-computer interaction, focuses on the
challenges in making computers and computations
useful, usable and universally accessible to
people.
[edit]
History
-
The early foundations of what would become
computer science predate the invention of the modern
digital computer. Machines for calculating fixed
numerical tasks, such as the
abacus, have existed since antiquity.
Wilhelm Schickard built the first mechanical
calculator in 1623.[4]
Charles Babbage designed a
difference engine in
Victorian times (between 1837 and 1901)[5]
helped by
Ada Lovelace.[6]
Around 1900, the
IBM corporation sold
punch-card machines.[7]
However, all of these machines were constrained to
perform a single task, or at best some subset of all
possible tasks.
During the 1940s, as newer and more powerful
computing machines were developed, the term
computer came to refer to the machines rather
than their human predecessors. As it became clear
that computers could be used for more than just
mathematical calculations, the field of computer
science broadened to study
computation in general. Computer science began
to be established as a distinct academic discipline
in the 1960s, with the creation of the first
computer science departments and degree programs.[8]
Since practical computers became available, many
applications of computing have become distinct areas
of study in their own right.
Although many initially believed it impossible
that computers themselves could actually be a
scientific field of study, in the late fifties it
gradually became accepted among the greater academic
population.[9]
It is the now well-known IBM brand that formed part
of the computer science revolution during this time.
IBM (short for International Business Machines)
released the IBM 704 and later the IBM 709
computers, which were widely used during the
exploration period of such devices. "Still, working
with the IBM [computer] was frustrating...if you had
misplaced as much as one letter in one instruction,
the program would crash, and you would have to start
the whole process over again".[9]