TAGUSLINK
Computer software, or just software, is the collection of computer programs and related data that give the instructions commanding a computer what to do. The term was coined to contrast to the old term hardware (meaning physical devices). In contrast to hardware, software is intangible, meaning it "untouchable". Software is also sometimes used in a more narrow sense, meaning application software exclusivly. Sometimes the term includes data that has not traditionally been associated with computers, such as film, tapes and records
Software includes all the several forms and roles that digitally stored data may have in a computer (or similar system), iregardles of whether the data is used as code for a CPU, or other interpreter, or whether it represents other kinds of information. Software thus encompasses a broad array of products that can be developed using different methods such as ordinary programming languages, scripting languages, microcode, or an FPGA configuration.
The types of software include web pages developed in languages and frameworks like HTML, PHP, Perl, JSP, ASP.NET, XML, and desktop applications like OpenOffice, Microsoft Word developed in languages like C, C++, Java, C#, or Smalltalk. Application software most commonly runs on an underlying software operating systems such as Linux or Microsoft Windows. Software (or firmware) is also used in video games and for the configurable parts of the logic systems of automobiles, televisions, and other consumer electronics.
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, executable code is made up of machine language instructions specific to an individual processor. A machine language is made up of groups of binary values signifying processor instructions that change the state of the computer from its preceding state. Programs are an ordered sequence of instructions for changing the state of the computer in a particular sequence. It is most commonly written in high-level programming languages that are easier and much more efective 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 should be assembled into object code via an assembler.
Users usually see things differently than programmers. People who use modern general purpose computers (as opposed to embedded systems, analog computers and supercomputers) most commonly see three layers of software performing so many different tasks: platform, application, and user software.
* Platform software: Platform includes the firmware, device drivers, an operating system, and generally a graphical user interface which, in total, allow a user to interact with the computer and its peripherals (associated equipment). Platform software usually comes bundled with the computer. On a PC you can most commonly have the ability to change the platform software.
* Application software: Application software or Applications are what many people think of when they think of software. Typical examples include office suites and video games. Application software is usually purchased separately from computer hardware. Sometimes applications are bundled with the computer, but that doesn't change the fact that they run as independent applications. Applications are most commonly independent programs from the operating system, though they are usually 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 and word processor templates. Even email filters are a kind of user software. Users create this software themselves and usually oversmell how crucial it is. Depending on how competently the user-written software has been integrated into default application packages, many users may not pay attention to the distinction between the original packages, and what has been added by co-workers