Product Code Database
Example Keywords: mario kart -itunes $62
barcode-scavenger
   » » Wiki: Computer Program
Tag Wiki 'Computer Program'.
Tag

A computer program is a collection of that performs a specific task when executed by a . A computer requires programs to function and typically executes the program's instructions in a central processing unit.

(1994). 9780201504804, Addison-Wesley.

A computer program is usually written by a computer programmer in a programming language. From the program in its human-readable form of , a can derive —a form consisting of instructions that the computer can directly execute. Alternatively, a computer program may be executed with the aid of an interpreter.

A part of a computer program that performs a well-defined task is known as an . A collection of computer programs, libraries, and related data are referred to as . Computer programs may be categorized along functional lines, such as application software or .


History

Early programmable machines
The earliest programmable machines preceded the invention of the digital computer. In 1801, Joseph-Marie Jacquard devised a that would weave a pattern by following a series of perforated cards. Patterns could be weaved and repeated by arranging the cards.
(1999). 9780802713483, Walker and Company.


Analytical Engine
In 1837, was inspired by Jacquard's loom to attempt to build the Analytical Engine. The names of the components of the calculating device were borrowed from the textile industry. In the textile industry, yarn was brought from the store to be milled. The device would have had a "store"—memory to hold 1,000 numbers of 40 decimal digits each. Numbers from the "store" would then have then been transferred to the "mill" (analogous to the CPU of a modern machine), for processing. It was programmed using two sets of perforated cards—one to direct the operation and the other for the input variables. However, after more than 17,000 pounds of the British government's money, the thousands of cogged wheels and gears never fully worked together.
(1990). 9780138546625, Prentice Hall.

During a nine-month period in 1842–43, translated the memoir of Italian mathematician . The memoir covered the Analytical Engine. The translation contained Note G which completely detailed a method for calculating using the Analytical Engine. This note is recognized by some historians as the world's first written computer program.


Universal Turing machine
In 1936, introduced the Universal Turing machine—a theoretical device that can model every computation that can be performed on a computing machine.
(1991). 9780070537446, McGraw-Hill, Inc..
It is a finite-state machine that has an infinitely long read/write tape. The machine can move the tape back and forth, changing its contents as it performs an . The machine starts in the initial state, goes through a sequence of steps, and halts when it encounters the halt state.
(1990). 9780669173420, D. C. Heath and Company.
This machine is considered by some to be the origin of the stored-program computer—used by John von Neumann (1946) for the "Electronic Computing Instrument" that now bears the von Neumann architecture name.


Early programmable computers
The Z3 computer, invented by (1941) in , was a digital and programmable computer. A digital computer uses electricity as the calculating component. The Z3 contained 2,400 relays to create the circuits. The circuits provided a , , nine-instruction computer. Programming the Z3 was through a specially designed keyboard and .

The (Fall 1945) was a , general-purpose computer that used 17,468 to create the circuits. At its core, it was a series of wired together.

(1999). 9780802713483, Walker and Company.
Its 40 units weighed 30 tons, occupied , and consumed $650 per hour () in electricity when idle. It had 20 base-10 accumulators. Programming the ENIAC took up to two months. Three function tables were on wheels and needed to be rolled to fixed function panels. Function tables were connected to function panels using heavy black cables. Each function table had 728 rotating knobs. Programming the ENIAC also involved setting some of the 3,000 switches. Debugging a program took a week. The ENIAC featured parallel operations. Different sets of accumulators could simultaneously work on different algorithms. It used for input and output, and it was controlled with a . It ran for eight years, calculating hydrogen bomb parameters, predicting weather patterns, and producing firing tables to aim artillery guns.

The Manchester Small-Scale Experimental Machine (June 1948) was a stored-program computer. Programming transitioned away from moving cables and setting dials; instead, a computer program was stored in memory as numbers. Only three of memory were available to store each instruction, so it was limited to eight instructions. 32 switches were available for programming.


Later computers
Computers manufactured until the 1970s had front-panel switches for programming. The computer program was written on paper for reference. An instruction was represented by a configuration of on/off settings. After setting the configuration, an execute button was pressed. This process was then repeated. Computer programs also were manually input via or . After the medium was loaded, the starting address was set via switches and the execute button pressed.
(1994). 9780201504804, Addison-Wesley.

In 1961, the Burroughs B5000 was built specifically to be programmed in the ALGOL 60 language. The hardware featured circuits to ease the phase.

(1990). 9780138546625, Prentice Hall.

In 1964, the IBM System/360 was a line of six computers each having the same . The Model 30 was the smallest and least expensive. Customers could upgrade and retain the same application software.

(1990). 9780138546625, Prentice Hall.
Each System/360 model featured multiprogramming. With operating system support, multiple programs could be in memory at once. When one was waiting for input/output, another could compute. Each model also could other computers. Customers could upgrade to the System/360 and retain their IBM 7094 or IBM 1401 application software.


Computer programming
Computer programming is the process of writing or editing . Editing source code involves testing, analyzing, refining, and sometimes coordinating with other programmers on a jointly developed program. A person who practices this skill is referred to as a computer , software developer, and sometimes coder.

The sometimes lengthy process of computer programming is usually referred to as software development. The term software engineering is becoming popular as the process is seen as an discipline.


Programming languages

Computer programs can be categorized by the programming language paradigm used to produce them. Two of the main paradigms are imperative and declarative.


Imperative languages
Imperative programming languages specify a sequential algorithm using declarations, expressions, and statements:
(1993). 9780201568851, Addison-Wesley.

  • A declaration couples a variable name to a – for example: var x: integer;
  • An expression yields a value – for example: 2 + 2 yields 4
  • A statement might assign an expression to a variable or use the value of a variable to alter the program's – for example: x := 2 + 2; if x = 4 then do_something();

One criticism of imperative languages is the side effect of an assignment statement on a class of variables called non-local variables.


Declarative languages
Declarative programming languages describe what computation should be performed and not how to compute it. Declarative programs omit the and are considered sets of instructions. Two broad categories of declarative languages are functional languages and . The principle behind functional languages (like Haskell) is to not allow side effects, which makes it easier to reason about programs like mathematical functions.
(1993). 9780201568851, Addison-Wesley.
The principle behind logical languages (like ) is to define the problem to be solved – the goal – and leave the detailed solution to the Prolog system itself.
(1993). 9780201568851, Addison-Wesley.
The goal is defined by providing a list of subgoals. Then each subgoal is defined by further providing a list of its subgoals, etc. If a path of subgoals fails to find a solution, then that subgoal is and another path is systematically attempted.


Compilation and interpretation
A computer program in the form of a , computer programming language is called . Source code may be converted into an by a or executed immediately with the aid of an interpreter.

Compilers are used to translate source code from a programming language into either or . Object code needs further processing to become machine code, and machine code consists of the central processing unit's native instructions, ready for execution. Compiled computer programs are commonly referred to as executables, binary images, or simply as  – a reference to the binary used to store the executable code.

Interpreters are used to execute source code from a programming language line-by-line. The interpreter each statement and performs its behavior. One advantage of interpreters is that they can easily be extended to an . The programmer is presented with a prompt, and individual lines of code are typed in and performed immediately.

The main disadvantage of interpreters is computer programs run slower than when compiled. Interpreting code is slower because the interpreter must decode each statement and then perform it. However, software development may be faster using an interpreter because testing is immediate when the compiling step is omitted. Another disadvantage of interpreters is an interpreter must be present on the executing computer. By contrast, compiled computer programs need no compiler present during execution.

Just in time compilers pre-compile computer programs just before execution. For example, the Java virtual machine Hotspot contains a Just In Time Compiler which selectively compiles Java bytecode into machine code - but only code which Hotspot predicts is likely to be used many times.

Either compiled or interpreted programs might be executed in a without human interaction.

Scripting languages are often used to create batch processes. One common scripting language is , and its executing environment is called the command-line interface.

No properties of a programming language require it to be exclusively compiled or exclusively interpreted. The categorization usually reflects the most popular method of language execution. For example, Java is thought of as an interpreted language and C a compiled language, despite the existence of Java compilers and C interpreters.


Storage and execution

Typically, computer programs are stored in non-volatile memory until requested either directly or indirectly to be executed by the computer user. Upon such a request, the program is loaded into random-access memory, by a computer program called an , where it can be accessed directly by the central processor. The central processor then executes ("runs") the program, instruction by instruction, until termination. A program in execution is called a process.

(1994). 9780201504804, Addison-Wesley.
Termination is either by normal self-termination or by error – software or hardware error.


Simultaneous execution
Many operating systems support multitasking which enables many computer programs to appear to run simultaneously on one computer. Operating systems may run multiple programs through process scheduling – a software mechanism to the CPU among processes often so users can with each program while it runs.
(1994). 9780201504804, Addison-Wesley.
Within hardware, modern day multiprocessor computers or computers with multicore processors may run multiple programs.
(2017). 9780976483243, Richard Bowles (Intel Press).

Multiple lines of the same computer program may be simultaneously executed using threads. Multithreading processors are optimized to execute multiple threads efficiently.


Self-modifying programs
A computer program in execution is normally treated as being different from the data the program operates on. However, in some cases, this distinction is blurred when a computer program modifies itself. The modified computer program is subsequently executed as part of the same program. Self-modifying code is possible for programs written in , assembly language, Lisp, C, , PL/1, and .


Functional categories
Computer programs may be categorized along functional lines. The main functional categories are application software and . System software includes the which couples computer hardware with application software. The purpose of the operating system is to provide an environment in which application software executes in a convenient and efficient manner.
(1994). 9780201504804, Addison-Wesley.
In addition to the operating system, system software includes , , and . Application software designed for have a user interface. Application software not designed for the end user includes , which couples one application with another. Application software also includes . The distinction between system software and application software is under debate.


Application software

There are many types of application software:

  • The word app came to being in 21st century. It is a clipping of the word "application". They have been designed for many platforms, but the word was first used for smaller mobile apps. Desktop apps are traditional computer programs that run on . run on . run inside a . Both mobile and desktop apps may be downloaded from the developers' website or purchased from such as , Apple App Store, Mac App Store, or .
  • An application suite consists of multiple applications bundled together. Examples include , , and . They bundle a word processor, spreadsheet, and other applications.
  • Enterprise applications bundle accounting, personnel, customer, and vendor applications. Examples include enterprise resource planning, customer relationship management, and supply chain management software.
  • Enterprise infrastructure software supports the enterprise's . Examples include databases, email servers, and network servers.
  • Information worker software are designed for workers at the departmental level. Examples include , resource management, analytical, collaborative and documentation tools. Word processors, spreadsheets, email and blog clients, personal information system, and individual media editors may aid in multiple information worker tasks.
  • Media development software generates print and electronic media for others to consume, most often in a commercial or educational setting. These produce graphics, publications, animations, and videos.
  • Product engineering software is used to help develop large machines and other application software. Examples includes computer-aided design (CAD), computer-aided engineering (CAE), and integrated development environments.
  • Entertainment Software can refer to video games, movie recorders and players, and music recorders and players.


Utility programs
are application programs designed to aid system administrators and computer programmers.


Operating system
An is a computer program that acts as an intermediary between a user of a computer and the computer hardware.

In the 1950s, the programmer, who was also the operator, would write a program and run it. After the program finished executing, the output may have been printed, or it may have been punched onto paper tape or cards for later processing. More often than not the program did not work.

(1990). 9780138546625, Prentice Hall.
The programmer then looked at the console lights and fiddled with the console switches. If less fortunate, a memory printout was made for further study. In the 1960s, programmers reduced the amount of wasted time by automating the operator's job. A program called an operating system was kept in the computer at all times.

Originally, operating systems were programmed in assembly; however, modern operating systems are typically written in C.


Boot program
A stored-program computer requires an initial computer program stored in its to . The boot process is to identify and initialize all aspects of the system, from processor registers to to contents.
(1994). 9780201504804, Addison-Wesley.
Following the initialization process, this initial computer program loads the and sets the to begin normal operations.


Embedded programs

Independent of the host computer, a might have embedded to control its operation. Firmware is used when the computer program is rarely or never expected to change, or when the program must not be lost when the power is off.


Microcode programs
programs control some central processing units and some other hardware. This code moves data between the registers, buses, arithmetic logic units, and other functional units in the CPU. Unlike conventional programs, microcode is not usually written by, or even visible to, the end users of systems, and is usually provided by the manufacturer, and is considered internal to the device.


See also


Further reading

Page 1 of 1
1

Account

Social:
Pages:  ..   .. 
Items:  .. 

Navigation

General: Atom Feed Atom Feed  .. 
Help:  ..   .. 
Category:  ..   .. 
Media:  ..   .. 
Posts:  ..   ..   .. 

Statistics

Page:  .. 
Summary:  .. 
1 Tags
10/10 Page Rank
5 Page Refs
8s Time