Computer software is, by definition, a series of instructions and/or data that the computer system will execute in a predetermined sequence. Computer software packages come in many different styles and types. This virtual plethora of software come in many forms: games, web browsers, chat programs, office applications, and specialty software packages. Despite the number of variations computing software comes in, in essence all the same to the computer: data in, input, and data out.
It is much easier to break down software into four primary groups: productivity, programming, entertainment, and common computing functions.
Productivity would be the label for many software packages such as Excel, Word, PowerPoint, Pages, Numbers, and so on. This particular variety of computer software is designed for use in a wide array of environments and by users with varying skills and interest sets. There are off the shelf productivity computer software packages and there are custom made applications designed for very specific tasks.
Programming languages are what software developers use to create computer software, though they are in and of themselves pieces of software too. Programming languages from BASIC to C++ and JAVA are all very common and there is a clear delineation between pre-compiled languages such as C++ and many run-time compiled languages such as many variants of BASIC. The distinction is that C++ typically is used to write a program, then transform that human readable code into a language directly readable by the computer system. Many forms of BASIC on the other hand create a token or intermediary file which requires the assistance of a run-time engine to compile it on the fly.
A recent trend in computing languages is the development of platform agnostic computer software packages. JAVA as a prime example of a language that has led this particular charge with their 'write once, run it on any platform' approach. Platform agnostic computer software will run on many different platforms, but they tend to be less efficient than compiled computer software.
Entertainment software takes many forms, but games are usually what one thinks of when discussing the topic of computer software designed to entertain. The latest games are almost all following trends of internet connectivity for multiplayer purposes (some genres even require this) and ever more realistic 3D graphics.
There are also an incredibly large number of software applications that do not necessarily fall into any of the above categories. For example: instant messenger programs and e-mail programs can be considered productivity, but they can also be used for the purposes of entertainment. Anti-virus software is another program which virtually every modern computer should be using, but yet it is not easily categorized since its utility lies in prevention and protection rather than tangible usage qualities. Therefore, the definition for computer software for common tasks would be just that: it must be common to a broad section of computing needs, and does not necessarily have to be actively used.
Software can either be professionally developed for profit, or public works that are typically free. This is generally referred to as freeware or open-source if the code is available for public editing.