Home About us Products Services Contact us Bookmark
:: wikimiki.org ::
Calculator

Calculator

A calculator is a device for performing numerical calculations. The type is considered distinct from both a calculating machine and a computer in that the calculator is a special-purpose device that may not qualify as a Turing machine. Although modern calculators often incorporate a general purpose computer, the device as a whole is designed for ease of use to perform specific operations, rather than for flexibility. The complexity of calculators varies with the intended purpose. A simple one with only four functions (addition, subtraction, multiplication and division and perhaps a single-number memory) may be useful for everyday activities such as shopping or checking a bill. More complex ones may include complex mathematical functions suitable to engineering or accounting as well as a substantial memory and the ability to execute moderately complex programs. Since the late-1980's, it has become common to incorporate simple calculators in other small devices, such as mobile phones, pagers or wrist watches. In most developed countries, students use calculators for schoolwork. There was some initial resistance to the idea out of fear that basic arithmetic skills would suffer. There remains disagreement about the importance of the ability to perform calculations by hand or "in the head", with some curricula restricting calculator use until a certain level of proficiency has been obtained, while others concentrate more on teaching estimation techniques and problem-solving.

Overview

Modern calculators are electrically powered, most often by battery, and are made by numerous manufacturers, in countless shapes and sizes varying from cheap, give-away, credit-card sized models to more sturdy adding machine-like models with built-in printers. Only a very few companies develop and make modern professional engineering and finance calculators: The most well-known are Casio, Sharp, Hewlett-Packard (HP) and Texas Instruments (TI). Such calculators are good examples of embedded systems. They are also often complex enough to be programmed; calculator applications include algebraic equation solvers, financial models and even games. In the near past, mechanical and clerical aids such as abacuses, comptometers, Napier's bones, books of mathematical tables, slide rules, adding machines, were used for serious numeric work, and the word "calculator" denoted a person (most often male) who did such work for a living using such aids as well as pen and paper. This semi-manual process of calculation was tedious and error-prone.

Electronic calculators

Today most calculators are handheld microelectronic devices, but in the past some calculators were as large as today's computers. The first mechanical calculators were mechanical desktop devices, which were soon replaced by electromechanical desktop calculators, and then by electronic devices using first thermionic valves, then transistors, then hard-wired integrated circuit logic. A pocket calculator is a small battery-powered or solar powered electronic digital computer made possible by integrated circuit and semiconductor technology. Typically they are limited to an 8–10 digit single-number display and a few basic functions of arithmetic, but some modern calculators have more of the features of a general-purpose computer. Pocket calculators rendered the slide rule obsolete. Calculators vary in their capabilities. Some are limited to only basic arithmetic; others support trigonometric, statistical and other mathematical functions. The most advanced modern calculators are programmable, can display graphics, and include features of computer algebra systems.

Personal computing

Personal computers and personal digital assistants can perform general calculations in a variety of ways:
- computers often have a separate calculator program, varying from one that just emulates a simple calculator, such as Microsoft Calculator, to advanced spreadsheet programs such as Excel or OpenOffice.org Calc
- for more advanced calculations one can use a computer algebra program, such as Mathematica, Maple or Matlab.
- browsers can perform calculations using client-side scripting, e.g. using Client-side JavaScript by entering "javascript:alert(12
- 13)" in the address bar (the answer 156 appears in a separate alert window) or "document.write (12
- 13)" in a HTML file, preceded with "<script type="text/javascript">" and followed by "</script>".
- an interpreter or compiler for a general programming language can be used
- calculations can also be performed server-side, e.g. with the calculator feature of the Google search engine

History

Origin: The Abacus

calculator feature of the Google search engine The first calculators were abacuses, and were often constructed as a wooden frame with beads sliding on wires. Abacuses were in use centuries before the adoption of the written Arabic numerals system and are still widely used by merchants and clerks in China and elsewhere.

The 17th century

Wilhelm Schickard built the first automatic calculator called the "Calculating Clock" in 1623. Some 20 years later, in 1645, French philosopher Blaise Pascal invented the calculation device later known as Pascal's calculator, which was used for taxes in France until 1799. The German philosopher G.W.v.Leibniz also produced a calculating machine.

1930s to 1960s

calculating machine From approximately the 1930s through the 1960s, mechanical calculators were often used (see Mechanical Calculator under History of computing hardware). These desktop devices were motor-driven and had multiple columns of keys for each digit. Addition and subtraction were performed in a single operation, as on a conventional adding machine, but multiplication and division were accomplished by repeated mechanical additions and subtractions. Handheld mechanical calculators such as the Curta continued to be used until they were displaced by electronic calculators in the 1970s. In 1954, IBM demonstrated a large all-transistor calculator and, in 1957, they released the first commercial all-transistor calculator (the IBM 608). In October 1961, the world's first all-electronic desktop calculator, the Bell Punch/Sumlock Comptometer ANITA Mk.VII was released. This British designed-and-built machine used vacuum tubes in its circuits and cold-cathode nixie tubes for its display. It was superseded, technologically, in 1964 when Sharp introduced the CS-10A—the world's first all-transistor desktop calculator—which weighed 25 kg (55 lb) and cost 500,000 yen (~US$2500). The first handheld electronic calculators went on sale in 1970 with models from Japanese manufacturers Sharp and Canon weighing around 770 g (1.7 lb).

1970s to mid-1980s

In the early 1970s, the Monroe EPIC programmable calculator came on the market. A large desk-top unit, with an attached floor-standing logic tower, it was capable of being programmed to perform many computer-like functions. However, the only branch instruction was an implied unconditional branch (GOTO) at the end of the operation stack, returning the program to its starting instruction. Thus, it was not possible to include any conditional branch (IF-THEN-ELSE) logic. During this era, the absence of the conditional branch was sometimes used to distinguish a programmable calculator from a computer. The first pocket-sized calculator, the Bowmar 901B (popularly referred to as The Bowmar Brain), measuring 5.2×3.0×1.5 in (131×77×37 mm), came out in the fall of 1971, with four functions and an eight-digit red LED display, for $240, while in August 1972 the four-function Sinclair Executive became the first slimline pocket calculator measuring 5.4×2.2×0.35 in (138×56×9 mm) and weighing 2.5 oz (70g). It retailed for around $150 (GB£79). By the end of the decade, similar calculators were priced less than $10 (GB£5). The first pocket calculator with scientific functions, i.e. the first slide rule-replacing model, was the 1972 HP-35 from Hewlett Packard (HP); it, along with all later HP engineering calculators, used reverse Polish notation (RPN) (where a calculation like "6 – 2" is performed by pressing "6", "Enter↑", "2", and "–"; instead of algebraically: "6", "–", "2", "="). In 1973, Texas Instruments (TI) introduced the SR-10, (SR signifying slide rule) a hand-held algebraic notation calculator, which was later followed by the SR-11 and eventually the TI-30. The first programmable hand-held calculator was the HP-65, in 1974; it had a capacity of 100 instructions, and could store and retrieve programs with a built-in magnetic card reader. A year later the HP-25C introduced continuous memory, i.e. programs and data were retained in memory during power-off. In 1979, HP released the first alphanumeric, programmable, expandable calculator, the HP-41C. It could be expanded with RAM (memory) and ROM (software) modules, as well as peripherals like bar code readers, microcassette and floppy disk drives, paper-roll thermal printers, and miscellaneous communication interfaces (RS-232, HP-IL, HP-IB).

Mid-1980s to present

HP-IB HP-IB calculator.]] The two leading manufacturers, HP and TI, released steadily more feature-laden calculators during the 1980s and 90s. At the turn of the millennium, the line between a graphing calculator and a PDA/ handheld computer was not always clear (forgetting the keyboard for the sake of the argument), as some very advanced calculators such as the TI-89 and HP-49G could differentiate and integrate functions, run word processing and PIM software, and connect by wire or IR to other calculators/computers. In March 2002, HP announced that the company would no longer produce calculators, which was hard to fathom for some fans of the company's products; the HP-48 range in particular had an extremely loyal customer base. Nevertheless, HP restarted their production of calculators in late 2003. The new models, however, reportedly didn't have the mechanical quality and sober design HP's earlier calculators were famous for (instead featuring the more "youthful" look and feel of contemporary competing designs from TI). The business calculator HP-12C is still produced. It was introduced in 1981 and is still being made with nearly no changes. In 2003 several new models were released, including an improved version of the HP-12C, the "HP-12C platinum edition".

Drawbacks


- Built-in inaccuracy commonly due to arithmetic underflow is a drawback occurring in many ordinary digital calculators. To obtain an example of this potential problem, the following exercise may be performed: enter the number one, divide by three, to reach 0.333 (recurring, i.e. followed by a theoretically infinite number of 3s), and then multiply by three to get back to one. On some calculators this operation will not work correctly, in that the result is given as 0.999 (recurring)—roughly speaking, this anomaly happens because the calculator works with only a finite number of decimals. It is important to note, however, that with infinite precision, .999... repeating is equal to one.
- Another kind of "drawback" resulting from the use, rather than the construction, of calculators, is the tendency of users to carelessly rely on the calculator's output without double-checking the magnitude (in practice, the placement of the decimal separator) of the result. This problem was all but nonexistent in the era of slide rules and pencil-and-paper calculations, when the task of establishing the magnitudes of results had to be done by the (sufficiently meticulous) user.

Trivia


- The word "calculator" is occasionally used as a pejorative term to describe an inadequately capable general-purpose microcomputer. The synonym of this meaning is "bitty box", as discussed in the Jargon file.
- A curious episode of the mid 1970s involved the Melcor 635, a scientific calculator with a bug in its trigonometric functions. Because the CORDIC algorithms used in most calculators cannot compute the inverse trigonometric functions of zero, these need to be hardcoded — and some engineer at Melcor got it wrong. For any input other than exactly zero, even for instance 1.0E-99, the calculator worked correctly; the user simply had to remember not to compute the arc-cosine of zero. The company discovered this after making 50,000 calculators. The upshot was an advertisement in Scientific American headlined 'Somebody Goofed', offering these calculators for sale at half-price.
- As many schoolchildren and students know, some words and simple phrases can be written using an ordinary seven-segment display calculator; this involves entering certain numbers and then viewing the resulting words by turning the calculator display upside-down.

See also

General interest:
- :Category:Calculators
- History of computing hardware Mechanical calculators:
- Abacus
- Napier's bones
- Comptometer
- Mercedes (calculator)
- Adding machine
- Addiator
- Curta Electronic calculators:
- List of calculators

Patents


- – Complex computerG. R. Stibitz (electromechanic device that would calculate, record, and print results)
- – Miniature electronic calculatorJ. S. Kilby (TI electromechanic device)

External links


- [http://www.ti.com/corp/docs/company/history/calc.shtml On TI's US Patent No. 3819921] – From TI's own website
- [http://sharp-world.com/corporate/info/his/h_company/1994/ 30th Anniversary of the Calculator] – From Sharp's web presentation of its history; including a picture of the CS-10A desktop calculator
- [http://www.maths.hscripts.com/ Online Calculators and Converters]
- [http://web.peoriadesignweb.com/calculator Online Calculator Software]
- [http://www.satsig.net/seticalc.htm Online deep space SETI range calculator]
- [http://ostermiller.org/calc/calculator.html JavaScript Scientific Calculator] – Scientific notation, hex, octal, decimal, binary, and math functions; requires JavaScript (from ostermiller.org)
- [http://www.oldcalculatormuseum.com The Old Calculator Web Museum]
- [http://www.calculators.de Calculator Museum]
- [http://www.taswegian.com/MOSCOW/soviet.html Museum of Soviet Calculators]
- [http://www.rk86.com/frolov/calcolle.htm Soviet Calculators Collection]
- [http://www.vintagecalculators.com/index.html Vintage Calculators]
- [http://www.lendingok.com various calculators]
- [http://www.cut-the-knot.org/Curriculum/Arithmetic/BrokenCalculator.shtml Broken Calculator]
- [http://www.graphcalc.com GraphCalc – an Open Source graphing calculator program]
- [http://www.binarythings.com/hidigit/ HiDigit scientific calculator]
- [http://www.hpmuseum.org The Museum of HP Calculators] ([http://www.hpmuseum.org/prehp.htm slide rules/mech. section])
- [http://www.hydrix.com/wiki/ HP Calculator Wiki]
- [http://www.typeonline.co.uk/number_pad_lesson1.html Number pad typing tutorial]
- [http://www.casiocalc.org International Casio Calculator Community]
- [http://www.graph100.com French Casio Calculator Community]
- Calculator
Category:Mathematical tools Category:Office equipment ja:電卓 th:เครื่องคิดเลข

Calculation

A calculation is a deliberate process for transforming one or more inputs into one or more results. The term is used in a variety of senses, from the very definite arithmetical calculation using an algorithm to the vague heuristics of calculating a strategy in a competition or calculating the chance of a successful relationship between two people. Multiplying 7 by 8 is a simple algorithmic calculation. Estimating the fair price for financial instruments using the Black-Scholes model is a complex algorithmic calculation. Statistical estimations of the likely election results from opinion polls also involve algorithmic calculations, but give results that are ranges of possibilities rather than exact answers. Deciding the best way to build a relationship with a member of the opposite sex may also result from a calculation, but is not definite, predictable, nor even clearly defined. This indefinite application of the term gives it a second area of meaning apart from the mathematical senses mentioned above. To calculate means to ascertain by computing. The English word derives from Latin. Calculus, in its origins, a small stone in the gall-bladder from Latin calx. It also meant a pebble used for calculating, or a small stone used as a counter in an abacus (Latin abacus, Greek abax). The abacus was an instrument used by Greeks and Romans for arithmetic calculations and consisted of perforated pebbles sliding on iron bars, preceding the slide-rule and the electronic calculator. Philologically connected to pebble, (Anglo-Saxon papolstán, literally — pebble stone). Russian uses root chislo, that is, number, quantity, in its various verbal and nominal forms.

See also


- Computation
- Mathematics
- Calculator
- Abacus
- List of algorithms
- Calculability Category:Mathematics ja:計算

Calculating machine

A calculating machine is a machine designed to come up with calculations (i.e. computations); the most famous is probably the Victorian British scientist Charles Babbage's Difference Engine (No. 2), designed in the 1840s but never completed in the inventor's lifetime
- . Calculating machines shouldn't be confused with adding machines, which are for solving sums. (
- A working Difference Engine based on Babbage's original specifications, using only materials available during the mid-19th century, was built at the London Science Museum in the late 1990s.)

See also


- Calculator
- IBM CPC

Patents


- — Calculating machine — W. S. Burroughs Category:Mathematical tools
-

-


Turing machine

:For Alan Turing's test devised to determine the quality of an artificial intelligence, see Turing test Turing machines are extremely basic symbol-manipulating devices which—despite their simplicity—can be adapted to simulate the logic of any computer that could possibly be constructed. The concept is derived from Alan Turing's thought-experiment in 1936 about an infinite number of ordered sheets of paper, each containing one of a finite set of symbols, which could only be studied or modified one sheet at a time. It is not generally practical to use a Turing machine to do any significant computation, but studying its abstract properties yields many insights in computer science and complexity theory. A Turing machine that is able to simulate any other Turing machine is called a universal Turing machine (or simply a universal machine). A more mathematically-oriented definition with a similar "universal" nature was introduced by Alonzo Church, whose work on lambda calculus intertwined with Turing's in a formal theory of computation known as the Church-Turing thesis. The thesis states that Turing machines indeed capture the informal notion of effective method in logic and mathematics, and provide a precise definition of an algorithm or 'mechanical procedure'.

Definition

Informal description

The concept of the Turing machine is based on the idea of a person executing a well-defined procedure by changing the contents of an unlimited number of ordered paper sheets that can contain one of a finite set of symbols. The person needs to remember one of a finite set of states and the procedure is formulated in very basic steps in the form of "If your state is 42 and the symbol you see is a '0' then replace this with a '1', move one symbol to the right, and assume state 17 as your new state." A Turing machine is a pushdown automaton made more powerful by relaxing the last-in-first-out requirement of its stack. (Interestingly, this seemingly minor relaxation enables the Turing machine to perform such a wide variety of computations that it can serve as a model for the computational capabilities of all modern computer software.) More precisely, a Turing machine consists of: # A tape which is divided into cells, one next to the other. Each cell contains a symbol from some finite alphabet. The alphabet contains a special blank symbol (here written as '0') and one or more other symbols. The tape is assumed to be arbitrarily extendible to the left and to the right, i.e., the Turing machine is always supplied with as much tape as it needs for its computation. Cells that have not been written to before are assumed to be filled with the blank symbol. # A head that can read and write symbols on the tape and move left and right. # A state register that stores the state of the Turing machine. The number of different states is always finite and there is one special start state with which the state register is initialized. # An action table (or transition function) that tells the machine what symbol to write, how to move the head ('L' for one step left, and 'R' for one step right) and what its new state will be, given the symbol it has just read on the tape and the state it is currently in. If there is no entry in the table for the current combination of symbol and state then the machine will halt. Note that every part of the machine is finite; it is the potentially unlimited amount of tape that gives it an unbounded amount of storage space.

Formal definition

One-tape Turing machine

More formally, a (one-tape) Turing machine is usually defined as a 6-tuple M=(Q, \Gamma, s, b, F, \delta), where
- Q is a finite set of states
- \Gamma is a finite set of the tape alphabet
- s \in Q is the initial state
- b \in \Gamma is the blank symbol (the only symbol allowed to occur on the tape infinitely often at any step during the computation)
- F \subseteq Q is the set of final or accepting states
- \delta: Q \times \Gamma \rightarrow Q \times \Gamma \times \ is a partial function called the transition function, where L is left shift, R is right shift. Definitions in the literature sometimes differ slightly, to make arguments or proofs easier or clearer, but this is always done in such a way that the resulting machine has the same computational power. For example, changing the set \ to \, where S would allow the machine to stay on the same tape cell instead of moving left or right, does not increase the machine's computational power.

k-tape Turing machine

A k-tape Turing machine can similarly be described as a 6-tuple M=(Q, \Gamma, s, b, F, \delta), where
- Q is a finite set of states
- \Gamma is a finite set of the tape alphabet
- s \in Q is the initial state
- b \in \Gamma is the blank symbol
- F \subseteq Q is the set of final or accepting states
- \delta: Q \times \Gamma^k \rightarrow Q \times (\Gamma \times \)^k is a partial function called the transition function, where L is left shift, R is right shift, S is no shift. Note that a k-tape Turing Machine is no more powerful than a standard Turing Machine.

Example

The following Turing machine has an alphabet , with 0 being the blank symbol. It expects a series of 1s on the tape, with the head initially on the leftmost 1, and doubles the 1s with a 0 in between, i.e., "111" becomes "1110111". The set of states is and the start state is s1. The action table is as follows. Old Read Wr. New Old Read Wr. New St. Sym. Sym. Mv. St. St. Sym. Sym. Mv. St. - - - - - - - - - - - - - - - - - - - - - - - - s1 1 -> 0 R s2 s4 1 -> 1 L s4 s2 1 -> 1 R s2 s4 0 -> 0 L s5 s2 0 -> 0 R s3 s5 1 -> 1 L s5 s3 0 -> 1 L s4 s5 0 -> 1 R s1 s3 1 -> 1 R s3 A computation of this Turing machine might for example be: (the position of the head is indicated by displaying the cell in bold face) Step State Tape Step State Tape - - - - - - - - - - - - - - - - - 1 s1 11 9 s2 1001 2 s2 01 10 s3 1001 3 s2 010 11 s3 10010 4 s3 0100 12 s4 10011 5 s4 0101 13 s4 10011 6 s5 0101 14 s5 10011 7 s5 0101 15 s1 11011 8 s1 1101 -- halt -- The behavior of this machine can be described as a loop: it starts out in s1, replaces the first 1 with a 0, then uses s2 to move to the right, skipping over 1s and the first 0 encountered. S3 then skips over the next sequence of 1s (initially there are none) and replaces the first 0 it finds with a 1. S4 moves back to the left, skipping over 1s until it finds a 0 and switches to s5. s5 then moves to the left, skipping over 1s until it finds the 0 that was originally written by s1. It replaces that 0 with a 1, moves one position to the right and enters s1 again for another round of the loop. This continues until s1 finds a 0 (this is the 0 in the middle of the two strings of 1s) at which time the machine halts.

Deterministic and non-deterministic Turing machines

If the action table has at most one entry for each combination of symbol and state then the machine is a deterministic Turing machine (DTM). If the action table contains multiple entries for a combination of symbol and state then the machine is a non-deterministic Turing machine (NDTM or NTM).

Universal Turing machines

Every Turing machine computes a certain fixed partial computable function from the input strings over its alphabet. In that sense it behaves like a computer with a fixed program. However, as Alan Turing already described, we can encode the action table of any Turing machine in a string. Thus we might try to construct a Turing machine that expects on its tape a string describing an action table followed by a string describing the input tape, and then computes the tape that the encoded Turing machine would have computed. In 1947, Turing said:
It can be shown that a single special machine of that type can be made to do the work of all. It could in fact be made to work as a model of any other machine. The special machine may be called the universal machine.
With this encoding of action tables as strings, it becomes possible in principle for Turing machines to answer questions about the behaviour of other Turing machines. Most of these questions, however, are undecidable, meaning that the function in question cannot be calculated by any Turing machine. For instance, the problem of determining whether any particular Turing machine will halt on a particular input, or on all inputs, known as the Halting problem, was shown to be, in general, undecidable in Turing's original paper. Rice's theorem shows that any non-trivial question about the behaviour or output of a Turing machine is undecidable. If we broaden the definition to include any Turing machine that simulates some Turing-complete computational model, not just Turing machines that directly simulate other Turing machines, a universal Turing machine can be fairly simple, using just a few states and a few symbols. For example, only 2 states are needed, since a 2×18 (meaning 2 states, 18 symbols) universal Turing machine is known. For some time, the smallest known universal Turing machines, which simulated a computational model called a tag system, had the following numbers of states and symbols : 2×18, 3×10, 4×6, 5×5, 7×4, 10×3, 22×2. Wolfram reports in his book, A New Kind of Science, a smaller universal Turing machine with 2 states and just 5 symbols, which emulates a cellular automaton also shown to be universal, making this the simplest known universal Turing machine. A universal Turing machine is Turing-complete. It can calculate any recursive function, decide any recursive language, and accept any recursively enumerable language. According to the Church-Turing thesis, the problems solvable by a universal Turing machine are exactly those problems solvable by an algorithm or an effective method of computation, for any reasonable definition of those terms. An abstract version of the universal Turing machine is the universal function, a computable function which can be used to calculate any other computable function. The utm theorem proves the existence of such a function.

Comparison with real machines

It's often said that Turing machines, unlike simpler automata, are as powerful as real machines, and are able to execute any operation that a real program can. What is missed in this statement is that almost any particular program running on a particular machine is in fact nothing but a deterministic finite automaton, since the machine it runs on can only be in finitely many configurations. Turing machines would actually only be equivalent to a machine that had an unlimited amount of storage space. We might ask, then, why Turing machines are useful models of real computers. There are a number of ways to answer this: # Anything a real computer can compute, a Turing machine can also compute. Thus, a statement about the limitations of Turing machines (for instance, the minimum time required to calculate something) will also apply to real computers. # The difference lies only with the ability of a Turing machine to manipulate an unbounded amount of data. However, given a finite amount of time, a Turing machine (like a real machine) can only manipulate a finite amount of data. # Like a Turing machine, a real machine can have its storage space enlarged as needed, by acquiring more disks or other storage media. If the supply of these runs short, the Turing machine may become less useful as a model. But the fact is that neither Turing machines nor real machines need astronomical amounts of storage space in order to perform useful computation. The processing time required is usually much more of a problem. # Real machines are much more complex than a Turing machine. For example, a Turing machine describing an algorithm may have a few hundred states, while the equivalent deterministic finite automaton on a given real machine has quadrillions. # Turing machines describe algorithms independent of how much memory they utilize. There is a maximum to the amount of memory that any machine which we know of has, but this limit can rise arbitrarily in time. Turing machines allow us to make statements about algorithms which will (theoretically) hold forever, regardless of advances in conventional computing machine architecture. # Turing machines simplify the statement of algorithms. Algorithms running on Turing-equivalent abstract machines are usually more general than their counterparts running on real machines, because they have arbitrary-precision data types available and never have to deal with unexpected conditions (including, but not limited to, running out of memory). One way in which Turing machines are a poor model for programs is that many real programs, such as operating systems and word processors, are written to receive unbounded input over time, and therefore do not halt. Turing machines do not model such ongoing computation well (but can still model portions of it, such as individual procedures). Another limitation of Turing Machines is that they do not model the strengths of a particular arrangement well. For instance, modern computers are actually instances of a more specific form of computing machine, known as the random access machine. The primary difference between this machine and the Turing Machine is that the Turing Machine uses an infinite tape, while the random access machine uses a numerically indexed sequence (typically an integer field). The upshot of this distinction is that there are computational optimizations that can be performed based on the memory indices, which are not possible in a general Turing Machine; thus when Turing Machines are used as the basis for bounding running times, a 'false lower bound' can be proven on certain algorithms' running times (due to the false simplifying assumption of a Turing Machine). An example of this is counting sort, which seemingly violates the \theta(n\log) lower bound on sorting algorithms. The concept of a Turing machine was used as an educational tool in the science fiction novel The Diamond Age (1995), by Neal Stephenson. The main character, Nell, possesses an interactive book which teaches her creative thinking and logic by presenting puzzles in a story as Turing machines which become more and more complex as the story progresses. They begin as a simple chain-fed clockwork device and progresses to abstract economic processes, trades, and finally the interaction of entire fictional kingdoms.

See also


- Langton's ant, a simple two-dimensional analogue of the Turing machine.
- Pi-1 sentence
- Probabilistic Turing machine
- Church-Turing thesis, which says Turing machines can perform any computation that can be performed.
- Busy Beaver
- Computability logic
- Turing completeness, an attribute used in computability theory to describe computing systems with power equivalent to a universal Turing machine.
- Turing tarpit, any computing system or language which, despite possessing Turing completeness, is generally considered useless for practical computing.
- A [http://web.archive.org/web/20030210114324/http://www.rendell.uk.co/gol/tm.htm Turing Machine in Conway's Game of Life] by Paul Rendell - See also: Conway's Game of Life
- Neal Stephenson's Cryptonomicon

References


- Rolf Herken: The Universal Turing Machine - A Half-Century Survey, Springer Verlag, ISBN 3-211-82637-8
- Paul Strathern: Turing and the Computer - The big idea, Anchor Books/Doubleday, ISBN 0-385-49243-X
- [http://www.abelard.org/turpap2/tp2-ie.asp Turing, A., On Computable Numbers, With an Application to the Entscheidungsproblem], Proceedings of the London Mathematical Society, Series 2, Volume 42, 1936; reprinted in M. David (ed.), The Undecidable, Hewlett, NY: Raven Press, 1965;
- Boolos, G. and Jeffrey, R., Computability and Logic, 2nd ed., Cambridge: Cambridge University Press, 1980.
- [http://www.imt.ro/Romjist/Volum1/Vol1_3/turing.htm Rogozhin, Yurii, "A Universal Turing Machine with 22 States and 2 Symbols"], Romanian Journal Of Information Science and Technology, 1(3), 259-265, 1998. (surveys known results about small universal Turing machines)
- [http://www.wolframscience.com/nksonline/page-707 Wolfram, Stephen, A New Kind of Science], Wolfram Media, ISBN 1-57955-008-8
- Chapter 3: The Church-Turing Thesis, pp.125–149.
- Chapter 2: Turing machines, pp.19–56.

External links


- [http://plato.stanford.edu/entries/turing-machine/ Turing Machine on Stanford Encyclopedia of Philosophy]
- [http://plato.stanford.edu/entries/church-turing/ Detailed info on the Church-Turing Hypothesis] (Stanford Encyclopedia of Philosophy)

Simulators


- [http://www.jklm.no/tms/ Turing Machine Simulator], basic, easy to use Turing Machine simulator written in C# (Free software, .NET)
- [http://www.cs.usfca.edu/~jbovet/vas.html Visual Automata Simulator], a tool for simulating, visualizing and transforming finite state automata and Turing Machines (Free software, cross-platform)
- [http://sourceforge.net/projects/visualturing/ Visual Turing Machine], a visual designer and simulator (Free software, cross-platform)
- [http://www.cheransoft.com/vturing/ Visual Turing, a Turing machine interactive simulator/IDE] (freeware, Windows)
- [http://ironphoenix.org/tril/tm/ Suzanne Britton's Turing Machine Simulator] (Java applet)
- [http://semillon.wpi.edu/~aofa/AofA/msg00020.html C++ Simulator of a Nondeterministic and Deterministic Multitape Turing Machine] (Free software)
- [http://semillon.wpi.edu/~aofa/AofA/msg00024.html C++ Simulator of a Universal Turing Machine (which accepts Multitape Turing Machine)] (Free software)
- [http://www.monochrom.at/turingtrainterminal/ Turing Train Terminal] - A working Turing machine built out of model trains
- [http://www.unidex.com/turing/ TMML] - Describing a Turing Machine with XML Category:Recursion theory Category:Alan Turing Category:Computational models Category:Formal methods ko:튜링 기계 ja:チューリングマシン th:เครื่องจักรทัวริง

Addition

Addition is the most basic operation of arithmetic. In its simplest form, addition combines two numbers, the addends, into a single number, the sum. Adding more than two numbers can be viewed as repeated addition; this procedure is known as summation and includes ways to add infinitely many numbers in an infinite series. Repeated addition of the number one is the most basic form of counting. Addition can also be defined for mathematical objects other than numbers — for example, matrices or polynomials. Regardless of the nature and number of objects being added, the individual constituents of a sum typically are called summands or terms. (This is to be distinguished from factors, which are multiplied.)

Notation

multiplied Addition is written using the plus sign "+" between the terms. For example, :1 + 1 = 2 :2 + 2 = 4 :5 + 4 + 2 = 11 (see "associativity" below) :3 + 3 + 3 + 3 = 12 (see "multiplication" below) There are also situations where addition is "understood" even though no symbol appears:
- A column of numbers, with the last number in the column underlined, usually (but not always) indicates that the numbers in the column are to be added, with the sum written below the underlined number.
- A whole number followed immediately by a fraction indicates the sum of the two, called a mixed number. For example, ::312 = 3 + 12 = 3.5. :This notation can cause confusion, since in most other contexts, juxtaposition denotes multiplication instead.

Interpretations

Addition is used to model countless physical processes. Even for the simple case of adding natural numbers, there are many possible interpretations and even more visual representations.

Combining sets

Possibly the most fundamental interpretation of addition lies in combining sets:
- When two or more collections are combined into a single collection, the number of objects in the single collection is the sum of the number of objects in the original collections. This interpretation is well-suited to quick proofs of the properties of natural number addition, and it is easy to visualize, with little danger of ambiguity. However, it is not obvious how one should extend this version of addition to include fractional numbers or negative numbers. See [http://arxiv.org/abs/math.QA/0004133 this article] for an example of the sophistication involved in adding with sets of "fractional cardinality". One possible fix is to consider collections of objects that can be easily divided, such as pies or, still better, segmented rods. Rather than just combining collections of segments, rods can be joined end-to-end. :This section is under construction.

Extending a measure


- When an original measure is extended by a given amount, the final measure is the sum of the original measure and the measure of the extension. Under this interpretation, the parts of a sum a + b play asymmetric roles; instead of calling both a and b addends, it is more appropriate to call a the augend, since a plays a passive role. In geometry, a might be a point and b a vector; their sum is then another point, the translation of a by b. In analytic geometry, a and b might both be represented by ordered pairs of numbers, but they remain conceptually different. Here, the addition operation is not so much a binary operation as a family of unary operations; the function (+b) is acting on a. The unary and binary views are formally equivalent, in that for any sets A and B there is a natural identification of sets of functions :A^\cong \left(A^A\right)^B. (This law of exponentiation may be more familiar for numbers.) The unary view is useful, for example, when discussing subtraction. Addition and subtraction are not inverses as binary operations, but they are inverses as families of unary operations. :This section is under construction.

Combining translations


- When two motions are performed in succession, the measure of the resulting motion is the sum of the measures of the original motions. :This section is under construction.

Basic properties

Commutivity

subtraction Addition is commutative, meaning that one can reverse the terms in a sum left-to-right, and the result will be the same. Symbolically, if a and b are any two numbers, then :a + b = b + a. The fact that addition is commutative is known as the "commutative law of addition". This phrase suggests that there are other commutative laws: for example, there is a commutative law of multiplication. However, many binary operations are not commutative, such as subtraction and division, so it is misleading to speak of an unqualified "commutative law".

Associativity

binary operation A somewhat subtler property of addition is associativity, which comes up when one tries to define repeated addition. Should the expression :"a + b + c" be defined to mean (a + b) + c or a + (b + c)? That addition is associative tells us that the choice of definition is irrelevant. For any three numbers a, b, and c, it is true that :(a + b) + c = a + (b + c). Not all operations are associative, so in expressions with operations other than addition, it is important to specify the order of operations.

Zero and one

order of operations If one adds zero to any number, the quantity won't change; zero is the identity element for addition. In symbols, for any a, :a + 0 = 0 + a = a. The sum of any number and its additive inverse (in contexts where such a thing exists) is zero. In the context of integers, addition of one plays a special role: for any integer a, the integer (a + 1) is the least integer greater than a, also known as the successor of a.

Units

In order to numerically add certain types of numbers, such as vulgar fractions and physical quantities with units, they must first be expressed with a common denominator. For example, if a measure of 5 feet is extended by 2 inches, the sum is 62 inches, since 60 inches is another name for 5 feet. On the other hand, it is usually meaningless to try to add 3 meters and 4 square meters, since those units are incomparable; this sort of consideration is fundamental in dimensional analysis.

Generalizations

:There are many things that can be added: numbers, vectors, matrices, spaces, shapes, sets, functions, equations, strings, chains... —[http://www.cut-the-knot.org/do_you_know/addition.shtml Alexander Bogomolny] Addition is first defined on the natural numbers. In set theory, addition is then extended to larger sets that include the natural numbers: the integers, the rational numbers, and the real numbers. (In mathematics education, positive fractions are added before negative numbers are even considered; this is also the historical route.) In turn, real addition extends to addition operations on even larger sets, such as the set of complex numbers or a many-dimensional vector space in linear algebra.

In algebra

There are many more sets that support an operation called addition. There are already infinitely many natural numbers, and the set of real numbers is even larger. It is also useful to study addition on smaller sets, even finite ones. In modular arithmetic, the set of integers modulo 12 has twelve elements; it inherits an addition operation from the integers that is central to musical set theory. The set of integers modulo 2 has just two elements; the addition operation it inherits is known in Boolean logic as "exclusive or". The ideas of extending and compacting sets can be combined. In geometry, the sum of two angles is often taken to be their sum as two real numbers modulo 2π. This amounts to an addition operation on the circle, which in turn generalizes to addition operations on many-dimensional tori. A general form of addition occurs in abstract algebra, where addition may be almost any well-defined binary operation on a set. For an operation to be called "addition" in abstract algebra, it is required to be associative and commutative.

Addition of sets

One extraordinary generalization of the addition of natural numbers is the addition of ordinal numbers. Unlike most addition operations, ordinal addition is not commutative. However, passing to the "smaller" class of cardinal numbers, we recover a commutative operation. Cardinal addition is closely related to the disjoint union of two sets. In category theory, the disjoint union is a kind of coproduct, so coproducts are perhaps the most abstract of all the generalizations of addition. Some coproducts are named to evoke their connection with addition; see Direct sum and Wedge sum.

Related operations


- Incrementation, also known as the successor operation, is the addition of 1 to a number. In formal treatments of addition, such as the Peano axioms, the successor is an elementary operation, and addition is defined from successors through recursion.
- Summation describes the addition of arbitrarily many numbers, usually more than just two. It includes the idea of the sum of a single number, which is itself, and the empty sum, which is 0. An infinite summation is known as a series.
- Counting is an intuitive procedure that can be formalized as the summation of 1 over some finite domain. In everyday counting, the domain is typically a small set of physical objects; in mathematics it may be large and abstract, as it is for the prime counting function.
- Integration is a kind of "summation" over a continuum, or more precisely and generally, over a differentiable manifold. Integration over a zero-dimensional manifold reduces to summation.
- Subtraction can be thought of as a kind of addition—that is, the addition of an additive inverse. Subtraction is itself a sort of inverse to addition, in that adding x and subtracting x are inverse functions.
- Multiplication can be thought of as repeated addition. If a single term x appears in a sum n times, then the sum is the product of n and x. If n is not a natural number, the product may still make sense; for example, multiplication by −1 yields the additive inverse of a number. In many contexts, multiplication can be transformed into addition, and vice versa, through exponentials and logarithms. In general, multiplication operations always distribute over addition.
- Linear combinations combine multiplication and summation; they are sums in which each term has a multiplier, usually a real or complex number. Linear combinations are especially useful in contexts where straightforward addition would violate some normalization rule, such as mixing of strategies in game theory or superposition of states in quantum mechanics.
- Convolution is used to add two independent random variables defined by distribution functions. Its usual definition combines integration, subtraction, and multiplication. In general, convolution is useful as a kind of domain-side addition; by contrast, vector addition is a kind of range-side addition.

See also

;Notation
- Plus and minus signs
- Equals sign ;How to add
- Elementary arithmetic: Addition
- Fraction: Addition
- Scientific notation: Operations
- Vector: Vector addition
- Binary arithmetic: Addition
- Roman arithmetic: Addition
- Increment ;Abstract definitions
- Addition of natural numbers
- Integer
- Rational number
- Construction of real numbers
- Complex number
- Modular arithmetic
- Commutative monoid
- Abelian group
- Vector space

Notes

# Begle (p.57) and Johnson (p.119) prefer "addends" and "sum". Calling both inputs "addends" emphasizes the symmetry of addition; see the section on #Extending a measure for a context in which "augend" is more appropriate. # Devine et al p.263 # Adding it up (p.73) compares adding measuring rods to adding sets of cats: "For example, inches can be subdivided into parts, which are hard to tell from the wholes, except that they are shorter; whereas it is painful to cats to divide them into parts, and it seriously changes their nature." # Stewart makes the distinction by writing angle brackets for vectors and parentheses for points, although this notation is not widely used. See the chapter Vectors. # Weaver (p.62) argues for the importance of contrasting the two views, going so far as to term the version of commutivity satisfied by unary addition "pseudocommutivity". # Enderton (p.142, Theorem 6I) discusses this relationship in the context of cardinal arithmetic identities. # Enderton chapters 4 and 5, for example, follow this development. # California standards; see grades [http://www.cde.ca.gov/be/st/ss/mthgrade2.asp 2], [http://www.cde.ca.gov/be/st/ss/mthgrade3.asp 3], and [http://www.cde.ca.gov/be/st/ss/mthgrade4.asp 4]. # Baez (p.37) explains the historical development, in "stark contrast" with the set theory presentation: "Apparently, half an apple is easier to understand than a negative apple!"

References


- Preprint available [http://arxiv.org/abs/math.QA/0004133 here] on arXiv.
-
- [http://www.cde.ca.gov/be/st/ss/mthmain.asp California State Board of Education mathematics content standards] Adopted December 1997, accessed December 2005.
-
-
-
- Available [http://www.nap.edu/books/0309069955/html/index.html here] from the publisher.
-
-
-

External links

;General
- [http://www.cut-the-knot.org/do_you_know/addition.shtml Addition on cut-the-knot.org] An exploration of various kinds of addition. ;Methods and practice
- [http://www.mathsisfun.com/worksheets/addition.php Addition Worksheets or Online Practice]
- [http://www.apples4theteacher.com/flash-cards.html Addition Flash Cards]
- [http://webhome.idirect.com/~totton/abacus/pages.htm#Addition1 Addition on a Japanese abacus] selected from [http://webhome.idirect.com/~totton/abacus/ Abacus: Mystery of the Bead] Category:Arithmetic ja:総和 ko:덧셈 simple:Addition th:การบวก

Subtraction

Subtraction is one of the four basic arithmetic operations; it is essentially the opposite of addition. Subtraction is denoted by an minus sign in infix notation. The traditional names for the parts of the formula :cb = a are minuend (c) − subtrahend (b) = difference (a). The words "minuend" and "subtrahend" are virtually absent from modern usage, while "difference" is very common. Subtraction is used to model several closely related processes: #From a given collection, take away (subtract) a given number of objects. #Combine a given measurement with an opposite measurement, such as a movement right followed by a movement left, or a deposit and a withdrawal. #Compare two objects to find their difference. For example, the difference between $800 and $600 is $800 − $600 = $200. In mathematics, it is often useful to view or even define subtraction as a kind of addition, the addition of the opposite. We can view 7 − 3 = 4 as the sum of two terms: seven and negative three. This perspective allows us to apply to subtraction all of the familiar rules and nomenclature of addition. Subtraction is not associative or commutative— in fact, it is anticommutative— but addition of signed numbers is both.

Basic subtraction: integers

anticommutative Imagine a line segment of length b with the left end labeled a and the right end labeled c. Starting from a, it takes b steps to the right to reach c. This movement to the right is modeled mathematically by addition: :a + b = c. From c, it takes b steps to the left to get back to a. This movement to the left is modeled by subtraction: :cb = a. addition Now, imagine a line segment labelled with the numbers 1, 2, and 3. From position 3, it takes no steps to the left to stay at 3, so 3 − 0 = 3. It takes 2 steps to the left to get to position 1, so 3 − 2 = 1. This picture is inadequate to describe what would happen after going 3 steps to the left of position 3. To represent such an operation, the line must be extended. To subtract arbitrary natural numbers, one begins with a line containing every natural number (0, 1, 2, 3, 4, ...). From 3, it takes 3 steps to the left to get to 0, so 3 − 3 = 0. But 3 − 4 is still invalid since it again leaves the line. The natural numbers are not a useful context for subtraction. The solution is to consider the integer number line (…, −3, −2, −1, 0, 1, 2, 3, …). From 3, it takes 4 steps to the left to get to −1, so :3 − 4 = −1.

See also


- Elementary arithmetic
- Decrement
- Negative and non-negative numbers

Algorithms


- Method of complements
- Subtraction without borrowing

External links

Printable Worksheets: [http://www.kwiznet.com/p/takeQuiz.php?ChapterID=1214&CurriculumID=2&Method=Worksheet&NQ=24&NQ4P=3 One Digit Subtraction], [http://www.kwiznet.com/p/takeQuiz.php?ChapterID=1202&CurriculumID=2&Method=Worksheet&NQ=24&NQ4P=3 Two Digit Subtraction], and [http://www.kwiznet.com/p/takeQuiz.php?ChapterID=1273&CurriculumID=3&Method=Worksheet&NQ=24&NQ4P=3 Four Digit Subtraction]
- [http://www.cut-the-knot.org/Curriculum/Arithmetic/SubtractionGame.shtml Subtraction Game] at cut-the-knot
- [http://webhome.idirect.com/~totton/abacus/pages.htm#Subtraction1 Subtraction on a Japanese abacus] selected from [http://webhome.idirect.com/~totton/abacus/ Abacus: Mystery of the Bead] Category:Arithmetic ko:뺄셈 ja:減法 simple:Subtraction th:การลบ

Multiplication

:This article is about multiplication in mathematics. For multiplication in music, see multiplication (music). In its simplest form, multiplication is the sum of a list of identical numbers. For example, the product 7 × 4 is 7 + 7 + 7 + 7. The numbers being multiplied are called the multiplicand and multiplier or the factors.

Notation

Multiplication can be denoted in several equivalent ways. All of the following mean, "5 times 2": :5×2 :5·2 :(5)2, 5(2), (5)(2), 5[2], [5]2, [5][2] :5
- 2 The asterisk (
- ) is often used on computers because it is a symbol on every keyboard, but it is rarely used when writing math by hand. This usage originated in the FORTRAN programming language. Frequently, multiplication is implied by Juxtaposition rather than shown in a notation. This is standard in algebra, taking forms like :5x and xy This is potentially confusing if variables are permitted to have names longer than one letter. The notation is not used with numbers alone: 52 never means 5 × 2. If the terms are not written out individually, then the product may be written with an ellipsis to mark out the missing terms, as with other series operations (like sums). Thus, the product of all the natural numbers from 1 to 100 can be written 1 \cdot 2 \cdot \ldots \cdot 99 \cdot 100. This can also be written with the ellipsis vertically placed in the middle of the line, as 1 \cdot 2 \cdot \cdots \cdot 99 \cdot 100. Alternatively, the product can be written with the product symbol, which derives from the capital letter Π (Pi) in the Greek alphabet. This is defined as: : \prod_^ x_ := x_ \cdot x_ \cdot x_ \cdot \cdots \cdot x_ \cdot x_. The subscript gives the symbol for a dummy variable (i in our case) and its lower value (m); the superscript gives its upper value. So for example: : \prod_^ \left(1 + \right) = \left(1 + \right) \cdot \left(1 + \right) \cdot \left(1 + \right) \cdot \left(1 + \right) \cdot \left(1 + \right) = . One may also consider products of infinitely many terms; these are called infinite products. Notationally, we would replace n above by the infinity symbol (∞). The product of such a series is defined as the limit of the product of the first n terms, as n grows without bound. That is: : \prod_^ x_ := \lim_ \prod_^ x_. One can similarly replace m with negative infinity, and :\prod_^\infty x_i := \left(\lim_\prod_^m x_i\right) \cdot \left(\lim_\prod_^n x_i\right), for some integer m, provided both limits exist.

Definition

As for what multiplication means, the product of two whole numbers n and m is: :mn := \sum_^n m This is just a shorthand for saying, "Add m to itself n times." Expanding the above to make its meaning more clear: :m × n = m + m + m + ... + m such that there are n m's added together. So for instance:
  • 5 × 2 = 5 + 5 = 10
  • 2 × 5 = 2 + 2 + 2 + 2 + 2 = 10
  • 4 × 3 = 4 + 4 + 4 = 12
  • m × 6 = m + m + m + m + m + m
Using this definition, it is easy to prove some interesting properties of multiplication. As the first two examples above hint at, the order in which two numbers are multiplied does not matter. This is called the commutative property and it turns out to be true in general that for any two numbers x and y, :x · y = y · x. Multiplication also has what is called the associative property. The associative property means that for any three numbers x, y, and z, :(x · y)z = x(y · z). Note from algebra: the parentheses mean that the operations inside the parentheses must be done before anything outside the parentheses is done. Multiplication also has what is called a distributive property with respect to the addition, because :x(y + z) = xy + xz. Also of interest is that any number times 1 is equal to itself, thus, :1 · x = x. and this is called the identity property What about zero? Well, we have: :m · 0 = m + m + m +...+ m where there are zero m's added together. The sum of zero m's is zero, so :m · 0 = 0 no matter what m is (as long as it is finite). Multiplication with negative numbers also requires a little thought. First consider negative 1. For any positive integer m: :(−1)m = (−1) + (−1) +...+ (−1) = −m This is an interesting fact that shows that any negative number is just negative one multiplied by a positive number. So multiplication with any integers can be represented by multiplication of whole numbers and (−1)'s. All that remains is to explicitly define (−1)(−1): :(−1)(−1) = −(−1) = 1 In this way, the multiplication of any two integers is defined. The definitions can be extended to larger and larger sets of numbers: first to vulgar fractions called the rational numbers, then to infinitely long decimals called real numbers, and then to the complex numbers. Students are sometimes mystified when told that the result of multiplying no numbers is 1. A formal recursive definition of multiplication can be given by the rules: : x · 0 = 0 : x · y = x + x·(y − 1) where x is a real number, and y is a natural number. Once multiplication has been defined for natural numbers, it can be extended to include integers, and then to real and complex numbers.

Computation

For fast ways to compute products of large numbers, see multiplication algorithms. Some algorithms are suitable for multiplying numbers using pencil and paper. Most, such as lattice multiplication, require a multiplication table of memorized or consulted products of small numbers (typically any two numbers from 0 to 9); the peasant multiplication algorithm does not.

See also


- Peasant multiplication
- reciprocal
- tables of multiplication
- Product (mathematics) - lists generalizations

External links


- [http://www.cut-the-knot.org/do_you_know/multiplication.shtml Multiplication] at cut-the-knot
- [http://www.mathsisfun.com/multiplying-negatives.html Multiplying Negative Numbers]
- [http://www.cut-the-knot.org/blue/SysTable.shtml Arithmetic Operations In Various Number Systems] at cut-the-knot
- [http://webhome.idirect.com/~totton/abacus/pages.htm#Multiplication1 Multiplication on a Japanese abacus] selected from [http://webhome.idirect.com/~totton/abacus/ Abacus: Mystery of the Bead]
- [http://webhome.idirect.com/~totton/suanpan/mod_mult/ Modern Chinese Multiplication Techniques on an Abacus] Category:Elementary arithmetic ko:곱셈 ja:乗法 simple:Multiplication th:การคูณ





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 computer 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. Executable uncompiled programs are referred to as scripts.

Terminology

The term "program" specifically refers to the blocks of instruction code that are loaded into memory for execution by an interpreter. (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 applications 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 British English 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..

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 cards. 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 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. CPUs 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. 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 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 implementing new source code (or simply just "code") and testing, analyzing and refining the newly implemented code for syntax and semantic 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 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 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 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 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 profiled to test routines for efficiency. Note that although an algorithm can be theoretically performant, it can be poorly implemented wasting valuable computer resources. (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 virtual computer . The example shows a selection of instructions with the corresponding 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 ISA). 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 program

Bibliography


- Miles J. Murdocca & Vincent P. Heuring (2000). Principles of Computer Architecture. Prentice-Hall, Inc. ISBN 0-201-43664-7
- [http://iiusaedu.com/~murdocca/POCA Principles of Computer Architecture] (POCA) – ARCTools virtual computer available for download to execute referenced code, accessed August 24, 2005
- J.Glenn Brookshear (1989). Theory of Computation, Formal Languages, Automata, and Complexity. The Benjamin/Cummings Publishing Co.Inc. ISBN 0-8053-0143-7

External links


- [http://www.webopedia.com/TERM/P/program.html Definition of Program @ Webopedia]
- [http://www.Agtivity.com/computer_program.htm Definition of Computer program @ Agtivity]
- [http://wombat.doc.ic.ac.uk/foldoc/foldoc.cgi?query=software Definition of Software @ FOLDOC] Category:Computer science Category:Software
-
ja:プログラム (コンピュータ) ko:프로그램 simple:Computer program th:โปรแกรม

1980's

The 1980s in its most obvious sense refers to the decade between 1980 and 1989. The decade was one of frantic change. It was also an era of political and economic decentralisation, especially in countries with mixed and command economies. Political events and trends of the 1980s culminated in the toppling of military governments and authoritarian regimes, including every communist Warsaw Pact state in Eastern Europe, bringing to a close the decades-long Cold War. The 1980s also saw very rapid developments in numerous sectors of technology which have defined the modern consumer world, particularly electronics like Personal Computers, gaming systems, the arrival of the first commercially available hand held mobile phones (the first being the Motorola DynaTAC 8000X in 1983) and various audio technologies such as the compact disc, which are still prominent well into the 2000s. The population of the world increased more dramatically in the 1980s than any other decade in human history, adding nearly one billion new people in the course of the decade. This is an important fact as such astronomical growth of the human race is unlikely to ever be repeated in the future due to current population trends, which are consistently showing a decline in birth rates across the globe. Children born in the 1980s are likely to have an extremely prominent position in world business and government affairs from the 2020s all the way through to the 2050s due to their immense population and potential voting powers.

Criticism/Backlash

Coined the "me decade," this decade has been somewhat derided since as early as 1989 for its perceived greediness among Yuppies, certain clothes/music/hairstyles which seem outlandish by modern standards, and of course the discovery of the AIDS virus in the early part of the decade, unlike the 1990s which have had a very positive receiving into the 21st Century despite criticism for the 90s' "slacker" image.

Technology

21st Century] 21st Century]
- Bulletin board system popularity.
- Popularization of personal computers, Walkmans, VHS videocassette recorders, and cassette players .
- Introduction of the IBM PC in 1981.
- Home video games become enormously popular, most notably Atari until the market crashes in 1983; the rise of Nintendo brings about full recovery.
- The first Space Shuttle mission, STS-1, launched in 1981.
- Space Shuttle Challenger disaster in 1986.
- The Soviet Union launches the space station Mir in 1986.
- Apple Macintosh, first commercially successful GUI, is released in 1984.
- Accident at Chernobyl nuclear reactor, April 1986.
- Framework (office suite) launched
- Internet actively used by geeks in late 1980s
- First commercial hand-held mobile phone - Motorola DynaTAC 8000X 1983.

Science


- Discovery of the W and Z bosons at CERN.
- Development of the scanning tunneling microscope by Gerd Binnig and Heinrich Rohrer.
- English computer programmer Tim Berners-Lee invents the World Wide Web at CERN, Switzerland.

War, peace and politics

Switzerland]
- Cold War peaks; fall of the Iron Curtain.
- Jimmy Carter announces a U.S. boycott of the 1980 Summer Olympics in Moscow; Eastern Bloc countries boycott the 1984 Summer Olympics in Los Angeles.
- Solidarity movement in Poland launched in 1981. It eventually topples the country's Communist regime.
- Prime Minister of India Indira Gandhi tackles with a growing Sikh insurgency and the Khalistan Movement. She orders Operation Blue Star on the holy Golden Temple. She is assassinated by her Sikh bodyguards on October 31, 1984.
- Ronald Reagan proposes the Strategic Defense Initiative, derided as "Star Wars." Deploys Pershing missiles in Western Europe to counter the Soviet SS-20, to some protests.
- Soviet fighters down Korean Air Flight 007 in 1983, leading to a high point in international tensions.
- Three Soviet Premiers die in rapid succession: Leonid Brezhnev, Yuri Andropov, and Konstantin Chernenko.
- Gorbachev introduces Glasnost and Perestroika in the Soviet Union.
- Fall of the Berlin Wall in East Germany in 1989, preparing the way to German reunification.
- Velvet revolution in Czechoslovakia.
- Revolution in Romania, execution of Ceauşescu.
- Margaret Thatcher and Thatcherism dominate British politics.
- The "Reagan Revolution", beginning with the election of 1980, introduces so-called neoconservatives to Washington.
- In 1981, François Mitterrand becomes France's President, the most politically successful Socialist in French history.
- Helmut Kohl is elected in West Germany in 1982, leading to the defeat of the anti-deployment movement; he becomes the longest serving Chancellor so far.
- Falklands War; Argentina invades the Falkland islands in 1982 but defeated by the United Kingdom.
- Israel invades Lebanon in 1982, . A suicide bomber kills 241 U.S. marines stationed there as peacekeepers.
- Iran-Iraq war from 1980 to 1988 causes the deaths of at least hundreds of thousands.
- Over 120,000 flee Cuba in 1980 during the Mariel Boatlift, during which Fidel Castro released many criminals into American harbors.
- P.W. Botha suppresses anti-apartheid activists; international boycotts of South Africa continue.
- King Juan Carlos of Spain prevents a military coup in 1980. Spain joined NATO in 1982; it joined the European Union with Portugal in 1986.
- In 1989 students protest on Tiananmen Square, Beijing, China and are eventually suppressed.
- Large protests in the Philippines topples the Ferdinand Marcos dictatorship; military rule ends after protests in Argentina and South Korea.
- Augusto Pinochet forms a new constitution, holds a referendum on rule and loses. Democracy is restored.
- The Soviet Union ends its disastrous military campaign in Afghanistan.
- Former United Nations Secretary-General Kurt Waldheim is exposed as a former Nazi
- Vietnam continues its military occupation of Cambodia.
- In Europe, rise of alleged neo-fascist parties (Le Pen in France, Schönhuber/Republikaner in Germany, Haider in Austria), parallel to a rise of Green parties.
- Political correctness becomes a concern in mainstream politics.
- Ronald Reagan decides to invade Grenada in 1984 and depose the nascent hard-line communist government.
- The Reagan administration bombs Libya in 1986 in response to alleged Libyan support for attacks on U.S. servicemen in Europe.
- Under George H. W. Bush, the U.S. invades Panama in 1989 to overthrow Manuel Noriega.
- The Reagan Doctrine implements support for anti-communist or anti-Soviet insurgencies most notably in Nicaragua, Angola, Cambodia, and Afghanistan. This leads to continued civil war, the deposition of several regimes, some democratization, but also the Iran-Contra scandal.
- The United States launches a covert war against the Sandinista government of Nicaragua and is condemned by the World Court for mining Nicaragua's harbour, an authority and judgment the U.S. administration did not recognize.
- President Tito of Yugoslavia dies.
- Release of Americans held hostage in Iran.
- Iranian leader Ayatollah Khomeini issues a fatwa urging the killing of Salman Rushdie.
- Pan Am Flight 103 explodes over Lockerbie, Scotland, UK.
- In 1985, A radical PLO offshoot called Palestine Liberation Front hijacks the Achille Lauro and shoots the wheelchair-bound Leon Klinghoffer, throwing him overboard.
- Terror groups Abu Nidal and Hezbollah rise to prominence in Western attention.
- Dark years for Malta and its politics. Violence is culminated by the murder of Raymond Caruana and blocking entry to Nationalist supporters into the southern village of Zejtun.
- The Rainbow Warrior is sunk by French secret service agents.

Economics

secret service 1987 through 19 January 1988)]]
- Reaganomics, Thatcherism and Rogernomics.
- In the United States the longest bull market in history begins in 1983; Dow Jones Industrial Average passes 2000 point milestone January 8, 1987.
- OPEC controls slip; petroleum prices collapse below $10 per barrel by mid-1986, devastating oil-producing nations such as Mexico.
- U.S. Midwest Farm Crisis 19811985.
- East Asian Tigers' share of world trade rises significantly.
- U.S. balance of trade falls into chronic deficit; populists criticize trade relations with Japan.
- Stockmarkets across the world crash on Black Monday, October 19, 1987. The New York Stock Exchange suffers its largest one-day stock market drop.
- Late 1980s recession

Trends and Fashions


- The video game console begins to outstrip the arcade game.
- The Rubik's cube, Cabbage Patch Kids, "Baby on Board" signs, and Trivial Pursuit fads capture the interest of the American public.fad]
- Nerds are popular subject.
- Alcohol education expands.
- Hair becomes big and poofy, or otherwise eccentric. Examples include the Mullet and the Flock of Seagulls cuts.
- Power Dressing was a major fashion statement of the decade, characterised by the use of increasingly large shoulder pads - the origins of this trend are often attributed to the American television series "Dynasty" and, specifically to one of its stars - the British actress Joan Collins.
- Pop stars of the era such as Duran Duran and television shows like Miami Vice brought the trend to the male fashion world, often accompanied by "designer stubble" and blonde highlights.
- Women's Liberation movement increases women's role in the workplace, and establishes new precedents for US women. As a carry-over from the 1970s, more and more women take to calling themselves "Ms." versus "Mrs." or "Miss"
- No-Fault divorce laws pave the way for increased divorce rate, as depicted in the movie, Irreconcilable Differences. No-Fault divorce catapults record numbers of women and children into the throes of poverty. The increase in single parent homes and, perhaps more significantly, homes in which both parents work leads to the phenomenon of Latch-key children, where children come home to an empty house and watch a lot of television.
- Neo-prohibitionism grows in popularity.
- Ninja and martial arts mania sweeps North America due to the popularity of Kung Fu Theater and Ninja Movies. Many instructional books are published and sold by many authors claiming to be experts. This is also often blamed as the beginning of the