Friday, July 20, 2007

c++ output

++
From Wikipedia, the free encyclopedia
Jump to:
navigation, search
C++
Paradigm:
multi-paradigm
Appeared in:
1985
Designed by:
Bjarne Stroustrup
Typing discipline:
Static, unsafe, nominative
Major implementations:
GNU Compiler Collection, Microsoft Visual C++, Borland C++ Builder
Dialects:
ANSI C++ 1998, ANSI C++ 2003
Influenced by:
C, Simula, Ada 83, ALGOL 68, CLU, ML
Influenced:
Ada 95, C#, Java, PHP, D, Aikido
C++ (pronounced "see plus plus", IPA: /siː plʌs plʌs/) is a general-purpose, programming language with high-level and low-level capabilities.[1] It is a statically typed, free-form, multi-paradigm, usually compiled language supporting procedural programming, data abstraction, object-oriented programming, and generic programming. Since the 1990s, C++ has been one of the most popular commercial programming languages.[citation needed]
C++ is regarded as a mid-level language. This indicates that C++ is comprised of a combination of both high-level and low-level language features.
Bjarne Stroustrup developed C++ (originally named "C with Classes") in 1983 at Bell Labs as an enhancement to the C programming language. Enhancements started with the addition of classes, followed by, among other features, virtual functions, operator overloading, multiple inheritance, templates, and exception handling. The C++ programming language standard was ratified in 1998 as ISO/IEC 14882:1998, the current version of which is the 2003 version, ISO/IEC 14882:2003. A new version of the standard (known informally as C++0x) is being developed.
Contents[
hide]
1 History
1.1 The name "C++"
1.2 Future development
2 Philosophy
3 Standard library
4 Features introduced in C++
5 Hello world program
6 Language features
6.1 Operators
6.2 Preprocessor
6.3 Templates
6.4 Objects
6.4.1 Encapsulation
6.4.2 Inheritance
6.5 Polymorphism
6.5.1 Static polymorphism
6.5.2 Dynamic polymorphism
7 Parsing and processing C++ source code
8 Problems and controversies
9 Incompatibility with C
10 See also
11 Notes
12 References
13 External links
//

[edit] History
Stroustrup began work on C with Classes in 1979. The idea of creating a new language originated from Stroustrup's experience in programming for his Ph.D. thesis. Stroustrup found that
Simula had features that were very helpful for large software development, but the language was too slow for practical use, while BCPL was fast but too low-level and unsuitable for large software development. When Stroustrup started working in Bell Labs, he had the problem of analyzing the UNIX kernel with respect to distributed computing. Remembering his Ph.D. experience, Stroustrup set out to enhance the C language with Simula-like features. C was chosen because it is general-purpose, fast, and portable. Besides C and Simula, some other languages which inspired him were ALGOL 68, Ada, CLU and ML. At first, the class, derived class, strong type checking, inlining, and default argument features were added to C via Cfront. The first commercial release occurred in October 1985.[2]
In 1983, the name of the language was changed from C with Classes to C++. New features were added including virtual functions, function name and operator overloading, references, constants, user-controlled free-store memory control, improved type checking, and BCPL style single-line comments with two forward slashes (//). In 1985, the first edition of The C++ Programming Language was released, providing an important reference to the language, as there was not yet an official standard. In 1989, Release 2.0 of C++ was released. New features included multiple inheritance, abstract classes, static member functions, const member functions, and protected members. In 1990, The Annotated C++ Reference Manual was published. This work became the basis for the future standard. Late addition of features included templates, exceptions, namespaces, new casts, and a Boolean type.
As the C++ language evolved, a standard library also evolved with it. The first addition to the C++ standard library was the stream I/O library which provided facilities to replace the traditional C functions such as
printf and scanf. Later, among the most significant additions to the standard library, was the Standard Template Library.
After years of work, a joint
ANSI-ISO committee standardized C++ in 1998 (ISO/IEC 14882:1998). For some years after the official release of the standard in 1998, the committee processed defect reports, and published a corrected version of the C++ standard in 2003. In 2005, a technical report, called the "Library Technical Report 1" (often known as TR1 for short) was released. While not an official part of the standard, it gives a number of extensions to the standard library which are expected to be included in the next version of C++. Support for TR1 is growing in almost all currently maintained C++ compilers.
While the C++ language is royalty-free, the standard document itself is not freely available.

[edit] The name "C++"
This name is credited to also
Rick Mascitti (mid-1983) and was first used in December 1983. Earlier, during the research period, the developing language had been referred to as "new C", then "C with Classes". In computer science C++ is still referred to as a superstructure of C. The final name stems from C's "++" operator (which increments the value of a variable) and a common naming convention of using "+" to indicate an enhanced computer program. According to Stroustrup: "the name signifies the evolutionary nature of the changes from C". C+ was the name of an earlier, unrelated programming language.
Stroustrup addresses the origin of the name in Chapter 1 of his book,
The C++ Programming Language, remarking that another interpretation of the C++ name could be seen from the appendix of George Orwell's Nineteen Eighty-Four. Of the three segments of the fictional language Newspeak, the "C vocabulary" is the one dedicated to technical terms and jargon. "Doubleplus" is the superlative modifier for Newspeak adjectives. Thus, "C++" might hold the meaning "most C-like" in Newspeak.
When
Rick Mascitti was questioned informally in 1992 about the naming, he indicated that it was given in a tongue-in-cheek spirit. He never thought that it would become the formal name of the language.
A common joke about the name is that in C++, when ++ is used as a postfix operator the variable is incremented only after its value has been used (hence, for this reason and to match the double-plus Newspeak usage described above, it should be ++C rather than C++).

[edit] Future development
C++ continues to evolve to meet future requirements. A new version of the C++ standard is currently being worked on, entitled
C++0x, denoting that it is expected to be released before 2010. Current work indicates that C++ will continue to capitalize on its multi-paradigm nature. Notable expected improvements are native support for threading and concepts, which will make working with templates easier. More controversially, adding garbage collection is currently under heavy discussion. Boost.org is a group working to make the most of C++ in its current form. They are greatly expanding C++'s functional and metaprogramming abilities. They also advise the C++ standards committee on which features work well and which need improving.

[edit] Philosophy
In
The Design and Evolution of C++ (1994), Bjarne Stroustrup describes some rules that he uses for the design of C++. Knowing the rules helps to understand why C++ is the way it is. The following is a summary of the rules. Much more detail can be found in The Design and Evolution of C++.
C++ is designed to be a
statically typed, general-purpose language that is as efficient and portable as C
C++ is designed to directly and comprehensively support multiple programming styles (
procedural programming, data abstraction, object-oriented programming, and generic programming)
C++ is designed to give the programmer choice, even if this makes it possible for the programmer to choose incorrectly
C++ is designed to be as compatible with C as possible, therefore providing a smooth transition from C
C++ avoids features that are platform specific or not general purpose
C++ does not incur overhead for features that are not used
C++ is designed to function without a sophisticated programming environment
"Inside the C++ Object Model" (Lippman, 1996) describes how compilers may convert C++ program statements into an in-memory layout. Compiler authors are free to implement the standard in their own manner.

[edit] Standard library
The 1998
ANSI/ISO C++ standard consists of two parts: the core language and the C++ standard library; the latter includes most of the Standard Template Library (STL) and a slightly modified version of the C standard library. Many C++ libraries exist which are not part of the standard, and, using linkage specification, libraries can even be written in languages such as C, Fortran, Pascal, or BASIC. Note: supported languages is compiler dependant.
The C++ standard library incorporates the C standard library with some small modifications to make it work better with the C++ language. Another large part of the C++ library is based on the STL. This provides such useful tools as
containers (for example vectors and lists), iterators (generalized pointers) to provide these containers with array-like access and algorithms to perform operations such as searching and sorting. Furthermore (multi)maps (associative arrays) and (multi)sets are provided, all of which export compatible interfaces. Therefore it is possible, using templates, to write generic algorithms that work with any container or on any sequence defined by iterators. As in C, the features of the library are accessed by using the #include directive to include a standard header. C++ provides 69 standard headers, of which 19 are deprecated.
Using the standard library -- for example, using std::vector or std::string instead of a C-style array -- can help lead to safer and more scalable software.
The STL was originally a third-party library from
HP and later SGI, before its incorporation into the C++ standard. The standard does not refer to it as "STL", as it is merely a part of the standard library, but many people still use that term to distinguish it from the rest of the library (input/output streams, internationalization, diagnostics, the C library subset, etc.).
Most C++ compilers provide an implementation of the C++ standard library, including the STL. Compiler-independent implementations of the STL, such as
STLPort, also exist. Other projects also produce various custom implementations of the C++ standard library and the STL with various design goals.

[edit] Features introduced in C++
Compared to the C language

c++ output

++
From Wikipedia, the free encyclopedia
Jump to:
navigation, search
C++
Paradigm:
multi-paradigm
Appeared in:
1985
Designed by:
Bjarne Stroustrup
Typing discipline:
Static, unsafe, nominative
Major implementations:
GNU Compiler Collection, Microsoft Visual C++, Borland C++ Builder
Dialects:
ANSI C++ 1998, ANSI C++ 2003
Influenced by:
C, Simula, Ada 83, ALGOL 68, CLU, ML
Influenced:
Ada 95, C#, Java, PHP, D, Aikido
C++ (pronounced "see plus plus", IPA: /siː plʌs plʌs/) is a general-purpose, programming language with high-level and low-level capabilities.[1] It is a statically typed, free-form, multi-paradigm, usually compiled language supporting procedural programming, data abstraction, object-oriented programming, and generic programming. Since the 1990s, C++ has been one of the most popular commercial programming languages.[citation needed]
C++ is regarded as a mid-level language. This indicates that C++ is comprised of a combination of both high-level and low-level language features.
Bjarne Stroustrup developed C++ (originally named "C with Classes") in 1983 at Bell Labs as an enhancement to the C programming language. Enhancements started with the addition of classes, followed by, among other features, virtual functions, operator overloading, multiple inheritance, templates, and exception handling. The C++ programming language standard was ratified in 1998 as ISO/IEC 14882:1998, the current version of which is the 2003 version, ISO/IEC 14882:2003. A new version of the standard (known informally as C++0x) is being developed.
Contents[
hide]
1 History
1.1 The name "C++"
1.2 Future development
2 Philosophy
3 Standard library
4 Features introduced in C++
5 Hello world program
6 Language features
6.1 Operators
6.2 Preprocessor
6.3 Templates
6.4 Objects
6.4.1 Encapsulation
6.4.2 Inheritance
6.5 Polymorphism
6.5.1 Static polymorphism
6.5.2 Dynamic polymorphism
7 Parsing and processing C++ source code
8 Problems and controversies
9 Incompatibility with C
10 See also
11 Notes
12 References
13 External links
//

[edit] History
Stroustrup began work on C with Classes in 1979. The idea of creating a new language originated from Stroustrup's experience in programming for his Ph.D. thesis. Stroustrup found that
Simula had features that were very helpful for large software development, but the language was too slow for practical use, while BCPL was fast but too low-level and unsuitable for large software development. When Stroustrup started working in Bell Labs, he had the problem of analyzing the UNIX kernel with respect to distributed computing. Remembering his Ph.D. experience, Stroustrup set out to enhance the C language with Simula-like features. C was chosen because it is general-purpose, fast, and portable. Besides C and Simula, some other languages which inspired him were ALGOL 68, Ada, CLU and ML. At first, the class, derived class, strong type checking, inlining, and default argument features were added to C via Cfront. The first commercial release occurred in October 1985.[2]
In 1983, the name of the language was changed from C with Classes to C++. New features were added including virtual functions, function name and operator overloading, references, constants, user-controlled free-store memory control, improved type checking, and BCPL style single-line comments with two forward slashes (//). In 1985, the first edition of The C++ Programming Language was released, providing an important reference to the language, as there was not yet an official standard. In 1989, Release 2.0 of C++ was released. New features included multiple inheritance, abstract classes, static member functions, const member functions, and protected members. In 1990, The Annotated C++ Reference Manual was published. This work became the basis for the future standard. Late addition of features included templates, exceptions, namespaces, new casts, and a Boolean type.
As the C++ language evolved, a standard library also evolved with it. The first addition to the C++ standard library was the stream I/O library which provided facilities to replace the traditional C functions such as
printf and scanf. Later, among the most significant additions to the standard library, was the Standard Template Library.
After years of work, a joint
ANSI-ISO committee standardized C++ in 1998 (ISO/IEC 14882:1998). For some years after the official release of the standard in 1998, the committee processed defect reports, and published a corrected version of the C++ standard in 2003. In 2005, a technical report, called the "Library Technical Report 1" (often known as TR1 for short) was released. While not an official part of the standard, it gives a number of extensions to the standard library which are expected to be included in the next version of C++. Support for TR1 is growing in almost all currently maintained C++ compilers.
While the C++ language is royalty-free, the standard document itself is not freely available.

[edit] The name "C++"
This name is credited to also
Rick Mascitti (mid-1983) and was first used in December 1983. Earlier, during the research period, the developing language had been referred to as "new C", then "C with Classes". In computer science C++ is still referred to as a superstructure of C. The final name stems from C's "++" operator (which increments the value of a variable) and a common naming convention of using "+" to indicate an enhanced computer program. According to Stroustrup: "the name signifies the evolutionary nature of the changes from C". C+ was the name of an earlier, unrelated programming language.
Stroustrup addresses the origin of the name in Chapter 1 of his book,
The C++ Programming Language, remarking that another interpretation of the C++ name could be seen from the appendix of George Orwell's Nineteen Eighty-Four. Of the three segments of the fictional language Newspeak, the "C vocabulary" is the one dedicated to technical terms and jargon. "Doubleplus" is the superlative modifier for Newspeak adjectives. Thus, "C++" might hold the meaning "most C-like" in Newspeak.
When
Rick Mascitti was questioned informally in 1992 about the naming, he indicated that it was given in a tongue-in-cheek spirit. He never thought that it would become the formal name of the language.
A common joke about the name is that in C++, when ++ is used as a postfix operator the variable is incremented only after its value has been used (hence, for this reason and to match the double-plus Newspeak usage described above, it should be ++C rather than C++).

[edit] Future development
C++ continues to evolve to meet future requirements. A new version of the C++ standard is currently being worked on, entitled
C++0x, denoting that it is expected to be released before 2010. Current work indicates that C++ will continue to capitalize on its multi-paradigm nature. Notable expected improvements are native support for threading and concepts, which will make working with templates easier. More controversially, adding garbage collection is currently under heavy discussion. Boost.org is a group working to make the most of C++ in its current form. They are greatly expanding C++'s functional and metaprogramming abilities. They also advise the C++ standards committee on which features work well and which need improving.

[edit] Philosophy
In
The Design and Evolution of C++ (1994), Bjarne Stroustrup describes some rules that he uses for the design of C++. Knowing the rules helps to understand why C++ is the way it is. The following is a summary of the rules. Much more detail can be found in The Design and Evolution of C++.
C++ is designed to be a
statically typed, general-purpose language that is as efficient and portable as C
C++ is designed to directly and comprehensively support multiple programming styles (
procedural programming, data abstraction, object-oriented programming, and generic programming)
C++ is designed to give the programmer choice, even if this makes it possible for the programmer to choose incorrectly
C++ is designed to be as compatible with C as possible, therefore providing a smooth transition from C
C++ avoids features that are platform specific or not general purpose
C++ does not incur overhead for features that are not used
C++ is designed to function without a sophisticated programming environment
"Inside the C++ Object Model" (Lippman, 1996) describes how compilers may convert C++ program statements into an in-memory layout. Compiler authors are free to implement the standard in their own manner.

[edit] Standard library
The 1998
ANSI/ISO C++ standard consists of two parts: the core language and the C++ standard library; the latter includes most of the Standard Template Library (STL) and a slightly modified version of the C standard library. Many C++ libraries exist which are not part of the standard, and, using linkage specification, libraries can even be written in languages such as C, Fortran, Pascal, or BASIC. Note: supported languages is compiler dependant.
The C++ standard library incorporates the C standard library with some small modifications to make it work better with the C++ language. Another large part of the C++ library is based on the STL. This provides such useful tools as
containers (for example vectors and lists), iterators (generalized pointers) to provide these containers with array-like access and algorithms to perform operations such as searching and sorting. Furthermore (multi)maps (associative arrays) and (multi)sets are provided, all of which export compatible interfaces. Therefore it is possible, using templates, to write generic algorithms that work with any container or on any sequence defined by iterators. As in C, the features of the library are accessed by using the #include directive to include a standard header. C++ provides 69 standard headers, of which 19 are deprecated.
Using the standard library -- for example, using std::vector or std::string instead of a C-style array -- can help lead to safer and more scalable software.
The STL was originally a third-party library from
HP and later SGI, before its incorporation into the C++ standard. The standard does not refer to it as "STL", as it is merely a part of the standard library, but many people still use that term to distinguish it from the rest of the library (input/output streams, internationalization, diagnostics, the C library subset, etc.).
Most C++ compilers provide an implementation of the C++ standard library, including the STL. Compiler-independent implementations of the STL, such as
STLPort, also exist. Other projects also produce various custom implementations of the C++ standard library and the STL with various design goals.

[edit] Features introduced in C++
Compared to the C language

MY AUTOBIOGRAPHY


Heller my name is AARON PAUL ARCIAGA 17 years old iam the youngest child of MR AMADO ARCIAGA & MRS REBECCA ARCIAGA home atPH.2 ASTER ST.FLORES VILL SUBD. BANGKAL,DAVAO CITY iam studying at AMA COMPUTER COLLEGE OF DAVAO my moto in life is FAMILY IS A FOUNDATION OF LOVE,CARE,PEACE,COURAGE & UNDERSTANDING.
'' I WANT TO BE A PROFESSIONAL COMPUTER PROGRAMMER SOMEDAY'' in highschool lifeiam THE MOST OUTSTANDING STUDENT and i became the PRESIDENT OF SSG OF MNHS CHAPTER BY THE WAYmy favorite sport are chinese logyu and tennis.
kapoy na ko magtype ug letter sa computer maybabayarin pa ako sa casher wala ako money kay lapa a

Monday, July 16, 2007


PARTS OF COMPUTER BY ARCIAGA

Computer software
From Wikipedia, the free encyclopedia
Jump to: navigation, search
It has been suggested that this article or section be merged with Computer program. (Discuss)
“Software” redirects here. For other uses, see Software (disambiguation).
“Scientific software” redirects here. For the company, see Scientific Software (company).
Computer software, consisting of programs, enables a computer to perform specific tasks, as opposed to its physical components (hardware) which can only do the tasks they are mechanically designed for. 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 run the necessary services for user-interfaces and applications, and middleware which controls and co-ordinates distributed systems.
Contents[hide]
1 Terminology
2 Relationship to computer hardware
3 Types
4 Program and library
5 Three layers
6 Creation
7 Operation
8 Quality and reliability
9 License
10 Patents
11 Ethics and rights for software users
12 See also
13 References
14 External links
//

[edit] Terminology
The term "software" is sometimes used in a broader context to describe any electronic media content which embodies expressions of ideas such as film, tapes, records, etc.[1]

A screenshot of computer software - AbiWord.

[edit] Relationship to computer hardware
Main article: Computer hardware
Computer software is so called in contrast to computer hardware, which encompasses the physical interconnections and devices required to store and execute (or run) the software. In computers, software is loaded into RAM and executed in the central processing unit. 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 (object code), which 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.
The term "software" was first used in this sense by John W. Tukey in 1958.[2] In computer science and software engineering, computer software is all computer programs. The concept of reading different sequences of instructions into the memory of a device to control computations was invented by Charles Babbage as part of his difference engine. 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.[3]

[edit] Types
Practical computer systems divide software systems into three major classes: system software, programming software and application software, although the distinction is arbitrary, and often blurred.
System software helps run the computer hardware and computer system. It includes operating systems, device drivers, diagnostic tools, servers, windowing systems, utilities and more. The purpose of systems software is to insulate the applications programmer as much as possible from the details of the particular computer complex being used, especially memory and other hardware features, and such accessory devices as communications, printers, readers, displays, keyboards, etc.
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 text editors, compilers, interpreters, linkers, debuggers, and so on. An Integrated development environment (IDE) merges those tools into a software bundle, and a programmer may not need to type multiple commands for compiling, interpreter, debugging, tracing, and etc., because the IDE usually has an advanced graphical user interface, or GUI.
Application software allows end users to accomplish one or more specific (non-computer related) tasks. Typical applications include industrial automation, business software, educational software, medical software, databases, and computer games. Businesses are probably the biggest users of application software, but almost every field of human activity now uses some form of application software. It is used to automate all sorts of functions.

[edit] Program and library
A program may not be sufficiently complete for execution by a computer. In particular, it may require additional software from a software library in order to be complete. Such a library may include software components used by stand-alone programs, but which cannot work on their own. Thus, programs may include standard routines that are common to many programs, extracted from these libraries. Libraries may also include 'stand-alone' programs which are activated by some computer event and/or perform some function (e.g., of computer 'housekeeping') but do not return data to their calling program. Programs may be called by one to many other programs; programs may call zero to many other programs.

[edit] Three layers

Starting in the 1980s, application software has been sold in mass-produced packages through retailers.
See also: Software architecture
Users often see things differently than programmers. People who use modern general purpose computers (as opposed to embedded systems, analog computers, supercomputers, etc.) 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, and users may not realize that it exists or that they have a choice to use different 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 almost always 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
User software tailors systems to meet the users specific needs. User software include spreadsheet templates, word processor macros, scientific simulations, and scripts for graphics and animations. 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 purchased application packages, many users may not be aware of the distinction between the purchased packages, and what has been added by fellow co-workers.

[edit] Creation
Main article: Computer programming

[edit] Operation
Computer software has to be "loaded" into the computer's storage (such as a hard drive, memory, or RAM). Once the software is loaded, the computer is able to execute the software. Computers operate by executing the computer program. 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.
Instructions may be performed sequentially, conditionally, or iteratively. Sequential instructions are those operations that are performed one after another. Conditional instructions are performed such that different sets of instructions execute depending on the value(s) of some data. In some languages this is known as an "if" statement. Iterative instructions are performed repetitively and may depend on some data value. This is sometimes called a "loop." Often, one instruction may "call" another set of instructions that are defined in some other program or module. When more than one computer processor is used, instructions may be executed simultaneously.
A simple example of the way software operates is what happens when a user selects an entry such as "Copy" from a menu. In this case, a conditional instruction is executed to copy text from data in a 'document' area residing in memory, perhaps to an intermediate storage area known as a 'clipboard' data area. If a different menu entry such as "Paste" is chosen, the software may execute the instructions to copy the text from the clipboard data area to a specific location in the same or another document in memory.
Depending on the application, even the example above could become complicated. The field of software engineering endeavors to manage the complexity of how software operates. This is especially true for software that operates in the context of a large or powerful computer system.
Currently, almost the only limitations on the use of computer software in applications is the ingenuity of the designer/programmer. Consequently, large areas of activities (such as playing grand master level chess) formerly assumed to be incapable of software simulation are now routinely programmed. The only area that has so far proved reasonably secure from software simulation is the realm of human art— especially, pleasing music and literature.[citation needed]
Kinds of software by operation: computer program as executable, source code or script, configuration.

[edit] Quality and reliability
Software reliability considers the errors, faults, and failures related to the creation and operation of software.
See Software auditing, Software quality, Software testing, and Software reliability.

[edit] License
Software 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 OEM license when bundled with hardware. Software can also be in the form of freeware or shareware. See also License Management.

[edit] Patents
The issue of software patents is controversial. Some believe that they hinder software development, while others argue that software patents provide an important incentive to spur software innovation. See software patent debate.

[edit] Ethics and rights for software users
Being a new part of society, the idea of what rights users of software should have is not very developed. Some, such as the free software community, believe that software users should be free to modify and redistribute the software they use. They argue that these rights are necessary so that each individual can control their computer, and so that everyone can cooperate, if they choose, to work together as a community and control the direction that software progresses in. Others believe that software authors should have the power to say what rights the user will get.
The former philosophy is somewhat derived from the "hacker ethic" that was common in the 60s and 70s.

[edit] See also

Software Portal
system software
application software
computer program
Computing
Software as a Service
Software Security Assurance
Origins of computer terms
Uninstaller
Virtual instrumentation
List of open source software packages
Software industry
Custom Software
Computer programming
List of basic computer programming topics
List of computer programming topics
Programming language
Text editor
Compiler
Algorithm
Software development process
Software development tools
Software maintenance
Software optimization
Application programming interface
Software brittleness
Software engineering
Software license
Proprietary software
Free software
Open source software
Copyright infringement of software
Freeware
Shareware
Postcardware
Shovelware
Dual license
License Management

[edit] References
^ software. (n.d.). Dictionary.com Unabridged (v 1.1). Retrieved 2007-04-13, from Dictionary.com website: http://dictionary.reference.com/browse/software
^ John Tukey, 85, Statistician; Coined the Word 'Software', New York Times, Obituaries, 2000-07-28.
^ Hally, Mike (2005:79). Electronic brains/Stories from the dawn of the computer age. British Broadcasting Corporation and Granta Books, London. ISBN 1-86207-663-4.

[edit] External links
Retrieved from "http://en.wikipedia.org/wiki/Computer_software"