Friday, November 30, 2012

System Languages

computer programming language

computer programming language, any of various languages for expressing a set of detailed instructions for a digital computer. Such instructions can be executed directly when they are in the computer manufacturer-specific numerical form known as machine language, after a simple substitution process when expressed in a corresponding assembly language, or after translation from some “higher-level” language. Although there are over 2,000 computer languages, relatively few are widely used.
Machine and assembly languages are “low-level,” requiring a programmer to manage explicitly all of a computer’s idiosyncratic features of data storage and operation. In contrast, high-level languages shield a programmer from worrying about such considerations and provide a notation that is more easily written and read by programmers.
  

Language types

Machine and assembly languages

machine language:-

machine language are  consists of the numeric codes for the operations that a particular computer can execute directly. The codes are strings of 0s and 1s, or binary digits (“bits”), which are frequently converted both from and to hexadecimal (base 16) for human viewing and modification. Machine language instructions typically use some bits to represent operations, such as addition, and some to represent operands, or perhaps the location of the next instruction. Machine language is difficult to read and write, since it does not resemble conventional mathematical notation or human language, and its codes vary from computer to computer.

Assembly Language:-

  Assembly Language is one level above machine language. It uses short mnemonic codes for instructions and allows the programmer to introduce names for blocks of memory that hold data. One might thus write “add pay, total” instead of “0110101100101000” for an instruction that adds two numbers.
Assembly language is designed to be easily translated into machine language. Although blocks of data may be referred to by name instead of by their machine addresses, assembly language does not provide more sophisticated means of organizing complex information. Like machine language, assembly language requires detailed knowledge of internal computer architecture. It is useful when such details are important, as in programming a computer to interact with input/output devices (printers, scanners, storage devices, and so forth).


Algorithmic languages:-

Algorithmic languages are designed to express mathematical or symbolic computations. They can express algebraic operations in notation similar to mathematics and allow the use of subprograms that package commonly used operations for reuse. They were the first high-level languages.

FORTRAN :-
 
The first important algorithmic language was FORTRAN (formula translation), designed in 1957 by an IBM team led by John Backus. It was intended for scientific computations with real numbers and collections of them organized as one- or multidimensional arrays. Its control structures included conditional IF statements, repetitive loops (so-called DO loops), and a GOTO statement that allowed non sequential execution of program code. FORTRAN made it convenient to have subprograms for common mathematical operations, and built libraries of them.
FORTRAN was also designed to translate into efficient machine language. It was immediately successful and continues to evolve.

ALGOL :-

ALGOL (algorithmic language) was designed by a committee of American and European computer scientists during 1958–60 for publishing algorithms, as well as for doing computations. Like LISP (described in the next section), ALGOL had recursive subprograms—procedures that could invoke themselves to solve a problem by reducing it to a smaller problem of the same kind. ALGOL introduced block structure, in which a program is composed of blocks that might contain both data and instructions and have the same structure as an entire program. Block structure became a powerful tool for building large programs out of small components.
ALGOL contributed a notation for describing the structure of a programming language, Backus–Naur Form, which in some variation became the standard tool for stating the syntax (grammar) of programming languages. ALGOL was widely used in Europe, and for many years it remained the language in which computer algorithms were published. Many important languages, such as Pascal and Ada (both described later), are its descendants.

LISP :-

LISP (list processing) was developed about 1960 by John McCarthy at the Massachusetts Institute of Technology (MIT) and was founded on the mathematical theory of recursive functions (in which a function appears in its own definition). A LISP program is a function applied to data, rather than being a sequence of procedural steps as in FORTRAN and ALGOL. LISP uses a very simple notation in which operations and their operands are given in a parenthesized list. For example, (+ a (* b c)) stands for a + b*c. Although this appears awkward, the notation works well for computers. LISP also uses the list structure to represent data, and, because programs and data use the same structure, it is easy for a LISP program to operate on other programs as data.
LISP became a common language for artificial intelligence (AI) programming, partly owing to the confluence of LISP and AI work at MIT and partly because AI programs capable of “learning” could be written in LISP as self-modifying programs. LISP has evolved through numerous dialects, such as Scheme and Common LISP.

C :-

The C programming language was developed in 1972 by Dennis Ritchie and Brian Kernighan at the AT&T Corporation for programming computer operating systems. Its capacity to structure data and programs through the composition of smaller units is comparable to that of ALGOL. It uses a compact notation and provides the programmer with the ability to operate with the addresses of data as well as with their values. This ability is important in systems programming, and C shares with assembly language the power to exploit all the features of a computer’s internal architecture. C, along with its descendant C++, remains one of the most common languages.

Business-oriented languages

COBOL :-

COBOL (common business oriented language) has been heavily used by businesses since its inception in 1959. A committee of computer manufacturers and users and U.S. government organizations established CODASYL (Committee on Data Systems and Languages) to develop and oversee the language standard in order to ensure its portability across diverse systems.
COBOL uses an English-like notation—novel when introduced. Business computations organize and manipulate large quantities of data, and COBOL introduced the record data structure for such tasks. A record clusters heterogeneous data such as a name, ID number, age, and address into a single unit. This contrasts with scientific languages, in which homogeneous arrays of numbers are common. Records are an important example of “chunking” data into a single object, and they appear in nearly all modern languages.

 SQL :-

SQL (structured query language) is a language for specifying the organization of databases (collections of records). Databases organized with SQL are called relational because SQL provides the ability to query a database for information that falls in a given relation. For example, a query might be “find all records with both last_name Smith and city New York.” Commercial database programs commonly use a SQL-like language for their queries.

Education-oriented languages

BASIC :-

BASIC (beginner’s all-purpose symbolic instruction code) was designed at Dartmouth College in the mid-1960s by John Kemeny and Thomas Kurtz. It was intended to be easy to learn by novices, particularly non-computer science majors, and to run well on a time-sharing computer with many users. It had simple data structures and notation and it was interpreted: a BASIC program was translated line-by-line and executed as it was translated, which made it easy to locate programming errors.
Its small size and simplicity also made BASIC a popular language for early personal computers. Its recent forms have adopted many of the data and control structures of other contemporary languages, which makes it more powerful but less convenient for beginners. 

Pascal :-

About 1970 Niklaus Wirth of Switzerland designed Pascal to teach structured programming, which emphasized the orderly use of conditional and loop control structures without GOTO statements. Although Pascal resembled ALGOL in notation, it provided the ability to define data types with which to organize complex information, a feature beyond the capabilities of ALGOL as well as FORTRAN and COBOL. User-defined data types allowed the programmer to introduce names for complex data, which the language translator could then check for correct usage before running a program.
During the late 1970s and ’80s, Pascal was one of the most widely used languages for programming instruction. It was available on nearly all computers, and, because of its familiarity, clarity, and security, it was used for production software as well as for education.
  
Logo :-

Logo originated in the late 1960s as a simplified LISP dialect for education; Seymour Papert and others used it at MIT to teach mathematical thinking to schoolchildren. It had a more conventional syntax than LISP and featured “turtle graphics,” a simple method for generating computer graphics. (The name came from an early project to program a turtlelike robot.) Turtle graphics used body-centred instructions, in which an object was moved around a screen by commands, such as “left 90” and “forward,” that specified actions relative to the current position and orientation of the object rather than in terms of a fixed framework. Together with recursive routines, this technique made it easy to program intricate and attractive patterns.

Hypertalk :-

Hypertalk was designed as “programming for the rest of us” by Bill Atkinson for Apple’s Macintosh. Using a simple English-like syntax, Hypertalk enabled anyone to combine text, graphics, and audio quickly into “linked stacks” that could be navigated by clicking with a mouse on standard buttons supplied by the program. Hypertalk was particularly popular among educators in the 1980s and early ’90s for classroom multimedia presentations. Although Hypertalk had many features of object-oriented languages (described in the next section), Apple did not develop it for other computer platforms and let it languish; as Apple’s market share declined in the 1990s, a new cross-platform way of displaying multimedia left Hypertalk all but obsolete (see the section World Wide Web display languages).

Object-oriented languages 

 

Object-oriented languages help to manage complexity in large programs. Objects package data and the operations on them so that only the operations are publicly accessible and internal details of the data structures are hidden. This information hiding made large-scale programming easier by allowing a programmer to think about each part of the program in isolation. In addition, objects may be derived from more general ones, “inheriting” their capabilities. Such an object hierarchy made it possible to define specialized objects without repeating all that is in the more general ones.
Object-oriented programming began with the Simula language (1967), which added information hiding to ALGOL. Another influential object-oriented language was Smalltalk (1980), in which a program was a set of objects that interacted by sending messages to one another.

C++ :-

The C++ language, developed by Bjarne Stroustrup at AT&T in the mid-1980s, extended C by adding objects to it while preserving the efficiency of C programs. It has been one of the most important languages for both education and industrial programming. Large parts of many operating systems, such as the Microsoft Corporation’s Windows 98, were written in C++.

Ada :-

Ada was named for Augusta Ada King, countess of Lovelace, who was an assistant to the 19th-century English inventor Charles Babbage, and is sometimes called the first computer programmer. Ada, the language, was developed in the early 1980s for the U.S. Department of Defense for large-scale programming. It combined Pascal-like notation with the ability to package operations and data into independent modules. Its first form, Ada 83, was not fully object-oriented, but the subsequent Ada 95 provided objects and the ability to construct hierarchies of them. While no longer mandated for use in work for the Department of Defense, Ada remains an effective language for engineering large programs.

Java :-

In the early 1990s, Java was designed by Sun Microsystems, Inc., as a programming language for the World Wide Web (WWW). Although it resembled C++ in appearance, it was fully object-oriented. In particular, Java dispensed with lower-level features, including the ability to manipulate data addresses, a capability that is neither desirable nor useful in programs for distributed systems. In order to be portable, Java programs are translated by a Java Virtual Machine specific to each computer platform, which then executes the Java program. In addition to adding interactive capabilities to the Internet through Web “applets,” Java has been widely used for programming small and portable devices, such as mobile telephones.

Visual Basic :-

Visual Basic was developed by Microsoft to extend the capabilities of BASIC by adding objects and “event-driven” programming: buttons, menus, and other elements of graphical user interfaces (GUIs). Visual Basic can also be used within other Microsoft software to program small routines.

Declarative languages


Declarative languages, also called nonprocedural or very high level, are programming languages in which (ideally) a program specifies what is to be done rather than how to do it. In such languages there is less difference between the specification of a program and its implementation than in the procedural languages described so far. The two common kinds of declarative languages are logic and functional languages.
Logic programming languages, of which PROLOG (programming in logic) is the best known, state a program as a set of logical relations (e.g., a grandparent is the parent of a parent of someone). Such languages are similar to the SQL database language. A program is executed by an “inference engine” that answers a query by searching these relations systematically to make inferences that will answer a query. PROLOG has been used extensively in natural language processing and other AI programs.
Functional languages have a mathematical style. A functional program is constructed by applying functions to arguments. Functional languages, such as LISP, ML, and Haskell, are used as research tools in language development, in automated mathematical theorem provers, and in some commercial projects.

Scripting languages


Scripting languages are sometimes called little languages. They are intended to solve relatively small programming problems that do not require the overhead of data declarations and other features needed to make large programs manageable. Scripting languages are used for writing operating system utilities, for special-purpose file-manipulation programs, and, because they are easy to learn, sometimes for considerably larger programs.
PERL (practical extraction and report language) was developed in the late 1980s, originally for use with the UNIX operating system. It was intended to have all the capabilities of earlier scripting languages. PERL provided many ways to state common operations and thereby allowed a programmer to adopt any convenient style. In the 1990s it became popular as a system-programming tool, both for small utility programs and for prototypes of larger ones. Together with other languages discussed below, it also became popular for programming computer Web “servers.”

Document formatting languages


Document formatting languages specify the organization of printed text and graphics. They fall into several classes: text formatting notation that can serve the same functions as a word processing program, page description languages that are interpreted by a printing device, and, most generally, markup languages that describe the intended function of portions of a document.

TeX :-

TeX was developed during 1977–86 as a text formatting language by Donald Knuth, a Stanford University professor, to improve the quality of mathematical notation in his books. Text formatting systems, unlike WYSIWYG (“What You See Is What You Get”) word processors, embed plain text formatting commands in a document, which are then interpreted by the language processor to produce a formatted document for display or printing. TeX marks italic text, for example, as {\it this is italicized}, which is then displayed as this is italicized.
TeX largely replaced earlier text formatting languages. Its powerful and flexible abilities gave an expert precise control over such things as the choice of fonts, layout of tables, mathematical notation, and the inclusion of graphics within a document. It is generally used with the aid of “macro” packages that define simple commands for common operations, such as starting a new paragraph; LaTeX is a widely used package. TeX contains numerous standard “style sheets” for different types of documents, and these may be further adapted by each user. There are also related programs such as BibTeX, which manages bibliographies and has style sheets for all of the common bibliography styles, and versions of TeX for languages with various alphabets.

PostScript :-

PostScript is a page-description language developed in the early 1980s by Adobe Systems Incorporated on the basis of work at Xerox PARC (Palo Alto Research Center). Such languages describe documents in terms that can be interpreted by a personal computer to display the document on its screen or by a microprocessor in a printer or a typesetting device.
PostScript commands can, for example, precisely position text, in various fonts and sizes, draw images that are mathematically described, and specify colour or shading. PostScript uses postfix, also called reverse Polish notation, in which an operation name follows its arguments. Thus, “300 600 20 270 arc stroke” means: draw (“stroke”) a 270-degree arc with radius 20 at location (300, 600). Although PostScript can be read and written by a programmer, it is normally produced by text formatting programs, word processors, or graphic display tools.
The success of PostScript is due to its specification’s being in the public domain and to its being a good match for high-resolution laser printers. It has influenced the development of printing fonts, and manufacturers produce a large variety of PostScript fonts.

  
SGML :-

SGML (standard generalized markup language) is an international standard for the definition of markup languages; that is, it is a metalanguage. Markup consists of notations called tags that specify the function of a piece of text or how it is to be displayed. SGML emphasizes descriptive markup, in which a tag might be “.” Such a markup denotes the document function, and it could be interpreted as reverse video on a computer screen, underlining by a typewriter, or italics in typeset text.
SGML is used to specify DTDs (document type definitions). A DTD defines a kind of document, such as a report, by specifying what elements must appear in the document—e.g.,

—and giving rules for the use of document elements, such as that a paragraph may appear within a table entry but a table may not appear within a paragraph. A marked-up text may be analyzed by a parsing program to determine if it conforms to a DTD. Another program may read the markups to prepare an index or to translate the document into PostScript for printing. Yet another might generate large type or audio for readers with visual or hearing disabilities.</p> <h3> <span class="eb-topic-section-title">World Wide Web display languages</span></h3> <p style="text-align: left;"> <b><span class="eb-topic-section-title"> </span><span class="eb-topic-section-title">HTML :-</span></b></p> <p style="text-align: left;"> <b><span class="eb-topic-section-title"><br></span></b></p> <p> The World Wide Web is a system for displaying text, graphics, and audio retrieved over the Internet on a computer monitor. Each retrieval unit is known as a Web page, and such pages frequently contain “links” that allow related pages to be retrieved. HTML (<em>h</em>yper<em>t</em>ext <em>m</em>arkup <em>l</em>anguage) is the markup language for encoding Web pages. It was designed by Tim Berners-Lee at the CERN nuclear physics laboratory in Switzerland during the 1980s and is defined by an SGML DTD. HTML markup tags specify document elements such as headings, paragraphs, and tables. They mark up a document for display by a computer program known as a Web browser. The browser interprets the tags, displaying the headings, paragraphs, and tables in a layout that is adapted to the screen size and fonts available to it.</p> <p> HTML documents also contain anchors, which are tags that specify links to other Web pages. An anchor has the form <a HREF= “http://www.britannica.com”> Encyclopædia Britannica</A>, where the quoted string is the URL (universal resource locator) to which the link points (the Web “address”) and the text following it is what appears in a Web browser, underlined to show that it is a link to another page. What is displayed as a single page may also be formed from multiple URLs, some containing text and others graphics.</p> <p style="text-align: left;"> <b><span class="eb-topic-section-title">XML :-</span></b></p> <p style="text-align: left;"> <b><span class="eb-topic-section-title"><br></span></b></p> <p> HTML does not allow one to define new text elements; that is, it is not extensible. XML (extensible markup language) is a simplified form of SGML intended for documents that are published on the Web. Like SGML, XML uses DTDs to define document types and the meanings of tags used in them. XML adopts conventions that make it easy to parse, such as that document entities are marked by both a beginning and an ending tag, such as <begin>…</BEGIN>. XML provides more kinds of hypertext links than HTML, such as bidirectional links and links relative to a document subsection.</p> <p> Because an author may define new tags, an XML DTD must also contain rules that instruct a Web browser how to interpret them—how an entity is to be displayed or how it is to generate an action such as preparing an e-mail message.</p> <p> <span class="eb-topic-section-title"> </span></p> <p> <b><span class="eb-topic-section-title">Web scripting :-</span></b></p> <p> <b><span class="eb-topic-section-title"><br></span></b></p> <p> Web pages marked up with HTML or XML are largely static documents. Web scripting can add information to a page as a reader uses it or let the reader enter information that may, for example, be passed on to the order department of an online business. <a href="http://www.britannica.com/EBchecked/topic/1086477/CGI">CGI</a> (common gateway interface) provides one mechanism; it transmits requests and responses between the reader’s Web browser and the Web server that provides the page. The CGI component on the server contains small programs called scripts that take information from the browser system or provide it for display. A simple script might ask the reader’s name, determine the Internet address of the system that the reader uses, and print a greeting. Scripts may be written in any programming language, but, because they are generally simple text-processing routines, scripting languages like PERL are particularly appropriate.</p> <p> Another approach is to use a language designed for Web scripts to be executed by the browser. JavaScript is one such language, designed by the Netscape Communications Corp., which may be used with both Netscape’s and Microsoft’s browsers. JavaScript is a simple language, quite different from Java. A JavaScript program may be embedded in a Web page with the HTML tag <script language=“JavaScript”>. JavaScript instructions following that tag will be executed by the browser when the page is selected. In order to speed up display of dynamic (interactive) pages, JavaScript is often combined with XML or some other language for exchanging information between the server and the client’s browser. In particular, the XMLHttpRequest command enables asynchronous data requests from the server without requiring the server to resend the entire Web page. This approach, or “philosophy,” of programming is called Ajax (<em>a</em>synchronous <em>J</em>avaScript <em>a</em>nd <em>X</em>ML).</p> <p> VB Script is a subset of Visual Basic. Originally developed for Microsoft’s Office suite of programs, it was later used for Web scripting as well. Its capabilities are similar to those of JavaScript, and it may be embedded in HTML in the same fashion.</p> <p> Behind the use of such scripting languages for Web programming lies the idea of component programming, in which programs are constructed by combining independent previously written components without any further language processing. JavaScript and VB Script programs were designed as components that may be attached to Web browsers to control how they display information.</p> <h2> <span class="eb-topic-section-title">Elements of programming</span></h2> <p style="text-align: left;"> Despite notational differences, contemporary computer languages provide many of the same programming structures. These include basic control structures and data structures. The former provide the means to express algorithms, and the latter provide ways to organize information.<span class="eb-topic-section-title"> </span></p> <p style="text-align: left;"> <span class="eb-topic-section-title"><br></span></p> <h3> <span class="eb-topic-section-title">Control structures</span></h3> <p> Programs written in procedural languages, the most common kind, are like recipes, having lists of ingredients and step-by-step instructions for using them. The three basic control structures in virtually every procedural language are:</p> <ul> <li>1. Sequence—combine the liquid ingredients, and next add the dry ones.</li> <li>2. Conditional—if the tomatoes are fresh then simmer them, but if canned, skip this step.</li> <li>3. Iterative—beat the egg whites until they form soft peaks.</li> </ul> <p> Sequence is the default control structure; instructions are executed one after another. They might, for example, carry out a series of arithmetic operations, assigning results to variables, to find the roots of a quadratic equation <em>a</em><em>x</em><sup class="bps-article-numbersub">2</sup> + <em>b</em><em>x</em> + <em>c</em> = 0. The conditional IF-THEN or IF-THEN-ELSE control structure allows a program to follow alternative paths of execution. Iteration, or looping, gives computers much of their power. They can repeat a sequence of steps as often as necessary, and appropriate repetitions of quite simple steps can solve complex problems.</p> <p> These control structures can be combined. A sequence may contain several loops; a loop may contain a loop nested within it, or the two branches of a conditional may each contain sequences with loops and more conditionals. In the “pseudocode” used in this article, “*” indicates multiplication and “←” is used to assign values to variables. The following programming fragment employs the IF-THEN structure for finding one root of the quadratic equation, using the quadratic formula:</p> <p> <img class="inline-asset" src="http://media-1.web.britannica.com/eb-media/58/76358-004-96617282.jpg" height="34" width="125">.</p> <p> The quadratic formula assumes that <em>a</em> is nonzero and that the discriminant (the portion within the square root sign) is not negative (in order to obtain a real number root). Conditionals check those assumptions:</p> <ul> <li>IF <em>a</em> = 0 THEN</li> <li> ROOT ← −<em>c</em>/<em>b</em></li> <li>ELSE</li> <li> DISCRIMINANT ← <em>b</em>*<em>b</em> − 4*<em>a</em>*<em>c</em></li> <li> IF DISCRIMINANT ≥ 0 THEN</li> <li> ROOT ← (−<em>b</em> + SQUARE_ROOT(DISCRIMINANT))/2*<em>a</em></li> <li> ENDIF</li> <li>ENDIF</li> </ul> <p> The SQUARE_ROOT function used in the above fragment is an example of a subprogram (also called a procedure, subroutine, or function). A subprogram is like a sauce recipe given once and used as part of many other recipes. Subprograms take inputs (the quantity needed) and produce results (the sauce). Commonly used subprograms are generally in a collection or library provided with a language. Subprograms may call other subprograms in their definitions, as shown by the following routine (where ABS is the absolute-value function). SQUARE_ROOT is implemented by using a WHILE (indefinite) loop that produces a good approximation for the square root of real numbers unless <em>x</em> is very small or very large. A subprogram is written by declaring its name, the type of input data, and the output:</p> <ul> <li>FUNCTION SQUARE_ROOT(REAL <em>x</em>) RETURNS REAL</li> <li> ROOT ← 1.0</li> <li> WHILE ABS(ROOT*ROOT − <em>x</em>) ≥ 0.000001</li> <li> AND WHILE ROOT ← (<em>x</em>/ROOT + ROOT)/2</li> <li> RETURN ROOT</li> </ul> <p> Subprograms can break a problem into smaller, more tractable subproblems. Sometimes a problem may be solved by reducing it to a subproblem that is a smaller version of the original. In that case the routine is known as a recursive subprogram because it solves the problem by repeatedly calling itself. For example, the factorial function in mathematics (<em>n</em>! = <em>n</em>∙(<em>n</em>−1)⋯3∙2∙1—i.e., the product of the first <em>n</em> integers), can be programmed as a recursive routine:</p> <ul> <li>FUNCTION FACTORIAL(INTEGER <em>n</em>) RETURNS INTEGER</li> <li> IF <em>n</em> = 0 THEN RETURN 1</li> <li> ELSE RETURN <em>n</em> * FACTORIAL(<em>n</em>−1)</li> </ul> <p> The advantage of recursion is that it is often a simple restatement of a precise definition, one that avoids the bookkeeping details of an iterative solution.</p> <p> At the machine-language level, loops and conditionals are implemented with branch instructions that say “jump to” a new point in the program. The “goto” statement in higher-level languages expresses the same operation but is rarely used because it makes it difficult for humans to follow the “flow” of a program. Some languages, such as Java and Ada, do not allow it.</p> <h3> <span class="eb-topic-section-title"> </span></h3> <h3> <span class="eb-topic-section-title"> </span></h3> </section> </section> </section> </section></section> </section> </section><h1> </h1> </div> World Wide Web display languages

 
HTML :-

The World Wide Web is a system for displaying text, graphics, and audio retrieved over the Internet on a computer monitor. Each retrieval unit is known as a Web page, and such pages frequently contain “links” that allow related pages to be retrieved. HTML (hypertext markup language) is the markup language for encoding Web pages. It was designed by Tim Berners-Lee at the CERN nuclear physics laboratory in Switzerland during the 1980s and is defined by an SGML DTD. HTML markup tags specify document elements such as headings, paragraphs, and tables. They mark up a document for display by a computer program known as a Web browser. The browser interprets the tags, displaying the headings, paragraphs, and tables in a layout that is adapted to the screen size and fonts available to it.
HTML documents also contain anchors, which are tags that specify links to other Web pages. An anchor has the form Encyclopædia Britannica, where the quoted string is the URL (universal resource locator) to which the link points (the Web “address”) and the text following it is what appears in a Web browser, underlined to show that it is a link to another page. What is displayed as a single page may also be formed from multiple URLs, some containing text and others graphics.

XML :-


HTML does not allow one to define new text elements; that is, it is not extensible. XML (extensible markup language) is a simplified form of SGML intended for documents that are published on the Web. Like SGML, XML uses DTDs to define document types and the meanings of tags used in them. XML adopts conventions that make it easy to parse, such as that document entities are marked by both a beginning and an ending tag, such as . XML provides more kinds of hypertext links than HTML, such as bidirectional links and links relative to a document subsection.
Because an author may define new tags, an XML DTD must also contain rules that instruct a Web browser how to interpret them—how an entity is to be displayed or how it is to generate an action such as preparing an e-mail message.
 

Sunday, October 11, 2009


Computer Software

Computer software, or just software is a general term used to describe the role that computer programs, procedures and documentation play in a computer system.
The term includes:

* Application software, such as word processors which perform productive tasks for users.

* Firmware, which is software programmed resident to electrically programmable memory devices on board mainboards or other types of integrated hardware carriers.

* Middleware, which controls and co-ordinates distributed systems.

* System software such as operating systems, which interface with hardware to provide the necessary services for application software.

* Software testing is a domain dependent of development and programming. Software testing consists of various methods to test and declare a software product fit before it can be launched for use by either an individual or a group.

* Testware, which is an umbrella term or container term for all utilities and application software that serve in combination for testing a software package but not necessarily may optionally contribute to operational purposes. As such, testware is not a standing configuration but merely a working environment for application software or subsets thereof.

Software includes things such as websites, programs or video games, that are coded by programming languages like C or C++.

"Software" is sometimes used in a broader context to mean anything which is not hardware but which is used with hardware, such as film, tapes and records.
Contents


* 1 Overview
o 1.1 Relationship to computer hardware
* 2 Types of software
o 2.1 System software
o 2.2 Programming software
o 2.3 Application software
* 3 Software topics
o 3.1 Architecture
o 3.2 Documentation
o 3.3 Library
o 3.4 Standard
o 3.5 Execution
o 3.6 Quality and reliability
o 3.7 License
o 3.8 Patents
* 4 Design and implementation
* 5 Industry and organizations
* 6 References

Overview

Computer software is often regarded as anything but hardware, meaning that the "hard" are the parts that are tangible while the "soft" part is the intangible objects inside the computer. Software encompasses an extremely wide array of products and technologies developed using different techniques like programming languages, scripting languages, microcode, or an FPGA configuration. The types of software include web pages developed by technologies like HTML, PHP, Perl, JSP, ASP.NET, XML, and desktop applications like OpenOffice, Microsoft Word developed by technologies like C, C++, Java,or C#. Software usually runs on an underlying software operating systems such as the Linux or Microsoft Windows. Software also includes video games and the logic systems of modern consumer devices such as automobiles, televisions, and toasters.

Relationship to computer hardware

Computer software is so called to distinguish it from computer hardware, which encompasses the physical interconnections and devices required to store and execute (or run) the software. At the lowest level, software consists of a machine language specific to an individual processor. A machine language consists of groups of binary values signifying processor instructions that change the state of the computer from its preceding state. Software is an ordered sequence of instructions for changing the state of the computer hardware in a particular sequence. It is usually written in high-level programming languages that are easier and more efficient for humans to use (closer to natural language) than machine language. High-level languages are compiled or interpreted into machine language object code. Software may also be written in an assembly language, essentially, a mnemonic representation of a machine language using a natural language alphabet. Assembly language must be assembled into object code via an assembler. Examples of assembly languages are java, visual basic and C++ just to mention afew.

The term "software" was first used in this sense by John W. Tukey in 1958. In computer science and software engineering, computer software is all computer programs. The theory that is the basis for most modern software was first proposed by Alan Turing in his 1935 essay Computable numbers with an application to the Entscheidungsproblem.

Types of software

A layer structure showing where Operating System is located on generally used software systems on desktops

Practical computer systems divide software systems into three major classes[citation needed] system software, programming software and application software, although the distinction is arbitrary, and often blurred.
System software

System software helps run the computer hardware and computer system. It includes a combination of the following:

* device drivers
* operating systems
* servers
* utilities
* windowing systems

The purpose of systems software is to unburden the applications programmer from the often complex details of the particular computer being used, including such accessories as communications devices, printers, device readers, displays and keyboards, and also to partition the computer's resources such as memory and processor time in a safe and stable manner. Examples are- Windows XP, Linux and Mac.

Programming software

Programming software usually provides tools to assist a programmer in writing computer programs, and software using different programming languages in a more convenient way. The tools include:

* compilers
* debuggers
* interpreters
* linkers
* text editors

An Integrated development environment (IDE) is a single application that attempts to manage all these functions.

Application software

Application software allows end users to accomplish one or more specific (not directly computer development related) tasks. Typical applications include:

* industrial automation
* business software
* computer games
* quantum chemistry and solid state physics software
* telecommunications (i.e., the internet and everything that flows on it)
* databases
* educational software
* medical software
* military software
* molecular modeling software
* image editing
* spreadsheet
* Word processing
* Decision making software

Application software exists for and has impacted a wide variety of topics.
Software topics
Architecture

Software architecture

Users often see things differently than programmers. People who use modern general purpose computers (as opposed to embedded systems, analog computers and supercomputers) usually see three layers of software performing a variety of tasks: platform, application, and user software.

* Platform software: Platform includes the firmware, device drivers, an operating system, and typically a graphical user interface which, in total, allow a user to interact with the computer and its peripherals (associated equipment). Platform software often comes bundled with the computer. On a PC you will usually have the ability to change the platform software.

* Application software: Application software or Applications are what most people think of when they think of software. Typical examples include office suites and video games. Application software is often purchased separately from computer hardware. Sometimes applications are bundled with the computer, but that does not change the fact that they run as independent applications. Applications are usually independent programs from the operating system, though they are often tailored for specific platforms. Most users think of compilers, databases, and other "system software" as applications.

* User-written software: End-user development tailors systems to meet users' specific needs. User software include spreadsheet templates, word processor [Platform software: Platform includes the firmware, device drivers, an operating system, and typically a graphical user interface which, in total, allow a user to interact with the computer and its peripherals (associated equipment). Platform software often comes bundled with the computer. On a PC you will usually have the ability to change the platform software. Even email filters are a kind of user software. Users create this software themselves and often overlook how important it is. Depending on how competently the user-written software has been integrated into default application packages, many users may not be aware of the distinction between the original packages, and what has been added by co-workers.

Documentation Software documentation

Most software has software documentation so that the end user can understand the program, what it does, and how to use it. Without a clear documentation, software can be hard to use—especially if it is a very specialized and relatively complex software like the Photoshop or AutoCAD.

Developer documentation may also exist, either with the code as comments and/or as separate files, detailing how the programs works and can be modified.

Library Software library
An executable is almost always not sufficiently complete for direct execution. Software libraries include collections of functions and functionality that may be embedded in other applications. Operating systems include many standard Software libraries, and applications are often distributed with their own libraries.

Standard Software standard

Since software can be designed using many different programming languages and in many different operating systems and operating environments, software standard is needed so that different software can understand and exchange information between each other. For instance, an email sent from a Microsoft Outlook should be readable from Yahoo! Mail and vice versa.

Execution Execution (computing)

Computer software has to be "loaded" into the computer's storage (such as a [hard drive], memory, or RAM). Once the software has loaded, the computer is able to execute the software. This involves passing instructions from the application software, through the system software, to the hardware which ultimately receives the instruction as machine code. Each instruction causes the computer to carry out an operation – moving data, carrying out a computation, or altering the control flow of instructions.

Data movement is typically from one place in memory to another. Sometimes it involves moving data between memory and registers which enable high-speed data access in the CPU. Moving data, especially large amounts of it, can be costly. So, this is sometimes avoided by using "pointers" to data instead. Computations include simple operations such as incrementing the value of a variable data element. More complex computations may involve many operations and data elements together.

Quality and reliability Software quality, Software testing, and Software reliability

Software quality is very important, especially for commercial and system software like Microsoft Office, Microsoft Windows and Linux. If software is faulty (buggy), it can delete a person's work, crash the computer and do other unexpected things. Faults and errors are called "bugs." Many bugs are discovered and eliminated (debugged) through software testing. However, software testing rarely – if ever – eliminates every bug; some programmers say that "every program has at least one more bug" (Lubarsky's Law). All major software companies, such as Microsoft, Novell and Sun Microsystems, have their own software testing departments with the specific goal of just testing. Software can be tested through unit testing, regression testing and other methods, which are done manually, or most commonly, automatically, since the amount of code to be tested can be quite large. For instance, NASA has extremely rigorous software testing procedures for many operating systems and communication functions. Many NASA based operations interact and identify each other through command programs called software. This enables many people who work at NASA to check and evaluate functional systems overall. Programs containing command software enable hardware engineering and system operations to function much easier together.

License Software license

The software's license gives the user the right to use the software in the licensed environment. Some software comes with the license when purchased off the shelf, or an OEM license when bundled with hardware. Other software comes with a free software license, granting the recipient the rights to modify and redistribute the software. Software can also be in the form of freeware or shareware.

Patents Software patent and Software patent debate

Software can be patented; however, software patents can be controversial in the software industry with many people holding different views about it. The controversy over software patents is that a specific algorithm or technique that the software has may not be duplicated by others and is considered an intellectual property and copyright infringement depending on the severity. Some people believe that software patent hinder software development, while others argue that software patents provide an important incentive to spur software innovation.

Design and implementation Software development, Computer programming, and Software engineering

Design and implementation of software varies depending on the complexity of the software. For instance, design and creation of Microsoft Word software will take much longer time than designing and developing Microsoft Notepad because of the difference in functionalities in each one.

Software is usually designed and created (coded/written/programmed) in integrated development environments (IDE) like Eclipse, Emacs and Microsoft Visual Studio that can simplify the process and compile the program. As noted in different section, software is usually created on top of existing software and the application programming interface (API) that the underlying software provides like GTK+, JavaBeans or Swing. Libraries (APIs) are categorized for different purposes. For instance, JavaBeans library is used for designing enterprise applications, Windows Forms library is used for designing graphical user interface (GUI) applications like Microsoft Word, and Windows Communication Foundation is used for designing web services. Underlying computer programming concepts like quicksort, hashtable, array, and binary tree can be useful to creating software. When a program is designed, it relies on the API. For instance, if a user is designing a Microsoft Windows desktop application, he/she might use the .NET Windows Forms library to design the desktop application and call its APIs like Form1.Close() and Form1.Show() to close or open the application and write the additional operations him/herself that it need to have. Without these APIs, the programmer needs to write these APIs him/herself. Companies like Sun Microsystems, Novell, and Microsoft provide their own APIs so that many applications are written using their software libraries that usually have numerous APIs in them.

Software has special economic characteristics that make its design, creation, and distribution different from most other economic goods. A person who creates software is called a programmer, software engineer, software developer, or code monkey, terms that all essentially have a same meaning.

Industry and organizations Software industry

Software has its own niche industry that is called the software industry made up of different entities and peoples that produce software, and as a result there are many software companies and programmers in the world. Because software is increasingly used in many different areas like in finance, searching, mathematics, space exploration, gaming and mining and such, software companies and people usually specialize in certain areas. For instance, Electronic Arts primarily creates video games.

Also selling software can be quite a profitable industry. For instance, Bill Gates, the founder of Microsoft is the second richest man in the world in 2008 largely by selling the Microsoft Windows and Microsoft Office software programs. The same goes for Larry Ellison, largely through his Oracle database software.

There are also many non-profit software organizations like the Free Software Foundation, GNU Project, Mozilla Foundation. Also there are many software standard organizations like the W3C, IETF and others that try to come up with a software standard so that many software can work and interoperate with each other like through standards such as XML, HTML, HTTP or FTP.

Some of the well known software companies include Microsoft, Oracle, Novell, SAP, Adobe Systems, and Corel.

Computer Hardware

Typical PC hardware

Hardware of Personal Computer.
1. Monitor
2. Motherboard
3. CPU
4. RAM Memory
5. Expansion card
6. Power supply
7. CD-ROM Drive
8. Hard Disk
9. Keyboard
10. Mouse

Inside a custom computer.

Though a PC comes in many different form factors, a typical personal computer consists of a case or chassis in a tower shape (desktop) and the following parts:

Motherboard

The motherboard is the main component inside the case. It is a large rectangular board with integrated circuitry that connects the rest of the parts of the computer including the CPU, the RAM, the disk drives (CD, DVD, hard disk, or any others) as well as any peripherals connected via the ports or the expansion slots.

Components directly attached to the motherboard include:

* The central processing unit (CPU) performs most of the calculations which enable a computer to function, and is sometimes referred to as the "brain" of the computer. It is usually cooled by a heat sink and fan.
* The chipset mediates communication between the CPU and the other components of the system, including main memory.
* RAM Stores all running processes (applications) and the current running OS. RAM Stands for Random Access Memory
* The BIOS includes boot firmware and power management. The Basic Input Output System tasks are handled by operating system drivers.
* Internal Buses connect the CPU to various internal components and to expansion cards for graphics and sound.
o Current
+ The northbridge memory controller, for RAM and PCI Express
# PCI Express, for expansion cards such as graphics and physics processors, and high-end network interfaces
+ PCI, for other expansion cards
+ SATA, for disk drives
o Obsolete
+ ATA (superseded by SATA)
+ AGP (superseded by PCI Express)
+ VLB VESA Local Bus (superseded by AGP)
+ ISA (expansion card slot format obsolete in PCs, but still used in industrial computers)
* External Bus Controllers support ports for external peripherals. These ports may be controlled directly by the southbridge I/O controller or based on expansion cards attached to the motherboard through the PCI bus.
o USB
o FireWire
o eSATA
o SCSI


Power supply unit (computer)

Includes power cords, switch, and cooling fan. Supplies power at appropriate voltages to the motherboard and internal disk drives. It also converts alternating current to direct current and provides different voltages to different parts of the computer.

Video display controller Graphics card

Produces the output for the computer monitor. This will either be built into the motherboard or attached in its own separate slot (PCI, PCI-E, PCI-E 2.0, or AGP), in the form of a graphics card.

Most video cards support the most basic requirements, and video card manufacturing companies are doing a good job of keeping up with the requirements the games need. However the games are still evolving faster than the video because of manufacturing companies.

Removable media devices Computer storage

* CD (compact disc) - the most common type of removable media, suitable for music and data.
o CD-ROM Drive - a device used for reading data from a CD.
o CD Writer - a device used for both reading and writing data to and from a CD.
* DVD (digital versatile disc) - a popular type of removable media that is the same dimensions as a CD but stores up to 12 times as much information. It is the most common way of transferring digital video, and is popular for data storage.
o DVD-ROM Drive - a device used for reading data from a DVD.
o DVD Writer - a device used for both reading and writing data to and from a DVD.
o DVD-RAM Drive - a device used for rapid writing and reading of data from a special type of DVD.
* Blu-ray Disc - a high-density optical disc format for data and high-definition video. Can store 70 times as much information as a CD.
o BD-ROM Drive - a device used for reading data from a Blu-ray disc.
o BD Writer - a device used for both reading and writing data to and from a Blu-ray disc.
* HD DVD - a discontinued competitor to the Blu-ray format.
* Floppy disk - an outdated storage device consisting of a thin disk of a flexible magnetic storage medium. Used today mainly for loading RAID drivers.
* Iomega Zip drive - an outdated medium-capacity removable disk storage system, first introduced by Iomega in 1994.
* USB flash drive - a flash memory data storage device integrated with a USB interface, typically small, lightweight, removable, and rewritable. Capacities vary, from hundreds of megabytes (in the same ballpark as CDs) to tens of gigabytes (surpassing, at great expense, Blu-ray discs).
* Tape drive - a device that reads and writes data on a magnetic tape, used for long term storage and backups.

Internal storage

Hardware that keeps data inside the computer for later use and remains persistent even when the computer has no power.

* Hard disk - for medium-term storage of data.
* Solid-state drive - a device similar to hard disk, but containing no moving parts and stores data in a digital format.
* RAID array controller - a device to manage several internal or external hard disks and optionally some peripherals in order to achieve performance or reliability improvement in what is called a RAID array.

Sound card

Enables the computer to output sound to audio devices, as well as accept input from a microphone. Most modern computers have sound cards built-in to the motherboard, though it is common for a user to install a separate sound card as an upgrade. Most sound cards, either built-in or added, have surround sound capabilities.

Other Peripheral

In addition, hardware devices can include external components of a computer system. The following are either standard or very common.
Wheel Mouse

Includes various input and output devices, usually external to the computer system.

Input

* Text input devices
o Keyboard - a device to input text and characters by depressing buttons (referred to as keys), similar to a typewriter. The most common English-language key layout is the QWERTY layout. The QWERTY layout always starts with QWERTY.
* Pointing devices
o Mouse - a pointing device that detects two dimensional motion relative to its supporting surface.
o Optical Mouse - a newer technology that uses lasers, or more commonly LEDs to track the surface under the mouse to determine motion of the mouse, to be translated into mouse movements on the screen.
o Trackball - a pointing device consisting of an exposed protruding ball housed in a socket that detects rotation about two axes.

* Gaming devices
o Joystick - a general control device that consists of a handheld stick that pivots around one end, to detect angles in two or three dimensions.
o Gamepad - a general handheld game controller that relies on the digits (especially thumbs) to provide input.
o Game controller - a specific type of controller specialized for certain gaming purposes.
* Image, Video input devices
o Image scanner - a device that provides input by analyzing images, printed text, handwriting, or an object.
o Webcam - a low resolution video camera used to provide visual input that can be easily transferred over the internet.
* Audio input devices
o Microphone - an acoustic sensor that provides input by converting sound into electrical signals.

computer hardware and software cobination

A personal computer (PC) is any general-purpose computer whose size, capabilities, and original sales price make it useful for individuals, and which is intended to be operated directly by an end user, with no intervening computer operator. This is in contrast to the batch processing or time-sharing models which allowed large expensive mainframe systems to be used by many people, usually at the same time, or large data processing systems which required a full-time staff to operate efficiently.

A personal computer may be a desktop computer, a laptop computer, tablet computer or a palmtop. The most common microprocessors are x86-compatible CPUs, ARM architecture CPUs and PowerPC CPUs. Software applications for personal computers include word processing, spreadsheets, databases, Web browsers and e-mail clients, games, and myriad personal productivity and special-purpose software. Modern personal computers often have high-speed or dial-up connections to the Internet, allowing access to the World Wide Web and a wide range of other resources.

A PC may be used at home, or may be found in an office. Personal computers can be connected to a local area network (LAN) either by a cable or wirelessly.

While early PC owners usually had to write their own programs to do anything useful with the machines, today's users have access to a wide range of commercial and non-commercial software which is provided in ready-to-run form. Since the 1980s, Microsoft and Intel have been dominating much of the personal computer market with the Wintel platform.
Contents

History

This section needs additional citations for verification.
Please help improve this article by adding reliable references. Unsourced material may be challenged and removed. (September 2008)
Main article: History of personal computers
IBM 5150 as of 1981

The capabilities of the personal computer have changed greatly since the introduction of electronic computers. By the early 1970s, people in academic or research institutions had the opportunity for single-person use of a computer system in interactive mode for extended durations, although these systems would still have been too expensive to be owned by a single person. The introduction of the microprocessor, a single chip with all the circuitry that formerly occupied large cabinets, led to the proliferation of personal computers after about 1975. In what was later to be called The Mother of All Demos, SRI researcher Douglas Englebart in 1968 gave a preview of what would become the staples of daily working life in the 21st century - e-mail, hypertext, word processing, video conferencing, and the mouse.

Early personal computers - generally called microcomputers - were sold often in Electronic kit form and in limited volumes, and were of interest mostly to hobbyists and technicians. Minimal programming was done by toggle switches, and output was provided by front panel indicators. Practical use required peripherals such as keyboards, computer terminals, disk drives, and printers. Micral N was the earliest commercial, non-kit "personal" computer based on a microprocessor, the Intel 8008. It was built starting in 1972 and about 90,000 units were sold. Unlike other hobbyist computers of its day, which were sold as electronics kits, in 1976 Steve Jobs and Steve Wozniak sold the Apple I computer circuit board, which was fully prepared and contained about 30 chips. The first complete personal computer was the Commodore PET introduced in January 1977. It was soon followed by the popular Apple II. Mass-market pre-assembled computers allowed a wider range of people to use computers, focusing more on software applications and less on development of the processor hardware.

Throughout the late 1970s and into the 1980s, computers were developed for household use, offering personal productivity, programming and games. Somewhat larger and more expensive systems (although still low-cost compared with minicomputers and mainframes) were aimed for office and small business use. Workstations are characterized by high-performance processors and graphics displays, with large local disk storage, networking capability, and running under a multitasking operating system. Workstations are still used for tasks such as computer-aided design, drafting and modelling, computation-intensive scientific and engineering calculations, image processing, architectural modelling, and computer graphics for animation and motion picture visual effects.

Eventually due to the IBM-PC's influence on the Personal Computer market Personal Computers and Home Computers lost any technical distinction. Business computers acquired color graphics capability and sound, and home computers and game systems users used the same processors and operating systems as office workers. Mass-market computers had graphics capabilities and memory comparable to dedicated workstations of a few years before. Even local area networking, originally a way to allow business computers to share expensive mass storage and peripherals, became a standard feature of the personal computers used at home.

Market and sales

Personal computers worldwide in million distinguished by developed and developing world

In 2001 125 million personal computers were shipped in comparison to 48 thousand in 1977. More than 500 million personal computers were in use in 2002 and one billion personal computers had been sold worldwide since mid-1970s until this time. Of the latter figure, 75 percent were professional or work related, while the rest sold for personal or home use. About 81.5 percent of personal computers shipped had been desktop computers, 16.4 percent laptops and 2.1 percent servers. United States had received 38.8 percent (394 million) of the computers shipped, Europe 25 percent and 11.7 percent had gone to Asia-Pacific region, the fastest-growing market as of 2002. The second billion was expected to be sold by 2008. Almost half of all the households in Western Europe had a personal computer and a computer could be found in 40 percent of homes in United Kingdom, compared with only 13 percent in 1985.

The global personal computer shipments were 264 million units in the year 2007, according to iSuppli, up 11.2 percent from 239 million in 2006.. In year 2004, the global shipments was 183 million units, 11.6 percent increase over 2003.[6] In 2003, 152.6 million computers were shipped, at an estimated value of $175 billion. In 2002, 136.7 million PCs were shipped, at an estimated value of $175 billion.[7] In 2000, 140.2 million personal computers were shipped, at an estimated value of $226 billion. Worldwide shipments of personal computers surpassed the 100-million mark in 1999, growing to 113.5 million units from 93.3 million units in 1998.. In 1999, Asia had 14.1 million units shipped.

As of June 2008, the number of personal computers in use worldwide hit one billion, while another billion is expected to be reached by 2014. Mature markets like the United States, Western Europe and Japan accounted for 58 percent of the worldwide installed PCs. The emerging markets were expected to double their installed PCs by 2013 and to take 70 percent of the second billion PCs. About 180 million computers (16 percent of the existing installed base) were expected to be replaced and 35 million to be dumped into landfill in 2008. The whole installed base grew 12 percent annually.

In the developed world, there has been a vendor tradition to keep adding functions to maintain high prices of personal computers. However, since the introduction of One Laptop per Child foundation and its low-cost XO-1 laptop, the computing industry started to pursue the price too. Although introduced only one year earlier, there were 14 million netbooks sold in 2008.[12] Besides the regular computer manufacturers, companies making especially rugged versions of computers have sprung up, offering
alternatives for people operating their machines in extreme weather or environments.

Average selling price

For Microsoft Windows systems, the average selling price (ASP) showed a decline in 2008/2009, possibly due to low-cost netbooks, drawing $569 for desktop computers and $689 for laptops at U.S. retail in August 2008. In 2009, ASP had further fallen to $533 for desktops and to $602 for notebooks by January and to $540 and $560 in February.

Workstation

A workstation is a high-end personal computer designed for technical or scientific applications. Intended primarily to be used by one person at a time, they are commonly connected to a local area network and run multi-user operating systems.

Desktop computer Dell OptiPlex desktop computer
Prior to the wide spread of PCs a computer that could fit on a desk was considered remarkably small. Today the phrase usually indicates a particular style of computer case. Desktop computers come in a variety of styles ranging from large vertical tower cases to small form factor models that can be tucked behind an LCD monitor. In this sense, the term 'desktop' refers specifically to a horizontally-oriented case, usually intended to have the display screen placed on top to save space on the desk top. Most modern desktop computers have separate screens and keyboards.

Single unit

Single unit PCs (also known as all-in-one PCs) are a subtype of desktop computers, which combine the monitor and case of the computer within a single unit. The monitor almost always utilizes a touchscreen as an optional method of user input, however detached keyboards and mice are normally still included. The inner components of the
PC are often located directly behind the monitor.

Nettop

A subtype of desktops, called nettops, was introduced by Intel in February 2008 to describe low-cost, lean-function, desktop computers. A similar subtype of laptops (or notebooks) are the netbooks (see below). These feature the new Intel Atom processor which specially enables them to consume less power and to be built into small enclosures.

Laptop A mid-range HP Laptop.
A laptop computer or simply laptop, also called a notebook computer or sometimes a notebook, is a small personal computer designed for mobility. Usually all of the interface hardware needed to operate the laptop, such as parallel and serial ports, graphics card, sound channel, etc., are built in to a single unit. Laptops contain high capacity batteries that can power the device for extensive periods of time, enhancing portability. Once the battery charge is depleted, it will have to be recharged through a power outlet. In the interest of saving power, weight and space, they usually share RAM with the video channel, slowing their performance compared to an equivalent desktop machine.

One main drawback of the laptop is that, due to the size and configuration of components, relatively little can be done to upgrade the overall computer from its original design. Some devices can be attached externally through ports (including via USB), however internal upgrades are not recommended or in some cases impossible, making the desktop PC more modular.

A subtype of notebooks, called subnotebooks, are computers with most of the features of a standard laptop computer but smaller. They are larger than hand-held computers, and usually run full versions of desktop/laptop operating systems. Ultra-Mobile PCs (UMPC) are usually considered subnotebooks, or more specifically, subnotebook Tablet PCs (see below). Netbooks are sometimes considered in this category, though they are sometimes separated in a category of their own (see below).

Desktop replacements, meanwhile, are large laptops meant to replace a desktop computer while keeping the mobility of a laptop.

Netbook An HP netbook
Netbooks are small portable computers in a "clamshell" design, that are designed specifically for wireless communication and access to the Internet. They are generally much lighter and cheaper than subnotebooks, and have a smaller display, between 7" and 9", with a screen resolution between 800x600 and 1024x768 but newer models feature higher resolution at up to 1280x768 like the Gigabyte M912X netbook. The operating systems and applications on them are usually specially modified so they can be comfortably used with a smaller sized screen, and the OS was in the start Linux, although most netbooks run one of the NT version, Windows XP or Windows Vista (For example Sony's Tablet Netbook). Netbooks Have built in Wireless connectivity (Wi-Fi). Some even have smaller but faster solid state storage systems instead of mechanical hard-disks. Storage capacities were usually in the 4 to 16 GB for solid state flash drives range but have largely increased with mechanical drives, expanding up to 160GB for example the Gigabyte M912X and the MSI WInd U100 with units that have mechanical hard drives instead of solid state flash drives. One of the first examples of such a system was the original Eee PC.

The emergence of new market segment of small, energy-efficient and low-cost devices designed for access to the Internet (netbooks and nettops) could threaten established companies like Microsoft, Intel, HP or Dell, analysts said in July 2008. A market research firm International Data Corporation predicted that the category could grow from fewer than 500,000 in 2007 to 9 million in 2012 as the market for low cost and secondhand computers expands in developed economies. Also, after Microsoft ceased selling consumer versions of Windows XP, it made an exception and continued to offer the operating system for netbook and nettop makers.

Tablet PC HP Compaq tablet PC with rotating/removable keyboard.
A tablet PC is a notebook or slate-shaped mobile computer, first introduced by Pen computing in the early 90s with their PenGo Tablet Computer and popularized by Microsoft. Its touchscreen or graphics tablet/screen hybrid technology allows the user to operate the computer with a stylus or digital pen, or a fingertip, instead of a keyboard or mouse. The form factor offers a more mobile way to interact with a computer. Tablet PCs are often used where normal notebooks are impractical or unwieldy, or do not provide the needed functionality.

Ultra-Mobile PC Samsung Q1 Ultra-Mobile PC.
The ultra-mobile PC (UMPC) is a specification for a small form factor. It was developed as a joint development exercise by Microsoft, Intel, and Samsung, among others. Current UMPCs typically feature the Windows XP, Windows Vista, Windows 7, or Linux operating system and low-voltage Intel Atom or VIA C7-M processors.

Home theater PC Antec Fusion V2 home theater PC with keyboard on top.
A home theater PC (HTPC) is a convergence device that combines the functions of a personal computer and a digital video recorder. It is connected to a television or a television-sized computer display and is often used as a digital photo, music, video player, TV receiver and digital video recorder. Home theater PCs are also referred to as media center systems or media servers. The general goal in a HTPC is usually to combine many or all components of a home theater setup into one box. They can be purchased pre-configured with the required hardware and software needed to add television programming to the PC, or can be cobbled together out of discrete components as is commonly done with MythTV, Windows Media Center, GB-PVR, SageTV, Famulent or LinuxMCE.

Pocket PC An O2 pocket PC
A pocket PC is a hardware specification for a handheld-sized computer (personal digital assistant) that runs the Microsoft Windows Mobile operating system. It may have the capability to run an alternative operating system like NetBSD or Linux. It has many of the capabilities of modern desktop PCs.

Currently there are tens of thousands of applications for handhelds adhering to the Microsoft Pocket PC specification, many of which are freeware. Some of these devices also include mobile phone features. Microsoft compliant Pocket PCs can also be used with many other add-ons like GPS receivers, barcode readers, RFID readers, and cameras. In 2007, with the release of Windws Mobile 6, Microsoft dropped the name Pocket PC in favor of a new naming scheme. Devices without an integrated phone are called Windows Mobile Classic instead of Pocket PC. Devices with an integrated phone and a touch screen are called Windows Mobile Professional.New Windows Mobile 6 Devices

Hardware
An exploded view of a modern personal computer and peripherals:

1. Scanner
2. CPU (Microprocessor)
3. Primary storage (RAM)
4. Expansion cards (graphics cards, etc)
5. Power supply
6. Optical disc drive
7. Secondary storage (Hard disk)
8. Motherboard
9. Speakers
10. Monitor
11. System software
12. Application software
13. Keyboard
14. Mouse
15. External hard disk
16. Printer

Computer hardware A typical hardware setup of a desktop computer consists of:
* computer case with power supply
* central processing unit (processor)
* motherboard
* memory card
* hard disk
* video card
* visual display unit (monitor)
* optical disc (usually DVD-ROM or DVD Writer)
* keyboard and pointing device

These components can usually be put together with little knowledge to build a computer. The motherboard is a main part of a computer that connects all devices together. The memory card(s), graphics card and processor are mounted directly onto the motherboard (the processor in a socket and the memory and graphics cards in expansion slots). The mass storage is connected to it with cables and can be installed in the computer case or in a separate case. This is the same for the keyboard and mouse, except that they are external and connect to the I/O panel on the back of the computer. The monitor is also connected to the I/O panel, either through an onboard port on the motherboard, or a port on the graphics card.

Several functions (implemented by chipsets) can be integrated into the motherboard, typically USB and network, but also graphics and sound. Even if these are present, a separate card can be added if what is available isn't sufficient. The graphics and sound card can have a break out box to keep the analog parts away from the electromagnetic radiation inside the computer case. For really large amounts of data, a tape drive can be used or (extra) hard disks can be put together in an external case.

The hardware capabilities of personal computers can sometimes be extended by the addition of expansion cards connected via an expansion bus. Some standard peripheral buses often used for adding expansion cards in personal computers as of 2005 are PCI, AGP (a high-speed PCI bus dedicated to graphics adapters), and PCI Express. Most personal computers as of 2005 have multiple physical PCI expansion slots. Many also include an AGP bus and expansion slot or a PCI Express bus and one or more expansion slots, but few PCs contain both buses.

Computer case A stripped ATX case lying on its side.

A computer case is the enclosure that contains the main components of a computer. Cases are usually constructed from steel, aluminium, or plastic, although other materials such as wood, plexiglas or fans have also been used in case designs. Cases can come in many different sizes, or form factors. The size and shape of a computer case is usually determined by the form factor of the motherboard that it is designed to accommodate, since this is the largest and most central component of most computers. Consequently, personal computer form factors typically specify only the internal dimensions and layout of the case. Form factors for rack-mounted and blade servers may include precise external dimensions as well, since these cases must themselves fit in specific enclosures.

Currently, the most popular form factor for desktop computers is ATX, although microATX and small form factors have become very popular for a variety of uses. Companies like Shuttle Inc. and AOpen have popularized small cases, for which FlexATX is the most common motherboard size.

Central processing unit AMD Athlon 64 CPU.

The central processing unit, or CPU, is that part of a computer which executes software program instructions. In older computers this circuitry was formerly on several printed circuit boards, but in PCs is a single integrated circuit. Nearly all PCs contain a type of CPU known as a microprocessor. The microprocessor often plugs into the motherboard using one of many different types of sockets. IBM PC compatible computers use an x86-compatible processor, usually made by Intel, AMD, VIA Technologies or Transmeta. Apple Macintosh computers were initially built with the Motorola 680x0 family of processors, then switched to the PowerPC series (a RISC architecture jointly developed by Apple Computer, IBM and Motorola), but as of 2006, Apple switched again, this time to x86-compatible processors by Intel. Modern CPUs are equipped with a fan attached via heat sink.

Motherboard Asus motherboard

The motherboard, also referred to as systemboard or mainboard, is the primary circuit board within a personal computer. Many other components connect directly or indirectly to the motherboard. Motherboards usually contain one or more CPUs, supporting circuitry - usually integrated circuits (ICs) - providing the interface between the CPU memory and input/output peripheral circuits, main memory, and facilities for initial setup of the computer immediately after power-on (often called boot firmware or, in IBM PC compatible computers, a BIOS). In many portable and embedded personal computers, the motherboard houses nearly all of the PC's core components. Often a motherboard will also contain one or more peripheral buses and physical connectors for expansion purposes. Sometimes a secondary daughter board is connected to the motherboard to provide further expandability or to satisfy space constraints.

Main memory 1GB DDR SDRAM 400 module

A PC's main memory is fast storage that is directly accessible by the CPU, and is used to store the currently executing program and immediately needed data. PCs use semiconductor random access memory (RAM) of various kinds such as DRAM or SRAM as their primary storage. Which exact kind depends on cost/performance issues at any particular time. Main memory is much faster than mass storage devices like hard disks or optical discs, but is usually volatile, meaning it does not retain its contents (instructions or data) in the absence of power, and is much more expensive for a given capacity than is most mass storage. Main memory is generally not suitable for long-term or archival data storage.

Hard disk A Western Digital 250 GB hard disk drive.

Mass storage devices store programs and data even when the power is off; they do require power to perform read and write functions during usage. Although flash memory has dropped in cost, the prevailing form of mass storage in personal computers is still the hard disk.

The disk drives use a sealed head/disk assembly (HDA) which was first introduced by IBM's "Winchester" disk system. The use of a sealed assembly allowed the use of positive air pressure to drive out particles from the surface of the disk, which improves reliability.

If the mass storage controller provides for expandability, a PC may also be upgraded by the addition of extra hard disk or optical disc drives. For example, BD-ROMs, DVD-RWs, and various optical disc recorders may all be added by the user to certain PCs. Standard internal storage device connection interfaces are PATA, Serial ATA, SCSI

Video card ATI Radeon video card

The video card - otherwise called a graphics card, graphics adapter or video adapter - processes and renders the graphics output from the computer to the computer display, and is an essential part of the modern computer. On older models, and today on budget models, graphics circuitry tended to be integrated with the motherboard but, for modern flexible machines, they are supplied in PCI, AGP, or PCI Express format.

When the IBM PC was introduced, most existing business-oriented personal computers used text-only display adapters and had no graphics capability. Home computers at that time had graphics compatible with television signals, but with low resolution by modern standards owing to the limited memory available to the eight-bit processors available at the time.

Visual display unit A flat-panel LCD monitor.

A visual display unit (or monitor) is a piece of electrical equipment, usually separate from the computer case, which displays viewable images generated by a computer without producing a permanent record. The word "monitor" is used in other contexts; in particular in television broadcasting, where a television picture is displayed to a high standard. A computer display device is usually either a cathode ray tube or some form of flat panel such as a TFT LCD. The monitor comprises the display device, circuitry to generate a picture from electronic signals sent by the computer, and an enclosure or case. Within the computer, either as an integral part or a plugged-in Expansion card, there is circuitry to convert internal data to a format compatible with a monitor. The images from monitors originally contained only text, but as Graphical user interfaces emerged and became common, they began to display more images and multimedia content.

Keyboards

In computing, a keyboard is an arrangement of buttons that each correspond to a function, letter, or number. They are the primary devices of inputing text. In most cases, they contain an aray of keys specifically organized with the corresponding letters, numbers, and functions printed or engraved on the button. They are generally designed around an operators language, and many different versions for different languages exist. In English, the most common layout is the QWERTY layout, which was originally used in typewriters. They have evolved over time, and have been modified for use in computers with the addition of function keys, number keys, arrow keys, and OS specific keys. Often, specific functions can be achieved by pressing multiple keys at once or in succession, such as inputing characters with accents or opening a task manager. Programs use keyboard shotcuts very differently and all use different keyboard shortcuts for different program specific operations, such as refreshing a web page in a web browser or selecting all text in a word processor.

Mouse

Apple Mighty Mouse that detects clicks through a large button located at the bottom of the mouse covering the entire unit.

A Mouse on a computer is a small, slidable device that users hold and slide around to point at, click, and sometimes drag objects on screen in a graphical user interface using a pointer on screen. Almost all Personal Computers have mice. It may be plugged into a computer's rear mouse socket, or as a USB device, or, more recently, may be connected wirelessly via a USB antenna or Bluetooth antenna. In the past, they had a single button that users could press down on the device to "click" on whatever the pointer on the screen was hovering over. Now, however, many Mice have two or three buttons; a "right click" function button on the mouse, which performs a secondary action on a selected object, and a scroll wheel, which users can rotate the wheel using their fingers to "scroll" up or down. The scroll wheel can also be pressed down, and therefore be used as a third button. Different programs make use of these functions differently, and may scroll horizontally by default with the scroll wheel, open different menus with different buttons, among others.

Mice traditionally detected movement and communicated with the computer with an internal "mouse ball"; and use optical encoders to detect rotation of the ball and tell the computer where the mouse has moved. However, these systems were subject to low durability and accuracy. Modern mice use optical technology to directly trace movement of the surface under the mouse and are much more accurate and durable. They work on a wider variety of surfaces and can even operate on walls, ceilings or other non-horizontal surfaces.

Other components
Proper ergonomic design of personal computer workplace is necessary to prevent repetitive strain injuries, which can develop over time and can lead to long-term disability.

Mass storage

All computers require either fixed or removable storage for their operating system, programs and user generated material.
Formerly the 5 1/4 inch and 3 1/2 inch floppy drive were the principal forms of removable storage for backup of user files and distribution of software.

As memory sizes increased, the capacity of the floppy did not keep pace; the Zip drive and other higher-capacity removable media were introduced but never became as prevalent as the floppy drive.

By the late 1990s the optical drive, in CD and later DVD and Blu-ray Disc, became the main method for software distribution, and writeable media provided backup and file interchange. Floppy drives have become uncommon in desktop personal computers since about 2000, and were dropped from many laptop systems even earlier. [19]

Early home computers used compact audio cassettes for file storage; these were at the time a very low cost storage solution, but were displaced by floppy disk drives when manufacturing costs dropped, by the mid 1980s.

A second generation of tape recorders was provided when Videocassette recorders were pressed into service as backup media for larger disk drives. All these systems were less reliable and slower than purpose-built magnetic tape drives. Such tape drives were uncommon in consumer-type personal computers but were a necessity in business or industrial use.

Interchange of data such as photographs from digital cameras is greatly expedited by installation of a card reader, which often is compatible with several forms of flash memory. It is usually faster and more convenient to move large amounts of data by removing the card from the mobile device, instead of communicating with the mobile device through a USB interface.

A USB flash drive today performs much of the data transfer and backup functions formerly done with floppy drives, Zip disks and other devices. Main-stream current operating systems for personal computers provide standard support for flash drives, allowing interchange even between computers using different processors and operating systems. The compact size and lack of moving parts or dirt-sensitive media, combined with low cost for high capacity, have made flash drives a popular and useful accessory for any personal computer user.

The operating system (e.g.: Microsoft Windows, Mac OS, Linux or many others) can be located on any storage, but typically it is on a hard disks. A Live CD is the running of a OS directly from a CD. While this is slow compared to storing the OS on a hard drive, it is typically used for installation of operating systems, demonstrations, system recovery, or other special purposes. Large flash memory is currently more expensive than hard drives of similar size (as of mid-2008) but are starting to appear in laptop computers because of their low weight, small size and low power requirements.

Computer communications

* Internal modem card
* Modem
* Network adapter card
* Router

Common peripherals and adapter cards

* Headset
* Joystick
* Microphone
* Printer
* Scanner
* Sound adapter card as a separate card rather than located on the motherboard
* Speakers
* Webcam

Computer software

A screenshot of the OpenOffice.org Writer software

Computer software is a general term used to describe a collection of computer programs, procedures and documentation that perform some tasks on a computer system. The term includes application software such as word processors which perform productive tasks for users, system software such as operating systems, which interface with hardware to provide the necessary services for application software, and middleware which controls and co-ordinates distributed systems.

Software applications for word processing, Internet browsing, Internet faxing, e-mail and other digital messaging, multimedia playback, computer game play and computer programming are common. The user of a modern personal computer may have significant knowledge of the operating environment and application programs, but is not necessarily interested in programming nor even able to write programs for the computer. Therefore, most software written primarily for personal computers tends to be designed with simplicity of use, or "user-friendliness" in mind. However, the software industry continuously provide a wide range of new products for use in personal computers, targeted at both the expert and the non-expert user.

Operating system KDE 4 running on a Linux distribution.
An operating system (OS) manages computer resources and provides programmers with an interface used to access those resources. An operating system processes system data and user input, and responds by allocating and managing tasks and internal system resources as a service to users and programs of the system. An operating system performs basic tasks such as controlling and allocating memory, prioritizing system requests, controlling input and output devices, facilitating computer networking and managing files.

Common contemporary desktop OSes are Microsoft Windows (~75% market share), Mac OS X (12%), Linux (10%), Solaris and PC-BSD. Windows, Mac, and Linux all have server and personal variants. With the exception of Microsoft Windows, the designs of each of the aforementioned OSs were inspired by, or directly inherited from, the Unix operating system. Unix was developed at Bell Labs beginning in the late 1960s and spawned the development of numerous free and proprietary operating systems.

Microsoft Windows


Microsoft Windows is the collective brand name of several software operating systems by Microsoft. Microsoft first introduced an operating environment named Windows in November 1985 as an add-on to MS-DOS in response to the growing interest in graphical user interfaces (GUIs).The most recent client version of Windows is Windows Vista and the current server version is Windows Server 2008. A new version, Windows 7, is currently in development and is available as a Release Candidate.

Microsoft Windows is not free software. Linux
Linux is a family of Unix-like computer operating systems. Linux is one of the most prominent examples of free software and open source development: typically all underlying source code can be freely modified, used, and redistributed by anyone. The name "Linux" comes from the Linux kernel, started in 1991 by Linus Torvalds. The system's utilities and libraries usually come from the GNU operating system, announced in 1983 by Richard Stallman. The GNU contribution is the basis for the alternative name GNU/Linux.

Predominantly known for its use in servers, Linux is supported by corporations such as Dell, Hewlett-Packard, IBM, Novell, Oracle Corporation, Red Hat, Canonical Ltd. and Sun Microsystems. It is used as an operating system for a wide variety of computer hardware, including desktop computers, supercomputers,[28] video game systems, such as the PlayStation 3, several arcade games, and embedded devices such as mobile phones, routers, and stage lighting systems.

Mac OS X Mac OS X desktop
Mac OS X is a line of graphical operating systems developed, marketed, and sold by Apple Inc.. Mac OS X is the successor to the original Mac OS, which had been Apple's primary operating system since 1984. Unlike its predecessors, Mac OS X is a Unix-based operating system. The most recent version of Mac OS X is Mac OS X
10.6 "Snow Leopard", and the current server version is Mac OS X Server 10.6.

Applications
This section does not cite any references or sources. Please help improve this article by adding citations to reliable sources. Unsourced material may be challenged and removed.

Application software GIMP raster graphics editor
A computer user will apply application software to carry out a specific task. System software supports applications and provides common services such as memory management, network connectivity, or device drivers; all of which may be used by applications but which are not directly of interest to the end user. A simple, if imperfect analogy in the world of hardware would be the relationship of an electric light bulb (an application) to an electric power generation plant (a system). The power plant merely generates electricity, not itself of any real use until harnessed to an application like the electric light that performs a service that benefits the user.

Typical examples of software applications are word processors, spreadsheets, and media players. Multiple applications bundled together as a package are sometimes referred to as an application suite. Microsoft Office and OpenOffice.org, which bundle together a word processor, a spreadsheet, and several other discrete applications, are typical examples. The separate applications in a suite usually have a user interface that has some commonality making it easier for the user to learn and use each application. And often they may have some capability to interact with each other in ways beneficial to the user. For example, a spreadsheet might be able to be embedded in a word processor document even though it had been created in the separate spreadsheet application.

End-user development tailors systems to meet the user's specific needs. User-written software include spreadsheet templates, word processor macros, scientific simulations, graphics and animation scripts. Even email filters are a kind of user software. Users create this software themselves and often overlook how important it is.

Computer Science portal
Electronics portal

* Desktop computer
* Desktop replacement computer
* e-waste
* Gaming PC
* Information and communication technologies for development
* List of computer system manufacturers
* Personal Computer Museum
* Public computer
* Quiet PC
* Supercomputer