Computer program |
A computer program or software program (usually abbreviated to a program ) is a step-by-step list of instructions written for a particular Computer architecture in a particular Programming language. A layman equivalent example would be writing a step-by-step list of instructions in English instructing a human how to make a Peanut butter and jelly sandwich (the human being the specific architecture). More often than not, computer programs are compiled or assembled into non-human readable format. Execution (computers) uncompiled programs are referred to as Scripting programming language.
=Terminology=
The term program specifically refers to the blocks of Instruction#Computing that are loaded into memory (computers) for execution by an Interpreter (computing). (See #Program_Execution below.)
In comparison, the term software refers to the computer program and any resources related to it. This would include static data, components (plugins), configuration files, and so on. These resources are usually bundled together into a software package to be distributed.
Software programs (collections of programs and related resources) are most frequently referred to as Application software by end-users, as most users are focused on the abilities of application software (application programs) rather than system software. (Users see things differently than programmers.)
Note: The United Kingdom spelling programme is, for the most part, no longer used to refer to computer programs , as most internationally-used computing terms use the words (and spelling conventions) adopted in the U.S.. However, please note that programming with two Ms is preferred over programing.
=Program Execution=
A modern day computer program is loaded into memory (usually by the operating system), interpreted and then executed ( run ) instruction by instruction until program Termination , either with success or through computer error. Some primitive types of computers ran instructions encoded in various ways, an example would be Punch card.
Before a computer can execute any sort of program (including the operating system which is also a program) the Computer hardware must be initialized. This is done by a piece of software stored on Programmable read-only memory chips installed by the manufacturer called the BIOS. The BIOS will attempt to initialize the boot sequence making the computer ready for miscellaneous program execution.
=Programs vs Data=
A program has been defined. Data can be defined as information that is to be processed by some program. When the entire scope of a computer system is taken into account, there are regions where the distinction between the two is not so evident. central processing units sometimes have a set of smaller instructions that control the computer s hardware, data can contain a program that is executed (see Scripting programming language), programs can be written to create another program; all of which making the comparison largely one of perspective. Some deny that the distinction between program and data is useful altogther.
Writing a program to generate a computer program is called Metaprogramming (programming). One application of this is have a program generate code according to a certain given data set. A single program might not easily be able to account for all the different aspects of the given data. Analysing the data to create a program that can handle all the aspects might prove easier. Lisp programming language is an example of a language that provides strong support for this aspect of programming.
The weights stored in a neural network are a form of data. It is precisely these weights that, combined with the topology of the network, define the network s behavior. It is unclear what the values of these weights actually represent or whether these weights can be programmed. This and other questions pertaining to artificial intelligence further test the comparison between program and data.
=Programming=
Creating a computer program is the iterative process of Implementation new source code (or simply just code ) and testing, analyzing and refining the newly implemented code for syntax and Semantics errors. One who practices this skill is referred to as a computer programmer. Since the evolution of computers is so rapid, the tasks of a computer programmer have become more diverse giving rise to different classes of computer programmers, each with a more specialized task. Two examples are a software developer and a systems architect. The lengthy process of computer programming is now referred to as software development or software engineering. The latter becoming more popular due to the increasing maturity of the discipline. (see Software engineering#Debate over who is a software engineer)
Hence, a contemporary computer programmer can refer to a specialist in one area of computer programming or to the general mass of programmers working for a software company who implement the bulk of the code in large scale software. A group of programmers working for a software company maybe assigned a lead programmer and a project manager to oversee project development and deadlines. Large scale software usually undergoes a lengthy design phase by a system architect before actual development and Agile software development#Cowboy coding is frowned upon.
Two other forms of modern day approaches are team programming where each member of the group has equal say in the development process except for one person who guides the group through discrepancies. These groups tend to be around 10 people to keep the group manageable. The second form is referred to as peer programming or pair programming.
See Software engineering#Process and methodology for the different aspects of modern day computer programming.
=Algorithms=
A formal methodology to solve a particular problem usually combined with a study of different degrees of Performance testing constitute an Algorithm. Algorithms can be purely theoretical or implemented by a computer program. Where theoretical algorithms are usually classified in categories according to complexity , implemented algorithms are usually profiler (computer science) to test routines for efficiency. Note that although an algorithm can be theoretically performant, it can be poorly implemented wasting valuable computer Resource (computer science). (see Algorithmic information theory for more information)
= Example of a program (source code) =
The supplied code is a small program in assembly language written for a Universal Virtual Computer . The example shows a selection of instructions with the corresponding Memory address in memory where each instruction will be placed. These addresses are not static, see memory management. Accompanying each instruction is the generated (by compilation) object code that coincides with the virtual computer s architecture (or Instruction set). For more examples, see the hello world program.
=See also=
*Turing machine *Programming language *Computer software *Programmer *Source code *Extreme Programming *Operating system *Programming paradigm *Firmware / Device driver *Polyglot (computing)
=Bibliography=
=External links=
|
|