Talk:Software/Archive 1

Critic
Critic of:
 * "manifestation" is not techical word. there are more sutable words.
 * mess of "Computer software", computer program, data
 * computer program in the form of data - usually computer program is not data
 * "data can be executed" ... by another piece of software" - disputed
 * just story telling instead of defining it in an encyclopedic fashion
 * avoids statemets or contradicts to:
 * "software is information"
 * "software is part of computer system"
 * "Computer software" = computer program + data
 * Software is much more wide range of computer information. There is SW that is not program. Examples: database and each database table is SW, but not program, DBMS is SW and programm. Simplest web page is SW and not a progrmm.
 * Thus definition of SW on the basis of program is not accurate.
 * From the point of view k.lee, each SW is program. it similar to "each SW is windows".
 * Kenny sh

Program and data

 * A program is data. Considering it as such is the very basis of the modern von Neumann model of computers. Dysprosia 11:41, 6 May 2004 (UTC)
 * Program and data are set of information, first of all. von Neumann separates between data and program, plese read the article carefully. A program can treat another	 program (or self) and data and change it, as compiler of virus do. In time of execution there is strong separation between data and instructions. For example: data(rw) & code/text (exec,ro) segment of any executable file. Also there is strong separation between data and instructions is assembler langauge. It high level langages OO (C++), logical languages (prolog,lisp), neural networks separation between data and program sometimes disapears at all. For example prolog program is not instructons or just data, it is together, it is knowlege. Because of difficults between data and program, I propose to base SW definition on information.Kenny sh 12:25, 6 May 2004 (UTC)
 * I fear information is just another shallow term, used to describe some atomic construct. I'd prefer data, as one could define data as something that is processed, and an CPU is processing the opcodes it gets. While information has some more aspect of meaning in it, that is not that found in the term data.
 * information and data are different terms. Please read about more.
 * Pay attantion, that here we discuss SW definition, not relation between program and data. Kenny sh
 * You said that "usually computer program is not data", when it is always data. I was addressing this point. The distinction between information and data is that information is data which is given some interpretation. But a computer program, in the assembly language of that architecture, is data, but is also information as well. Dysprosia 14:49, 7 May 2004 (UTC)
 * computer program could be treated as data by compiler for example. You expression information is data is wrong, becase information and data are different but sometimes similar terms. Please read artice data about the definition. Kenny sh

Critic of Kenny's definition and talks
Content added by Kenny sh, which I am moving here because
 * 1) it has poor grammar
 * I am not native english speaker, please fix my grammar. Kenny sh 08:27, 5 May 2004 (UTC)


 * 1) discusses the subject instead of defining it in an encyclopedic fashion (this belongs on a talk page)
 * I do definition, first of all. Kenny sh


 * 1) I disagree with the definition.
 * What is source of your definition!? Kenny sh
 * Your definition is incorrect, for the reasons I have described, so the source of my definition is irrelevant. I have used my knowledge and education about computer science.  FYI I've been studying computer science for years at the graduate level, and so I do not need education about it from you. k.lee 23:29, 5 May 2004 (UTC)
 * Very non professional ansver. You have to provide sources of you information. Please read wikipedia rules. Kenny sh
 * Sorry for butting in when i know nothing of this conversation... i just want to say: someone has to write them... when he said "I have used my knowledge and education about computer science" i assume he meant "I originated this definition", at least, in terms of the particular wording of it. (Random832 10:35, 2004 Jun 13 (UTC))

Computer software is kind of information stored in computer memory and processed by computer.

From a point of view of computer hardware computer software devided to computer program and data.

Computer software could be called as software or SW.

Many peoples mix up Software with computer program. Computer program is just instrctions for CPU, while Software is much more wide range of compuer informatin, includung data, text, databases, html, media etc. Computer program is main part of computer software. Computer software without computer program is just set of data. Example: database is SW, but not program, DBMS is SW and programm.

OK, now I will expand on why I believe Kenny sh's definition is incorrect. First, Kenny wrongly assumes that a computer program contains only "instructions" and not "data".


 * Please read Computer_program. Kenny sh
 * Which only proves my point. Data and instructions are not clearly distinguishable.

The distinction between the two is not clear at all.


 * Yes. Nikolaus Wirth said: Algorithms + Data Structures = Programs

Have out read books of Nikolaus Wirth, Donald Knuth?
 * You are misinterpreting that statement completely. When Wirth speaks of "data structures", he is not speaking of "data" in the sense that you mean.  He is describing the disciplines of algorithm design and data structure design, which together comprise programs.
 * p.s. Wirth's statement is at least controversial and possibly completely wrong. Wirth believed in a hard separation between algorithms and data, an idea which underlies the design of Pascal.  But this separation has always seemed outrageous and limiting to Lisp programmers, who have a more fluid view of data.  This view persists in many modern programming systems --- is the Squeak heap image program or data?  It's both, of course.  k.lee 01:01, 6 May 2004 (UTC)

There is a lot of different types of data. Some of kind of data is part of programm, another not (like DB) but still part of SW. Kenny sh 08:27, 5 May 2004 (UTC)

A program is an abstract concept, like an algorithm. A program may indeed contain "data" (in the form of hardcoded constants, for example). Conversely, mere "data" may contain "instructions", or may itself be a program when viewed at a different level of abstraction; consider the following: Are these instructions or data? The distinction is nearly meaningless. But it is clear that all of these implement "programs" in some sense, and therefore must be considered "software".
 * 1) An HTML file that contains JavaScript code
 * 2) A program written in the Pan functional imaging language
 * 3) A literate program written in Web.
 * 4) A text file in the TeX markup language, which is Turing-complete

Program is subset of Software

 * Kenny sh:


 * 1) Almost all programm is SW.
 * 2) Not all SW is program! ( SW ~= programm. SW > programm )


 * Example: database is SW, but not program, DBMS is SW and programm.
 * That's nonsense, because the distinction between data and programs is meaningless. A text file is data, but if it contains program text then it's a program.  The tables in a RDBMS are data, but they also contain integrity constraints that constitute a declarative program. k.lee 23:29, 5 May 2004 (UTC)


 * Broadly speaking, there are two ways that the abstract idea of a "program" can be manifested: (1) hardware (burned more-or-less permanently into an integrated circuit) and (2) software (held in computer storage for execution by some piece of hardware). This is the only proper definition of software.


 * More simpe example, I have simpe html (no scrpts inside) file on a disk. The file is Software. This file is not a Program.

Because of Program is subset of Software, definition of Software based on Program is wrong. Kenny sh

Kenny: In comments elsewhere you have even disputed the obvious fact that software may be executed by other software, not by hardware.
 * I never disputed. I agree, software may be executed by interpretator/emulator/virtual machine etc. Kenny sh 16:20, 11 May 2004 (UTC)

Furthermore, your edits and comments have been rude.
 * Only as results to you argessive removal of my text. Kenny sh 16:20, 11 May 2004 (UTC)

You have already admitted that you are not an English speaker; please consider the possibility that you do not know the English definition of "software", and your edits here are mistaken.
 * You try to say, that if you know English better than me, than you know SW development better than me? Sorry, I don't agree with you. Kenny sh 16:20, 11 May 2004 (UTC)

Regarding your example above that an HTML file with no scripts is not a program, I disagree. Here is where you are fundamentally wrong: the question of whether a piece of data is a program or not is in the eye of the beholder. A piece of HTML file can be viewed as "dumb data", or it can be viewed as a complex constraint-based specification of a graphical rendering. (Are you familiar with Prolog and the CLP family of languages, and declarative programming in general? Something tells me you are not, and that your notion of "programming" is strongly informed by a handful of imperative languages.)  All software is therefore a program of some kind.

I will concede this entire argument if you can answer the following question: is the following line of text a program, or not? "Hello, world." Have at it. k.lee 00:09, 11 May 2004 (UTC)


 * I agree with you, that wether ansver to question some information is data or program is relative. For example for any data or text or image I can write an interpretator, and magicaly convert a data to a program (even "Hello, word."). But this is sepculation. I propose to look from common sense & professinal point of view and not from some virtual point of view. From common sense point of view "Hello, word." is data, or more strongly, it is information. BWT, I know prolog and lisp, logical programming, AI and much more. Do you know, that modern computers still runs not only perl but also programs writen on C++, c, assembler? Please note that I say that there are situations, when program and data are strongly different. I agree with you that in another situations a program looks like a data, a data looks like a program. Please note, that from the my point of view of a pofessinal sw engineer, very important to distinguish this situations.
 * On the bottom line. It is not soo important for SW, if a some piece of information is program or data.
 * Actually, it is not "speculation". There are probably hundreds of programming languages where the text that I quote above is a program.  This is true in nearly every functional language, as well as most scripting languages.  But this particular example isn't that important.  The higher-level point is that no data is inherently either program or non-program; it is the way that one processes a piece of data that determines whether it is a program.
 * I disagree that the porous boundary between programs and non-program data is only of "virtual" interest. It is one of the great ideas of computer science.  Consider the universal Turing machine.  Splitting data into program and non-program segments is mostly an engineering choice.
 * And, indeed, there are situations when it is useful to regard programs as separate from data. But that is a property of those particular computing models, not of programs (or software) in general, and this is of relatively less importance for the layperson.  So the distinction and should be discussed under those computing models, further down the page or in a separate article.  k.lee 17:01, 11 May 2004 (UTC)


 * I propose to use word information instead program and/or data when appropriate. information will mean program and data, with no separation between. Kenny sh
 * I don't think that corresponds to the usual definition of "information". Rather than inventing a peculiar Wikipedic definition of "information", we should describe the situations when there is a distinction, and then explain that in those contexts the word "data" is overloaded to mean "non-program data".

Last definition

 * PS: New definition Computer software (or simply software) is a collection of data held in the storage of a computer for some purpose. looks much more correct. Thank you! Kenny sh 16:20, 11 May 2004 (UTC)


 * Well, after I cooled off a bit, I thought it over again, and decided that neither of us was right, or both of us. I was correct in saying that there is no strong distinction between programs and non-programs, but you were correct in saying that not all software consists of programs.  k.lee 17:01, 11 May 2004 (UTC)


 * Congratulation! I agree 100% with your last paragraph.


 * I'll add progarm to definition. ok? And make Computer software (or simply software) is a collection of data and programs held in the storage of a computer for some purpose.

Grammar critic
Lastly, Kenny, please invest some effort in checking the grammar of your edits before posting them, and use the talk pages (not the article itself) when you want to talk about the article. k.lee 00:36, 5 May 2004 (UTC)
 * Am not fluent in english. I don't live in english speaking environment. Sorry. Kenny sh 08:27, 5 May 2004 (UTC)

p.s. Not all computer software executes directly on the CPU. Software that is interpreted or executed on a virtual machine does not depend on the CPU at all.
 * Yes, I agree. Scripts, java are executed inderectly. Kenny sh 08:27, 5 May 2004 (UTC)

k.lee 00:38, 5 May 2004 (UTC)

manifestation
Dear k.lee, please usage your usage of word manifestation. It seems me not sutabe. Kenny sh
 * I am using the word in its standard English definition. If you do not understand it, then perhaps you should study more English before you copyedit. k.lee 23:29, 5 May 2004 (UTC)
 * It's not technical term.
 * It doesn't need to be. Dysprosia 11:41, 6 May 2004 (UTC)
 * Preferable to use well defined (also in wikipedia), scientific word. To avoid ambiguty. Defition should to be simple as possible, short, precise, unambigyuty, standart. Storytelling and examples should to go after definition.
 * What storytelling is being done? "manifestation" is a perfectly precise and unambiguous word. Dysprosia 14:52, 7 May 2004 (UTC)
 * Please read: Talk:Computer_software.

Disputed
Sometimes (especially in older texts) software denotes all the data that a computer processes, including "inert" forms of data that do not implement programs. For example, some dictionaries list a meaning like the following:
 * Information that may provide instructions for computers; data for documentation; and voice, video, and music for entertainment or education.

Definitions like this one are less commonly used in modern times, and can cause confusion where they are used (e.g., in the Debian Social Contract). On the other hand, this definition arguably remains useful because the distinction between "inert" data and "active" programs is not always clear.

Plain English
Hey guys, following a request on Cleanup I've taken the liberty of re-writing the introduction in plain English for the benefit of non technical readers, with a specific link to this page to alert people to these various discussions. I hope you may find this an acceptable work around - perhaps even good enough to remover the disputed tag????


 * Show me please this request. I agree about 'plain text', if will be separated from another artice. A propose this (Plaese fix English style, if you like):

Scripting is bi
New Section: Software and Hardware ==

Software's relationship with hardware is two-fold. Firstly, software is stored in memory (either RAM or disk or otherwise; it does not matter). Secondly, software runs on hardware, which is a colloquial term meaning that the hardware interprets the program, as it resides in memory, by reading instructions, which it then executes. The important point is that software, like other kinds of programs, is made up of a series of instructions. Computer software is developed and written by programmers, often aided by pre-existing software tools, for a particular digital computer or operating environment.

The bulk of the instructions in a software program can be grouped into general types: loading data from and storing it to memory, mathematical operations (most of which reduce down to addition and subtraction), bit manipulation (working directly on the binary representations of numbers: changing or re-ordering the actual bits which make them up), logical operations and control flow. [This should be made into a list.]

On modern computer systems, software programs have to satisfy various compatibility requirements, including using the correct instruction set architecture (ISA) and application binary interface (ABI). The former ensure that the CPU can understand the program, and the latter that the operating environment can properly load the program into memory.

Until a program is run on a computer, there is no relevant distinction between it and generic binary data. Technically, all data in memory is noise except in the case where it is comprehensible by some process. For more on this, see information theory. Thus, the most important aspect of any true program is that it can be read and understood by a computer (specifically, the CPU) as a sequence of instructions to be executed. In this way, a software program can be specifically defined as a special case of a program or algorithm, in this case, one which can specifically be understood by a real computer in practice. This is only possible because the CPU inside a computer is specifically designed as a general purpose data processor, with a published ISA and the ability to communicate with memory.

New Section: Creating Software
The work of creating software is called software development. Whether this is in fact the same as software engineering [the same article appears for both terms] is regularly debated.

All computer software is written using a programming language of some sort, and is then either compiled to native code (in other words, to a form recognizable by a particular computer platform) or is interpreted by a virtual machine or interpreter. The interpreter itself is usually a native program. There are many kinds of software programs in existence, but those which do not run natively on a digital computer may be considered to be a different class than those which do. The distinction is, admittedly, blurred, because it is possible (and nowadays quite common) to virtualize existing hardware to allow software intended for one computer, either real or virtual, to be run on another computer. In fact, many virtual computers have no actual hardware counterpart.

It can be arguedIt can be argued that software written for interpreters is, in fact, not software proper, any more than a program written in any high level language is software. Both require translation to native form, either in advance, or inline with execution, before they can be used. In addition, it is a fact, as opposed to an opinion, that at any moment in time, a given program can either be processed natively by an existing computer system, or not, and thus the distinction is objective, whether or not it is considered especially relevant to the average user.

Also to consider -- brief intros or at least links to (to make this article the top of the computer software tree):
 * software engineering vs. software architecture vs. hacking
 * software is usually buggy, and so there are arguments about how to achieve software reliability
 * software development processes, software methodology, extreme programming
 * design tools, Unified Modelling Language

New Section: Software Components
Initially, computer software was written monolithically, that is, as one program which ran directly on hardware and without the support of an operating system or libraries (see below). This quickly became untenable as programs grew in complexity. Various strategies were invented to alleviate this, including the creation of sub-routines, then software libraries, and more recently the idea of object oriented programming. Other strategies undoubtedly exist, and more will be created, by necessity, as a means to reduce the workload on programmers and to improve software reliability by focussing effort on improving existing software, instead of re-writing it from scratch.

Modern systems utilize software re-use principles ubiquitously, primarily through the use of the operating system and software libraries, but also through the general idea of software services, which nowadays regularly span multiple computers.

New Section: Operating Systems
Operating systems provide a number of benefits to computer programmers and users. In addition to code re-use, they enable platform portability by providing an abstracted software interface to hardware features. In the case of native programs, it is theoretically possible to abstract all features except the CPU. CPU compatibility can exist, but it is a feature of the CPU, not the operating system. For example, programs written for Windows NT 4 targeting the Intel 80486 processor can reliably run on Windows NT 4 running on a PC using AMD Sempron processor (because the AMD provides ISA compatibility with the 486), but not on Windows NT running on an Alpha processor. However, the original PC can replace most other hardware, such as the video display and graphics adapter, keyboard, mouse, and audio circuitry, in the event that those are supported by operating system, and the software will likely still operate as expected.
 * There are a lot of operating systems out there, and not just for PCs. I am a bit uncomfortable with the definiton of software here, since I consider it to be a dated definition.  We are now in a complex mixture involving middleware which is what is between the hardware and the software, but hardly mentioned in this article.  Software is NOT generally portable to alternative platforms, unless the middleware can emulate the same kind of operating environment. User:AlMac|(talk) 21:17, 20 January 2006 (UTC)

New Section: Device Drivers
Device drivers are a component of operating systems which use the concept of modularity and code re-use to allow operating systems to be extended to support additional hardware without re-compiling the operating system. This is important, because it allows an operating system to support hardware devices that do no exist at the time the software is delivered to end users.

New Section: Software Libraries
A software library is a collection of general purpose program code which can be used by multiple software programs, thereby removing the requirement that the program include the functionality inside itself, consequently saving the program's developers having to perform the work of creating it. Most operating systems include a large number of software libraries for common tasks, over and above hardware abstraction. In addition, many software libraries are produced and marketed separately, and software developers often create their own libraries, for purposes of modularity and to allow simultaneous development of different portions of the program.
 * I tried to rewrite the section slightly to eliminate the WP:POV. Software libraries are not used exclusively for shared code, but rather practices vary by OS.  For example, it is common practice in the AS/400 world to have some libraries for data, some for stand alone executable programs, some for source code, some for shared routines, but this is an arbitrary convention. User:AlMac|(talk) 21:20, 20 January 2006 (UTC)

Software varieties
''I think, this paragraph sould to be like this. Classical division of software in computer science is system and application software. I don't understand devision to platform, user software in top level of classification. Conan 21:05, 7 Nov 2004 (UTC) ''

In computer science all software divided to two big classes:


 * System software : System software includes the basic input-output system (often described as firmware rather than software), 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). System software often comes bundled with the computer, and users may not realize that it exists. Programming tools also are part of system software, because compilers, and other tools are always dependent of the operating system and CPU, and all system software can't be build without compilers and linkers.


 * Application software : Application software allows a user to accomplish one or more specific tasks, like office suites and video games. Application software is often purchased separately. Applications are what most people think of when they think of software. Sometimes applications are shipped with a computer, but that does not change the fact that they are applications.User software tailors application software to meet the users specific needs. User 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.

See the rest of this discussion page for explanation and references. As far as I can tell, there cannot be any dispute over the fact that there are *many* kinds of software. The real debate is about what the "computer software" page should say. If this page is about "computer software" then it should openly discuss all kinds of computer software, rather than limiting it to jsut the CS point of view. At least that is what I believe. If you want to create a separate page for the narrow-minded CS concept of software, that would would be fine by me. -- The phantom avenger for software engineering

---

Since this article has such a general title, perhaps it should focus more on the difference between software and hardware than the various different ways of classifying software.

---

Computer science does not make a distinction between operating system software and application software. This is a practical distinction made in the software industry, for organizational, conceptual, reliability and security reasons, but is of little interest to computer science proper. Operating systems enable abstraction of a hardware interface to a software interface, allowing two things: portability of application software, and software re-use. These are engineering issues, not scientific ones.

Software classification
I very surprised to see more top SW classes, except system and application. Who can explain me nature of others classes? Kenny 12:52, 2004 Oct 25 (UTC)


 * See the rest of this discussion page for explanation and references.


 * Can you be more specific please. I found only link to and don't found definitions there and didn't fount it valuable. And, would you like to make an account and login. Conan 10:21, 8 Nov 2004 (UTC)


 * There is a huge amount of info about end user programming. Try link 1 or link 2. Both are found in the last 2 paragraphs on this page (Nov 8, 2004). Even the CACM had an entire issue devoted to end-user computing a couple months ago.


 * As to your other point.... If I had an account, then I would not be the "phantom avenger for software engineering", I would have to be the "phantom avenger for software engineering with an account on Wikipedia", but that that would be someone else entirely different.

---

I do not understand how the facts and arguments regarding software classification have much bearing on the description of "Computer software", or how it enlightens readers. Far more important is what computer software is and how to distinguish it from what is not computer software, for example other algorithmic processes, or algorithms themselves.

If such classification were relevant, it would be much more important to use better classifications than one based on who produced the software, since generally that is not immediately evident from the inspection of a program on its own, say, without benefit of the programmers' names or other information. A program on its own can be distinguished primarily based on the operating environment in which it runs. Some software runs on PCs. Some runs on embedded systems. Some runs in directly on the hardware or "standalone", while others run in virtual machines or interpreted environments. Some software runs in "batch mode" without user intervention, while other software has a user interface. Some user interfaces are light-weight and use only text for input/output. Others are heavy-weight and use GUIs and multiple hardware input devices. Some software runs over the Internet through a browser or other intermediary client. Some software runs on multiple machines simultaneously. These are real, sensible differences. The experience and purported skill level of the programmer is irrelevant when considering the software itself.

Scripting is big business
The most widely used programming language in the world is Visual Basic. It is used for all sorts of scripting work and custom programming. Spreadsheet templates and scripts encompass as much development every year as all other applications. That is reality.

User programming is a huge third branch of software.

This matters, because computer software is used on software engineering as the main definition of software. (Kenny did that). Anyways, applications tend to be written by SE people while users software is written by everybody. This distinction must be made clearly to define SE properly. If this page does not want to define all software, then the SE page must use some other page as the main definition.


 * Regardless, I've never seen anyone separate application and user software into two different categories. I did not remove the distinction between them, I merely noted the subdivision. If you disagree, please provide references, and remember that this is not a place for "original research". --Shallot 15:08, 5 Aug 2004 (UTC)


 * There is a lot of data about this on the web. There are 630,000 full time software engineers in the U.S. who spend most of their time doing application and system software. There are closer to 2,500,000 programmers in the U.S. who do a lot of programming. The number of compilers sold is close to the number of programmers. There are sites like data which break down the application programming. Sales data on compilers gives a better count of actual programmers.


 * Probably the most common mistake in understanding the software, is to mix it up with the software industry, which gets paid to make software. Most software is written by scientists, businessmen, hobbyists, and others who do not get paid for it directly. But, ignorance has never been accepted as justification for poor scholarship.


 * That document from sbtdc.org has three categories, but they are "systems software", "application tools" and "applications software". The first is fairly obvious, the third is described as "includes products such as word-processing and spreadsheet programs", while the second is composed of "data access and retrieval, data management, data manipulation, and program design and development software". I don't see from this description that they mean templates, macros, simulations, scripts and filters; rather, it sounds to me like they delineate "mainstream" application software from more specialized applications. No? --Shallot 20:22, 5 Aug 2004 (UTC)


 * You are following the usual for-pay industry = software metaphor. That document describes the for-pay industry well. To see the rest of the programmers, you only need to look around at everyone else who programs. That means counting compilers shipped and so on.


 * The U.S. Bureau of labor statistics recognizes three different categories of software developmers as described in the following table. See BLS home page for more details. Note that these are the "full time" software developers. There are even more who have other job titles, but do software development anyway. This data is duplicated in Software engineering demographics.

CODE    TITLE                                           Number in 2002 15-1021 Computer Programmers                            457,320 15-1031 Computer Software Engineers, Applications       356,760 15-1032 Computer Software Engineers, Systems Software   255,040


 * According to the the U.S. government, the largest group of programmers does not work on either applications or systems software. They work on a wide variety of tasks, including scripting, customization, scientific simulations, etc.


 * Hmm. But couldn't this statistic above simply mean that the largest group of people simply have broad, generic job descriptions? In other words, perhaps they don't actually spend all of their time doing applications or system software, but still do various things which also include both applications and/or system components?
 * And even so, I'm still wary of separating a subcategory of application software and/or of data into a parallel category without an exact reference. Dunno. --Shallot 23:36, 7 Aug 2004 (UTC)


 * To some extent you are correct. However, those programmers claim not to be doing applications or systems. And there are millions of spreadsheet writers. The number of users who customize their own software is huge. Visual basic has more lines of source code than any other language in history.


 * To my mind, the real question is what kind of proof do you want. Here is a link to an editorial in IEEE Software that worries about end-user programmers link. There are lots of articles out there like this. There is plenty of people who count end-user programmers (especially Microsoft). What do you want, a text-book reference?


 * I just googled "spreadsheet programmers" and one of the top links was link. The first paragraph says "It is predicted that by 2005 in the United States alone there will be 55 million enduser programmers compared to 2.75 million professional programmers".

In computer science all software divided to two big classes:

System Software

Application Software

What about embedded software? I'm not sure it fits into either system or application. Perhaps computer science should be split up into three classes:

System Software

Application Software

Embedded Software


 * Unfortunately, this categorization scheme is rather naive and not very relevant to how software really works. See my comments above about categorization (which I didn't attribute to myself, sorry).


 * So-called "System Software" simply does not really have a distinct nature except trivially. Much of what we now call system software is technically application software, like disk utilities and developer tools. It seems like what people mean by "System Software" these days is just whatever the O/S manufacturer ships for free with the operating system. Also, there is a big difference between the hardware abstraction layer (the "true" operating system, according to some) and the vast bulk of libraries which enable networking, GUI interfaces, math utilities, etc.


 * Also, not really sure if the above comments should be here in the completely tangential "Scripting is Big Business" section, but I'm not so bold as to move it at the moment. I'd rather get some more input first. Brent 01:09:07, 2005-08-09 (UTC)

Link to disambiguation page
The usual convention is to have the link to the disambiguation page at the top, and not at the end of the first section. Also, the trend is to use the following template: --surueña 17:11, July 22, 2005 (UTC)

Software versus Data
"As computational science becomes increasingly complex, the distinction between software and data becomes less precise." Is the quoted sentence the opinion of one of the authors of the article, or does it describe an issue brought up in the literature? Personally, I would argue that the distinction is not so difficult, but is one of context. That is, since programs are generally not self-modifying, any data processed by the program can be contextually called data, even in the case of a program which produces or processes other programs (compilers and interpreters). Even allowing for the existence of self-modifying programs, it is usually possible to distinguish between the portion(s) of the program which modify other parts of the program, but which themselves are not modified, and thus keep the distinction contextually intact.

In an actual program as found on disk, the distinction between actual code and data is in fact very explicit, and are frequently called the "text" and "data" segments. So I feel that the assertion as quoted is not tenable.

Computer


 * The confusion can be due to a user's experience with programming languages in which an object can be executed if the file name ends in .EXE or some such control to say what application software is to run it. There is no such confusion in the compiled programs world, where source code can be treated as data by some other program, but the compiled code is data only to a compiler, or in the complicated world of pre-comilers. User:AlMac|(talk) 09:24, 18 January 2006 (UTC)

Software versus Data II
Although I go way back to the days when self-modifying code was considered the mark of a real programmer, lets concede that we will no longer consider that acceptable. Nevertheless, in recent years, to increase the flexability and minimize the impact of obsolescence of software, more and more of the 'structures' we had come to accept as 'hard' programmed are now input as, or modified by, data. This particularly applies, for example, to the format of input or output 'applications' data. And, since subroutines may be compiled as separate subprograms, and need not be bound (or linked) until run time, unknown future features may be added by simply adding such subprograms to the environment and using execution time calls which are input as data (shades of SNOBOL!).

Your comment, "I would argue that the distinction is not so difficult, but is one of context" puts me in mind of a very famous Jurist, who so famously remarked of pornography, that it was damned difficult to define, "but I know it when I see it!"

Needless to say, I concur with the earlier quoted statement. I have trouble enough defining data, without having to distinguish it from code. That latter distinction is usually a purely arbitrary one made on the basis of when the code or data is introduced to the transaction and how it is processed. It makes no difference to the computer, for example; its states may be changed by either code or data (which is a distinction with little difference).

Example: Does a branch on zero occur because of the coded instruction to do so, or because the data set the register to zero!?! normxxx 04:35, 1 January 2006 (UTC)

Original Concept of Software Was Not Turing's
In its introduction, the article credits Alan Turing with the concept of software. Though he originated the theoretical framework for most software, the concepts of a sequence of instructions to be executed by a mechanical device precedes Turing. To my knowledge, the first person to have the idea was Charles Babbage in the form of his analytical engine. If you extend the concept beyond computation to simply as sequence of instructions to control a mechanical device, then Babbage was preceded by Joseph Marie Jacquard who invented a loom that was controlled by wooden punch cards.

I believe that Saying that Turing came up with the concept of software is wrong. I am hoping for feedback before changing the article. —The preceding unsigned comment was added by Mgrand (talk • contribs).


 * I think you're right; either Babbage, Jacquard or even Ada Lovelace came up with the idea of programming (depending upon the source) but Turing was definitely the person who put computer science on a sound theoretical foundation. --Coolcaesar 01:55, 7 April 2006 (UTC)

"Lite" version
The term "lite" version shows up quite a bit, but I can't find any page that describes it. Usually it's just a feature-reduced version, but as it may or may not be free it doesn't necessarily fall into any of the shareware cateogies (Crippleware, Demoware, etc.) Anyone know where I find information about this? Thanks! Ewlyahoocom 07:40, 8 April 2006 (UTC)
 * I'd say that a "lite" version of some software must be functional, and so could not be "crippleware". Similarly for "demoware", if the software has a limit on how long it can be used, I don't think that could be accurately called a "lite" version. In a particular usage, however, these terms may just be for marketting and be effectively meaningless beyond a statement that the software is somehow "less than" the full version. - Centrx 06:57, 24 May 2006 (UTC)

Hacker Ethic
The section on patents is dangerously short--it steps close to (and possibly crosses) the POV line due to its brevity. Its contents are overall fairly legit, but at a quick glance seem biased. It definitely needs to be expanded. 141.149.206.197 03:32, 17 June 2006 (UTC)

Recent edits, Jun 21 2006
Somebody made what appeared to be some very significant changes to the article, today. It didn't look like vandalism, but I'd like to encourage discussion before such serious changes are made. These diffs may prove helpful:, ,. Thanks for your time and efforts, and if you are the editor in question, you have my apologies for the intrusion. Thank you. Luna Santin 08:26, 21 June 2006 (UTC)

Origin of word
Our article on Intelligent Machines Research Corporation says that the word was coined by William Lawless, Jr. of IBM, not by Tukey. Which is right? --Heron 20:46, 11 July 2006 (UTC)


 * Neither appear to have sources confirming either coinage. The OED, 1989, only has its first quotation from 1960. If there is a good source for the earlier usage, then that one could be confirmed. —Centrx→talk &bull; 21:04, 11 July 2006 (UTC)

Identity of Purpose
The software governs the behavior the machine. The meaning and state of each bit in program memory is the link between the software and the hardware worlds. The medium on which the software resides can be any number of conceivable things: punch card; scantron; photograph; dipole matrix; brain; heterogeneous polymer. Just name it. If only I could explain the essence of code. The machine lives by the code and dies by the code. The program is the machine's way to providence.

-- LGWJ 17:34, 15 September 2006 (UTC) circa

Moved from article to here for discussion
This needs to be translated to comprehensible English before being returned to the article.


 * Software fundamentally is the unique image or representation of physical or material alignment that constitutes configuration to or functional identity of a machine, usually a computer. As a content of memory, software in principle can be changed without the adjustment to the static paradigm of the hardware thus without the remanufacturing thereof. Commonly software is of an algorithmic form which translates into being to a sequence of machine instructions. Some software, however, is of a relational form which translates into being the map of a realization network (see VHDL).

It's pretty extraneous and redundant with the second paragraph (which is not serving as the article's lead).  Th e Tr ans hu man ist  06:22, 16 November 2006 (UTC)

English
The English have had somewhat of a history of being intrinsic and in essence transhuman like cultures long gone or with great longevity. In an ideal world "comprehensible" and "abstract formal" would be one in the same. If comprehensible explanation is more marketable then it should perhaps be the best choice. I will try to bridge the gap between purity and comprehensibility later. On this, we can choose to work together or to work estranged, but not in contradiction.

ATTEST,

-- Lindberg [18:49, 1 December 2006; 13:49, 1 December 2006; 06:00, 2 December 2006 (UTC)]

Executive Measures
The choice of action regarding the removal of the "incomprehensible lead paragraph" was a rather preemptive, but the idea of a wiki is that readers have the option of being editors too. No one who makes a sensible contribution should have to ask for permission first, which is a respectable option if one so desires.

I am not sure if a problem was solved by the removal of this "incomprehensible lead paragraph." If one is not apt and not bold enough to perform correction, then one should consult prior to complete removal. I should assume that Th e Tr ans hu man ist, as a most active contributor to Wikipedia, did consult someone (an experienced professional and theorist perhaps).

-- Lindberg 06:47, 2 December 2006 (UTC)


 * Please reply to other posts by prefixing your comments with a single :. Please do not create unnecessary extra sections, as this is confusing to newcomers.—greenrd 12:40, 15 April 2007 (UTC)

Software monitor
what is a software monitor? —The preceding unsigned comment was added by 206.48.0.60 (talk • contribs).


 * Perhaps a software system monitor? Or perhaps a ROM monitor?
 * While Wikipedia mentions a ROM monitor in many articles ( http://en.wikipedia.org/wiki/Special:Search?search=rom+monitor&go=Go ), is there a specific article that discusses this topic? --68.0.124.33 (talk) 13:27, 8 October 2008 (UTC)

Proposed merge
I propose to merge this article with/into Computer program. There are many topics in each article that either should be, or are, covered in the other article. Therefore, I think these articles ought to be merged, to stop any further duplication of effort.—greenrd 12:40, 15 April 2007 (UTC)


 * This article is not particular well written and contains many incorrect assertions. I would propose simply redirecting this article to Computer program.  Derek farn 14:36, 15 April 2007 (UTC)


 * If redirecting is warranted, Software should be directed to the Software (disambiguation) page. Oicumayberight 20:03, 15 April 2007 (UTC)


 * See if my edits can help computer program survive. Computer programs are definitely computer software, and computer software are definitely computer programs. However, computer software is a collection of computer programs, but a computer program is not a collection of computer software. Timhowardriley 21:03, 18 April 2007 (UTC)


 * My bad; I thought I was in the "computer program" talk. My message remains the same, but think of it as a "computer program" talk subject. Timhowardriley 21:15, 18 April 2007 (UTC)


 * Well, let's remember that computer software is three things: programs, libraries (including components, classses, etc.) and their associated documentation. (Software documentation has its own article and there's no overlap problem between that article and these ones, so I'll not consider that any further). Actually, I think the amount of material currently in Computer program which is truly specific to programs, as opposed to material which applies both to programs and to libraries, would fit comfortably in one section of the Software article. Most of the material in Software is about software in general, so the Software article definitely should not become a redirect. But yes, clearly both articles need correcting and, in part, rewrites. So, I suggest merging Computer program into Computer software - please ignore my earlier, contrary opinion which I have just put lines through!—greenrd 22:59, 22 April 2007 (UTC)


 * Ada Lovelace is credited with writing the first computer program, not the first computer software. Timhowardriley 23:33, 22 April 2007 (UTC)


 * I'll grant you that - but I said there's one section worth of material actually on programs, not that there's no material. Clearly there is some material. That's not disputed.—greenrd 23:38, 22 April 2007 (UTC)


 * Cut and pasted from computer program talk:
 * If merged, which article would go away? Timhowardriley 19:03, 22 April 2007 (UTC)
 * Let's keep the discussion on the proposed merge in one place, please.—greenrd 22:11, 22 April 2007 (UTC)
 * I previously linked an article that read in part, "bla,bla,bla is a computer program that ..." It would sound awkward if it read, "bla,bla,bla is a computer software that ..." Timhowardriley 23:05, 22 April 2007 (UTC)
 * We deal with problems like that all the time, by using piped links and/or redirects. There would be a redirect created anyway after the merge, so it would be fine as it is.—greenrd 23:36, 22 April 2007 (UTC)


 * I disagree with the proposed murge. computer software and computer programs are not mutually inclusive, neither are they mutually exclusive.  They are neither simular nor are they they same.  They require seperate definitions.   For example one form of system software take windowws as an example, this contains graphical eliments and sound files.  (eg a file on a desktop or the windows big ding on boot up).  None of these two data files, both contained within system software could ever be described as a Computer program.  Another example for reason for me to disagree is a firmware as example of this is a bios chip that contains programs and may contain computer data such as a graphic file logo or something as well as computer programs.  However it is not software, it is firmware, which by definition can not be changed on the fly and should require user or administrivte intervention to change the computer program or code. To merge these two topics will introduce ambiguation where there should be none.  Martrn 08:27, 18 May 2007 (UTC)


 * I fully agree that they are not the same thing; however, a computer program is a type of computer software, so it could be a section in the computer software article, and links which previously pointed to the computer program article could be changed to point to that new section. Sorry I didn't make that clear in my original proposal.—greenrd 10:38, 18 May 2007 (UTC)
 * What about Microcode. I belive micro-op-code or Microcode is low level program or a microprogram hardwired into many of todays CPU's to simulate earlier versions of processors and use a lower transistor count.  It is not software. Software is changable/re-programmable/patchable.  Microcode is a mico-computer program but it is not like software.  The merging of software and computer programs feels like re-writing computer history a bit. In the 80's software was defined on occasion as computer programs and its assositated data stored on a floppy. (I am serious). What about punch cards.  See Computer programming in the punch card era, where punch card's were not considered software, but they were considered computer programs.  Because merging to these two topics, I fear we are introducing ambiguation where there need be none.
 * Software does not have to be patchable. The BIOS on the first IBM PC was stored in plain old ROM, and therefore could not be updated without upgrading the hardware, but the BIOS has always been considered to be software, as far as I know. Programs and their associated data stored on a floppy - not a problem. As for punch cards, they are a medium for storing software on; the fact that software may have been defined differently decades ago is not really to the point - the point is, are programs on punched cards considered to be software under today's definition? As far as I know the answer is yes.—greenrd 15:15, 18 May 2007 (UTC)
 * Against merge. I think the Computer program article can be populated with quality information, including historical information about programming, a treatment of the different programming paradigms, a discussion of the layers of abstraction used in modern programming, etc.  There's a lot more information that can be added to make it a much better article.  If Dr. Knuth wrote a few thousand pages on it, I'm sure we can come up with one article's worth of quality information. SqlPac 04:27, 22 May 2007 (UTC)
 * Topics like programming paradigms are not specific to programs - they also apply to libraries as well. Are we going to duplicate such coverage in both articles? This is exactly the sort of problem I was getting at.—greenrd 10:08, 22 May 2007 (UTC)
 * No, we are going to discuss computer programs of which the various forms of software are a subset. If you take a look at it now, the intro. has been re-worked using TAOCP as a guide, and we now have a formal definition of program.  I think we can make the Computer program article a good quality stand-alone article.  It's already sourced almost as well as this article (2 references vs. 3 references), and that will also change very shortly.  I still vote to give it some time, and I am against merge at this time.  You might want to consider merging this article into Computer program instead of vice versa.  It would make more sense.  BTW, libraries have their own paradigms to worry about, such as statically-linked libraries, DLLs, etc.  So I'm not overly concerned about the overlap as long as the article stays in its lane.  SqlPac 01:59, 23 May 2007 (UTC)


 * Merge. For no other reason than because they're the same thing. It is impossible to write a single defining sentence which does not rely heavily upon a definition of the other to make sense. That software is technically a superset is a technicality. That we could theoretically write an article on a narrow, mathematical definition of "program" does not mean that this is necessarily a good idea (or indeed that it couldn't be a subset of this article anyway). I'm planning to start work on this, which first of all means eliminating the incestuous redundancy between the two articles. Chris Cunningham 10:59, 13 June 2007 (UTC)


 * No, Do Not Merge.I do not think http://en.wikipedia.org/wiki/Software need to be merged with Computer Programme. Today Software is a more popular and known term then computer programme. —The preceding unsigned comment was added by 59.144.167.99 (talk • contribs) 11:26, 18 Jun 2007 (UTC)


 * *It should be merged, programs are basically software so theres no point in making wikipedia more confusing. Just merge it..-Glacerio


 * “Software” and “Program”, these two terms are always confused even by the experts in the subject field. This confusion causes further problems for example in the field of intellectual property, trade or licensing. In stead of merging these two terms we, in Wikipedia, should emphasize that these terms are different from each other and clearly point out the differences.SamirD


 * Against merge - between microcode (i.e. low level firmware burned onto the die of the CPU to define opcodes and simulate other chips), somewhat higher level firmware in ROM or EPROM on a main logic board (or in a user-replaceable plug in cartridge as once was common), and issues of "software" vs. "program", this is a bad idea. Far better: fix what we've already got.


 * FWIW, Programming paradigm already has its own article, as does Computer programming.


 * My personal and professional experience with computing goes all the way back to the days when programming was done using fancy wires and plug-boards (yikes! thank God we outgrew that!), punch cards for data, discrete transistor flip-flops for DRAM and magnetic core memory, the precursor to NVRAM. (That gargantuan machine barely exceeded the power of the basic 4 function  calculator, routinely given away to school children these days, coupled with a heart-stopping electric bill.)  Programming, debugging, and reverse engineering in raw machine code (Motorola's 6800-series chip sets) was a blessed improvemnet.  (One of my all-time favorite tools was the EPROM burner.)  Every time I look back, I am astonished by our progress and how easy it is now!  I feel I am qualified to say merging is a bad idea.


 * Badly Bradley 22:36, 30 July 2007 (UTC)


 * No Merge: a computer program "is a set of instructions that controls the operation of a computer" (it can be three lines of code); computer software is "a collection of programs and procedures for making a computer perform a specific task" (that mediate the application). Source: Barnes & Noble's 2005 Essential Dictionary of Science. That makes eight for no merge.  Will close this now. --Sadi Carnot 16:59, 16 September 2007 (UTC)

Perhaps a stand-alone article?
Perhaps, rather than merging, we could take software to be something higher up the hierarchy than computer programs. Something along the lines of: "Computer software consists of computer programs, libraries, configuration and data files, and their associated documentation."

I know I suggested simply redirecting this page in an earlier thread. I can almost see myself being willing to go along either direction.

The hardware/software discussion completely misses the point and should be relegated to a subsubsection or a footnote. Derek farn 01:22, 23 April 2007 (UTC)

Against Merger Completely different things John Cameron 10:07 (PST) —The preceding unsigned comment was added by 189.173.48.228 (talk • contribs) 05:07, 14 Aug 2007 (UTC)

Softography
Redirects here, but there really isn't any obvious discussion of this term... Since I was simply trying to learn what it meant specifically, I'm left in the same posisition as before coming to this page. Crocadillion 18:46, 7 May 2007 (UTC)

Differences of Software and Programs
On a paper entitled "Uncovering the epistemological and ontological assumptions of software designers" (2004), David King a Research Student at the University of York discusses the object-oriented and formal design method of successful (and unsuccessful) software design projects. www.cs.york.ac.uk/mis/docs/AIM15.pdf He describes how recent work in software design has often lost sight of the original foundations leading to a blurring of the distinction between the term’s ‘software’ and ‘programs’. In his paper, he characterise-es the term's and distinctions and the reasons why the differences are important when designing programs or software. I think the distinctions are important also. Martrn 00:19, 20 May 2007 (UTC)

Noted Vandalism
Just to point out I have found some vandalism in the article. We might want to lock editing for a few days. (suggestion) September 6, 2007 6:44 PM (Eastern)

hey joe —Preceding unsigned comment added by 170.177.24.11 (talk) 16:37, 15 October 2007 (UTC)


 * Same here. I think this should be semi-protected Adam Hillman (talk) 10:46, 16 October 2008 (UTC)

Definition of "SOFTWARE"
Unfortunately, the majority of literature uses the terms "software" and "program" as synonyms!!! But, the term "SOFTware" (by itself) connotes that it is the COMPLEMENT of "HARDware". All agree what hardware is. Then "software" is "anything, PART of a computer, that is NOT hardware, i.e. the programs AND the data a computer processes and produces". With this definition, we can avoid the contradiction in such often used statements that "a computer is comprised of hardware and software". Here, if we mean software = program, then an image which is neither hardware nor program, is NOT part of a computer. -- Kaseluris, Nikos 18:35, 3 December 2007 (UTC)


 * WHAT is your "point"? What CHANGE to this article ARE you proposing? --Gronky (talk) 20:45, 14 April 2008 (UTC)

I think Nikos would like to say that everything inside a computer is either hardware or software. Since a web page is inside a computer, but it is not hardware, then a web page must be software. And so I think Nikos would like to revert this edit: "a web page is not software".

Given that computer programs are one kind of software, what are the other kinds of software? Is a web page a kind of non-program software? --68.0.124.33 (talk) 14:31, 8 October 2008 (UTC)


 * Generally speaking, a webpage is data. 216.239.234.196 (talk) 18:29, 6 January 2009 (UTC)

GhostRiderX990 - Software definition
- Software is a general term for the various kinds of programs used to operate computers and related devices. (The term hardware describes the physical aspects of computers and related devices.) Software can be thought of as the variable part of a computer and hardware the invariable part. Software is often divided into application software (programs that do work users are directly interested in) and system software (which includes operating systems and any program that supports application software). The term middleware is sometimes used to describe programming that mediates between application and system software or between two different kinds of application software (for example, sending a remote work request from an application in a computer that has one kind of operating system to an application in a computer with a different operating system).

An additional and difficult-to-classify category of software is the utility, which is a small useful program with limited capability. Some utilities come with operating systems. Like applications, utilities tend to be separately installable and capable of being used independently from the rest of the operating system. By; Michael D-5 —Preceding unsigned comment added by 125.60.241.19 (talk) 03:42, 23 July 2008 (UTC)

Category:Software by country
I think such a category is needed and missing from Category:Software. Thoughts? --Piotr Konieczny aka Prokonsul Piotrus 23:37, 25 October 2009 (UTC)

A mild modification needed
Once a user searches for software, it redirects to computer software. But today, software pertains to computers as well as PDAs, Mobiles, Electronics, etc. Having the entire topic be based on just computer software is just not right. I had made a separate section for software for the very purpose hoping that would happen, but it was reverted. I propose that a separate page be created defining what a software is and the remaining be made as sub classifications. It would then be much more well organised as well as informative.


 * Well those things have computers in them too, so I do not see the distinction. It is the computer in the device that runs the software. We should mention consumer electronics as having more and more software though, and "Apps" as being the slang for application software. W Nowicki (talk) 00:32, 6 June 2010 (UTC)

"Bottomless Data Compression"
I have finished my program that will compress forever without error. "Bottomless Data Compression" or "Infinity to one" compression, so to speak. Who do I demonstrate this to so that I may be sourced here without loss of the intellectual property rights? —Preceding unsigned comment added by 71.114.2.163 (talk) 17:35, 10 February 2011 (UTC)
 * May I suggest that you first look at Lossless data compression, in particular the section on 'Limitations', which contains a claim (with reference) that such "infinity to one" compression is impossible. Murray Langton (talk) 22:23, 10 February 2011 (UTC)


 * I have been running this "program" for several weeks now and not one bit is off. It is not your typical data compressor. It is more a function of the mechanical distribution of random binary than typical software manipulation. Data does not equal mass. It will simply compress any form of binary data presented, including its own output. It will compress the most randomized binary possible even in its "native random state" not just patterned data output from typical computers. I've worked on it for over thirty years and this was my 283rd try, all the others did fail, eventually but not this one. —Preceding unsigned comment added by 71.114.2.163 (talk) 23:23, 10 February 2011 (UTC)
 * The limitations described at your article specify "Lossless data compression algorithms cannot guarantee compression for all input data sets." This compressor, indeed may be presented certain types of data that it may not compress on the first pass but will on the second or third after the change of the compression function, inherent in the program occurs.

fa:نرم افزار کامپیوتر — Preceding unsigned comment added by 31.56.40.230 (talk) 06:46, 6 July 2011 (UTC)

Ah, compressing by a factor of infinity is easy. Just take all the data in and produce none in return (for example, crash). I have written some programs like that, as I suppose every early student in computer science. The hard part is getting the data back out! Does make a good joke, and might mention if there is a source. W Nowicki (talk) 17:40, 6 July 2011 (UTC)

Merge
I propose to merge this article into Software. They are the same stuff.--Kittyhawk2 (talk) 01:12, 10 January 2009 (UTC)
 * Look like it was done around January 27, 2009.

Has the merge been undone? I don't understand why the article is called 'computer software' Can there be any other kind of software important enough to require the word 'computer' added to 'software' in the title? It seems nonsense to me. If no one oposes in a reasonable time, I will transfer this article to software, and redirect 'computer software' to software. --Jasón (talk) 02:37, 29 December 2011 (UTC)
 * Hi Jasón, since software is currently a redirect to this article, this will be a move. But article software has a revision history, so you will need help from an administrator to do this move (including his talk page). I suggest to use the procedure for requesting controversial and potentially controversial moves to get first feedback from a broader audience. More info can be found in Requested moves. Thanks, SchreyP (messages) 08:10, 29 December 2011 (UTC)

Requested move: Computer software → Software

 * The following discussion is an archived discussion of a requested move. Please do not modify it. Subsequent comments should be made in a new section on the talk page. No further edits should be made to this section. 

The result of the move request was: moved to Software. Favonian (talk) 18:41, 5 January 2012 (UTC)

Computer software → Software – Is there any other kind of software important enough to require the word 'computer' added to 'software' in the article's title? (I don't thing that clothing qualifies). As already mentioned in this talk page, software requires a computer to run, so there is no need to explicitly mention it. But most important of all, nobody talks about 'computer software' but rather about 'software'. The current name seems quite awkward and unjustified to me. Am I missing any rationale for NOT changing it? Thanks. Jasón (talk) 14:53, 29 December 2011 (UTC)


 * Support I also don't see directly a reason why software should be prefixed by computer. -- SchreyP (messages) 16:07, 29 December 2011 (UTC)
 * Comment it depends on how restrictive a term this is. Does Microcode, Firmware, FPGA coding, etc count as software or not... 76.65.128.132 (talk) 08:09, 30 December 2011 (UTC)
 * Support. This top-level article can easily address related topics like firmware and microcode in a section, and calling it computer software wouldn't segregate it from those anyway. Among the other uses of software it's obviously the primary topic. I ordinarily don't cite category titles in mainspace move discussions (because category titles are usually based on articles, not vice versa) but I'll point out that has been so named since 2004, despite the general use of unambiguous titles in that namespace. – Pnm (talk) 21:03, 30 December 2011 (UTC)
 * Support Unnecessary disambiguation. —Ruud 23:34, 1 January 2012 (UTC)
 * Support. Possibly the oldest unnecessary disambiguation in the encyclopedia.  Powers T 01:57, 3 January 2012 (UTC)
 * The above discussion is preserved as an archive of a requested move. Please do not modify it. Subsequent comments should be made in a new section on this talk page. No further edits should be made to this section.

History section
The history section is totally unsourced, redundant, and contains factual errors. Not sure if we should just remove it for now. W Nowicki (talk) 19:09, 5 June 2010 (UTC)

From my point of view this section is very poor, specially if compared to the articles about the history of free and open-source software and the history of computing hardware. In logic terms, free and open-source software are a subset of software, and there should be a full article on software history which also included the history of free and open-source SW. Unfortunately I'm not an expert to carry out the task, but I'm sure there is enough expertise out there.--Jasón (talk) 18:51, 27 December 2011 (UTC)

I agree, the history section seems totally wrong. It seems to claim that software was only available from OEMs until the advent of the PC. However, I believe games were available for the AppleII and similar, and programs like Unix and Emacs pre-date the IBM PC (just checked!)  My prof says he used a package such as SPSS or something on the mainframes, and it was sold by the software vendor, not the OEM. — Preceding unsigned comment added by Snydersware (talk • contribs) 19:15, 22 April 2012 (UTC)

Non-Encyclopedic Phrase
The article reads:

"It is hard to imagine today that people once felt that software was worthless without a machine."

This may be true for some people -- but equally, it maybe be untrue for other people. In any case, the phrase "hard to imagine" is highly subjective and un-encyclopedic, and should be re-written or removed.

Karl gregory jones (talk) 20:38, 13 December 2011 (UTC)


 * I concur it should be removed, although for the much simpler reason that it sounds puerile. --Coolcaesar (talk) 08:53, 16 December 2011 (UTC)

✅ --M4gnum0n (talk) 10:22, 12 June 2012 (UTC)

Significant rewriting and restructing underway
This article was really bad and read like a mismash of several different textbooks, some from the 1990s - the lead was too long, certain statements were outdated or simply wrong, and there was an amazing amount of repetition, the like of which I've never seen anywhere else on Wikipedia. I am presently rewriting and reworking parts of the article.--greenrd (talk) 18:22, 21 September 2013 (UTC)

Software Topics
Might I suggest a "Theory" subcategory under software topics? Software has now evolved to exist as a part of technology that is currently being studied in-depth by academics. Wendy Chun's "On Software, or the Persistence of Visual Knowledge" is one such example. She writes, "Software perpetuates certain notions of seeing as knowing, of reading and readaibility that were supposed to have faded with the waning of indexicality. It does so by mimicking both ideology and ideology critique, by conflating executable with execution, program with process, order with action." Another work of hers, "Invisibly Visible, Visibly Invisible", is also of note. Taylor Bohl (talk) 18:53, 7 March 2013 (UTC)
 * You clearly don't know much about the study of software, otherwise you'd know that there are at least two fields that would better come under "Theory" - computer science and software engineering. And I'm afraid I think this is a clear case where your proposed material for inclusion is so obscure in the context of the overall topic that it should not be covered in this article at all. There is precedent for this view.--greenrd (talk) 20:46, 21 September 2013 (UTC)

Definition of software
I see that a previous merge request for this article with Computer program was rejected. However the article starts out by saying that software is also known as computer programs, and the computer program article does the same in reverse. If they are the same, then the articles should be merged, and if they are not the same, then the articles shouldn't say that they are. It seems to me that the difference is that software includes libraries, which aren't programs because they don't have a single entry point. However other files types such as documentation files and audio files, are not computer software, even if they are shipped as part of an operating system. Horatio (talk) 10:44, 20 May 2014 (UTC)

According to the definition of software in the article, "ANY set of machine readable instructions that directs a computer's processor to perform specific operations" qualifies as software. This would make computer programs a subset of software, only if they direct the processor of a computer to perform specific operations. According to the definition, documentation files, audio files, as well as computer programs can only be considered as software if they direct a computer's processor to perform specific operations. However, if they don't direct a computer's processor to perform specific operations, the set of machine readable instructions is not software. This means, according to the definition, that a compact disc that contains binary values in a machine readable format, that thanks to our pervasive von neumann architecture, can be considered to be software when it actually directs the cpu. It is important to keep in mind that software can exist in these types of binary blobs, and that these binary blobs can be positioned to direct the cpu to operate according to the instructions provided. If we fail to keep in mind that a specially crafted data file can exploit a buffer overflow in the code that handles the data, causing what we normally think of as data to become instructions, we will find ourselves rooted by those who do keep this in mind. — Preceding unsigned comment added by 23.126.215.162 (talk) 10:29, 23 January 2015 (UTC)

Section on "three layers of software" taken from "Information Technology in Business", by Amir Manzoor
I just noticed that a large section of this page is a direct rewrite of a passage from the book "Information Technology in Business", by Amir Manzoor. The section on the "three layers of software" (platform, application and user-written software) is basically this text: https://books.google.co.uk/books?id=b5x_NHo5g2oC&pg=PA144&lpg=PA144&dq=%22three+layers%22+of+%22user+software%22&source=bl&ots=rc7NCLACoS&sig=S6OluKj4eERI6sh4Ybkosol806U&hl=en&sa=X&ei=NxPBVL39IYOL7Abo7IGIAQ&ved=0CDAQ6AEwAg#v=onepage&q=%22three%20layers%22%20of%20%22user%20software%22&f=false

This section specifically:

"User-Centric Software Classification-Layered Approach

People using modem general-purpose computers see computer software differently than a computer programmer. For them, the computer software can be divided into three layers each performing a variety of tasks. 'Fhese three layers are platform, application, and user software.

Platform Software This software allows a user to interact with the computer and its peripherals. Platform software includes firmware, device drivers, and operating system.

Application Software When a common user thinks of the software, it is generally the application software. Application software is independent programs from the operating system. Typical examples of application software are office suites and video games. Application software is generally purchased separately from the computer hardware, but they may be bundled with the computer.

USER-WRITTEN SOFTWARE User-written software is created by users and caters to the specific requirements from the users. Examples of user-written software are spreadsheet templates, word processor macros, scientific simulations, and scripts for graphics and animations."

I am new to Wikipedia, so please be gentle. Shouldn’t this be mentioned in the "References" section? I wanted to do it myself, but don't know how yet. Michael Beijer (talk) 15:25, 22 January 2015 (UTC)

Evaluation on the Wikipedia page of Software. 1.There should be more citations included so as to help provide verification and enhance the reliability of the article, so that it can be more widely used among Wikipedia users. 2. There are footnotes included that are accurate and it brings the user to the relevant pages if the users require more information on what Wikipedia has provided them with. 3. References are included and this increases credibility of the information posted in the article.

Evaluation done by Ai Wey and Jass for AB1401. — Preceding unsigned comment added by Jasslimhuimin (talk • contribs) 11:15, 25 March 2015 (UTC)

Software Management?
Why isn't "Software Management" even mentioned in this article? --Alien4 (talk) 16:59, 18 February 2013 (UTC)
 * Added link to Software asset management, although it might not be completely the same. --Alien4 (talk) 09:30, 10 September 2015 (UTC)

Semi-protected edit request on 23 May 2019
Software is a set of instructions, data or programs used to operate computers and execute specific tasks. Rshaik1993 (talk) 16:33, 23 May 2019 (UTC)
 * Is this a suggestion for changing the introductory sentence? The current introduction seems more clear. – Þjarkur (talk) 16:50, 23 May 2019 (UTC)

Root
Kakaka Lipakmu (talk) 17:59, 27 May 2019 (UTC)

Nomination of Portal:Software for deletion
A discussion is taking place as to whether Portal:Software is suitable for inclusion in Wikipedia according to Wikipedia's policies and guidelines or whether it should be deleted.

The page will be discussed at Wikipedia:Miscellany for deletion/Portal:Software until a consensus is reached, and anyone is welcome to contribute to the discussion. The nomination will explain the policies and guidelines which are of concern. The discussion focuses on high-quality evidence and our policies and guidelines.

Users may edit the page during the discussion, including to improve the page to address concerns raised in the discussion. However, do not remove the deletion notice from the top of the page. North America1000 07:05, 17 August 2019 (UTC)

Semi-protected edit request on 17 February 2020
In design and implementation, change: "Computer software has special economic characteristics that make its design, creation, and distribution different from most other economic goods." to "Like entertainment media that can be transmitted digitally, computer software has special economic characteristics that make its design, creation, and distribution different from most other economic goods. The cost to reproduce is near zero and the cost to create is high, making piracy a serious concern"

In Industry and organizations add the following at the end: Many professional societies have and continue to play a major role in the software industry. Two of the most influential are The Association for Computing Machinery (ACM) and the Institute of Electrical and Electronics Engineering (IEEE) Computer Society which jointly sponsor many world-wide widely attended annual professional conferences. Rich Cohen (Software Eng.) (talk) 04:33, 17 February 2020 (UTC)
 * Red information icon with gradient background.svg Not done for now: please establish a consensus for this alteration before using the template. -  FlightTime  ( open channel ) 04:36, 17 February 2020 (UTC)

What is Software?
Software is a set of programs, which is designed to perform a well-defined function. A program is a sequence of instructions written to solve a particular problem.

There are two types of software −

System Software Application Software — Preceding unsigned comment added by 182.74.210.154 (talk) 03:41, 11 February 2020 (UTC)

JavaScript scripts should be changed to client side scripts — Preceding unsigned comment added by JohnySoko (talk • contribs) 03:59, 26 February 2020 (UTC)

Semi-protected edit request on 11 November 2021
A software is set of programs running as a process on a platform (like OS, often called PaaS in cloud) supported by hardware infrastructure (physical machine, called IaaS in cloud terms). 122.162.29.41 (talk) 12:28, 11 November 2021 (UTC)
 * Red question icon with gradient background.svg Not done: it's not clear what changes you want to be made. Please mention the specific changes in a "change X to Y" format and provide a reliable source if appropriate. ScottishFinnishRadish (talk) 12:33, 11 November 2021 (UTC)

Lots of missing citations.
This page has so many missing citations, and I don't know which sources those parts of the article came from. Can you please add more citations? If not, then this article could be deleted through an RFD request. PortalPuppy31 (talk) 18:29, 25 January 2022 (UTC)
 * I recommend it be redirected to computer program. Timhowardriley (talk) 19:46, 25 January 2022 (UTC)

Typo ("executionpammi")
The "Execution" heading was changed to "Executionpammi" on Jan 25. Presume this is a typo. Noumenon72 (talk) 21:06, 7 February 2022 (UTC)

Wiki Education assignment: Research Process and Methodology - FA22 - Sect 201 - Thu
— Assignment last updated by Kathyljy (talk) 08:19, 10 November 2022 (UTC)

Encompassing learned algorithms
Is there a term that refers to a union of programming languages and artificial neural networks? Wesxdz (talk) 22:38, 24 August 2023 (UTC)

Distinction between Software and Computer Program?
I feel that the current definition of Software ("a collection of instructions that tell a computer how to work") is a little too similar to that of a Mobile program ("a sequence/set of instructions"). There does seem to be a bit of similarity between the two terms. I've looked at dictionary definitions and the ambiguity left by the definitions I've looked at makes it unclear how either of the terms can be distinguished from each other. Can something be done about this?

The best definition I could find is this: http://www.openprojects.org/software-definition.htm. After reading that, to me it seems like software is used to refer to programs in a much broader sense.

What I take away from this is that, I could classify my browser Firefox as a piece of software, in a broad sense. Specifically, my browser Firefox is located in, that is the location of the program. Firefox spawns a bunch of instances of this program that run in parallel, each called a process. I suppose in this case, the software does not refer to just, it refers to all the programs that come with it (other executables invoked internally like the  , as well as other shared object (aka DLL) files).

If what I just said is in fact correct, I don't think the current definition does a good enough job in communicating what software actually is.

Am I onto something?

ZaidhaanH (talk) 14:07, 18 January 2022 (UTC)


 * Software are Computer Programs are the same thing. The word "Software" just has fewer syllables. Timhowardriley (talk) 18:01, 18 January 2022 (UTC)
 * Mostly the same thing. Software is more inclusive. A single piece of 'software' might consist of multiple programs and possibly data as well. But a single program is also software. MrOllie (talk) 18:17, 18 January 2022 (UTC)
 * To be semantic, I would say software is the plural of computer program, but with fewer syllables. Timhowardriley (talk) 18:55, 18 January 2022 (UTC)
 * To say software includes data is forcing a distinction. Timhowardriley (talk) 19:02, 18 January 2022 (UTC)
 * Yeah, I think I agree with you and MrOllie, . I don't intend to get ahead of myself and try to emphasize this more in the article. But I do think it's interesting how both the software and computer program articles (particularly the lead section) are so similar. Maybe this ambiguity is just something we'll have to deal with. It's not too bad though, I do recognize that the computer program article mentions some of the more nitty gritty details of a singular program (ie. languages, cohesion/coupling, even code examples), whereas the software article mentions much broader things (ie. quality, reliability, patents). However, quite annoyingly there is a bit of overlap too (sw: types#application software <-> prog: functional categories#application software). Oh well! My programmer brain is telling me some decoupling needs to be done but maybe things are okay just the way they are. ZaidhaanH (talk) 19:24, 18 January 2022 (UTC)
 * If I can find a decent reference that mentions this then I might scratch that itch of mine and clarify the ambiguity somewhere in this article. ZaidhaanH (talk) 19:34, 18 January 2022 (UTC)
 * I've added citations to IEEE, ISO/IEC supporting your interpretation. fgnievinski (talk) 00:10, 26 May 2022 (UTC)
 * I added the quote defining software from the ISO source into the citation. It's probably semantically correct to define software as more than just the code. But the ISO definition doesn't say software includes data. Well, if you're going to include other intangible elements, you'd might as well include the data. I removed the IEEE citation because it's probably behind a paywall. If the IEEE citation says software includes data, then please add back that citation and include the quote from the source. Nonetheless, saying documentation and data are also software might be semantic, but it's not colloquial. Timhowardriley (talk) 06:56, 27 May 2022 (UTC)


 * The distinction between software and computer program is the same distinction between car and automobile. Timhowardriley (talk) 10:21, 21 January 2022 (UTC)
 * At first I was going to advocate for the distinction between a piece of software and a computer program, but as I typed I realized they are semantically identical. It seems that the saving grace is that software is bundled with data and documentation (which you can argue that programs are as well), but saying that programs (and apps/applications) are bundled with them makes just as much sense. I don't think there is a gap in the understanding.
 * There is too much in common between the two, and one should redirect to the other, unless there is a source of absolute authority that merits two articles for the same thing. Fuser55 (talk) 04:33, 25 February 2023 (UTC)

Request to add citations
I propose to add two citations to the section:

Desktop applications such as web browsers and Microsoft Office and LibreOffice and WordPerfect, as well as smartphone and tablet applications (called "apps").[citation needed]

https://www.pcmag.com/encyclopedia/term/desktop-application

https://www.computerlanguage.com/results.php?definition=desktop+application Mcscroogeduck (talk) 16:20, 27 March 2024 (UTC)