You are on page 1of 3

Computer programming

Computer programming is the process of performing particular computations (or


more generally, accomplishing specific computing results), usually by
designing and building executable computer programs. Programming involves
tasks such as analysis, generating algorithms, profiling algorithms' accuracy
and resource consumption, and the implementation of algorithms (usually in a
particular programming language, commonly referred to as coding).[1]
[2] The source code of a program is written in one or more languages that are
intelligible to programmers, rather than machine code, which is directly
executed by the central processing unit. To produce machine code, the source
code must either be compiled or transpiled. Compiling takes the source code
from a low-level programming language and converts it into machine code.
Transpiling on the other hand, takes the source-code from a high-level
programming language and converts it into bytecode. This is interpreted into
machine code. The purpose of programming is to find a sequence
of instructions that will automate the performance of a task (which can be as
complex as an operating system) on a computer, often for solving a given
problem. Proficient programming thus usually requires expertise in several
different subjects, including knowledge of the application domain, specialized
algorithms, and formal logic.
Tasks accompanying and related to programming
include testing, debugging, source code maintenance, implementation of build
systems, and management of derived artifacts, such as the machine
code of computer programs. However, while these might be considered part of
the programming process, often the term software development is more likely
used for this larger overall process – whereas the
terms programming, implementation, and coding tend to be focused on the
actual writing of code. Relatedly, software
engineering combines engineering techniques and principles with software
development. Also, those involved with software development may at times
engage in reverse engineering, which is the practice of seeking to understand
an existing program so as to re-implement its function in some way.

Programming languages
Different programming languages support different styles of programming
(called programming paradigms). The choice of language used is subject to
many considerations, such as company policy, suitability to task, availability
of third-party packages, or individual preference. Ideally, the programming
language best suited for the task at hand will be selected. Trade-offs from
this ideal involve finding enough programmers who know the language to
build a team, the availability of compilers for that language, and the
efficiency with which programs written in a given language execute.
Languages form an approximate spectrum from "low-level" to "high-level";
"low-level" languages are typically more machine-oriented and faster to
execute, whereas "high-level" languages are more abstract and easier to
use but execute less quickly. It is usually easier to code in "high-level"
languages than in "low-level" ones. Programming languages are essential
for software development. They are the building blocks for all software,
from the simplest applications to the most sophisticated ones.
Allen Downey, in his book How To Think Like A Computer Scientist, writes:
The details look different in different languages, but a few basic instructions appear in
just about every language:
 Input: Gather data from the keyboard, a file, or some other device.
 Output: Display data on the screen or send data to a file or other device.
 Arithmetic: Perform basic arithmetical operations like addition and
multiplication.
 Conditional Execution: Check for certain conditions and execute the appropriate
sequence of statements.
 Repetition: Perform some action repeatedly, usually with some variation.

Many computer languages provide a mechanism to call functions provided


by shared libraries. Provided the functions in a library follow the appropriate
run-time conventions (e.g., method of passing arguments), then these
functions may be written in any other language.

You might also like