Tek-Tips is the largest IT community on the Internet today!

Members share and learn making Tek-Tips Forums the best source of peer-reviewed technical information on the Internet!

  • Congratulations strongm on being selected by the Tek-Tips community for having the most helpful posts in the forums last week. Way to Go!

Exactly what is "software"? 5

Status
Not open for further replies.

petey

Programmer
Mar 25, 2001
383
US
This may sound like a no-brainer at first, but there seems to be a bit of confusion out there regarding the notion of what software is, and I've never heard anybody give a definitive answer.

Specifically:
How do we differentiate between what we call 'software' and what we call 'content'? Is there a need to differentiate?

Let me elaborate: Traditionally we think of software as being a chunk of code that processes information (content). MS Word and .doc files are a classic example. MS Word is the software, doc files are the content. Life is simple.

The web seems to have modified our definitions, though, by blending the two concepts. HTML was introduced as a format for content, but the 'L' in HTML helped propagate the notion that it was a programming language. Embedded JavaScript on web pages helped blur the distinction. Finally, technologies like JSP/ASP/PHP put content and software in a blender together and touched 'smoothie'. Life is complicated.

All of that to say this: Nowdays we have a largely fragmented and mixed-up set of expectations and opinions regarding the roles of software engineers and content designers. (managers love to capitalize on this ambiguity) On one end of the spectrum are hardcore application programmers writing apps in languages like C and C++. On the other end are "webmasters" who publish web pages with HTML, graphics and various scripting languages. The former tends to draw a sharp distinction between software and content, sneering on those who would call HTML a 'language', the latter usually adopts the more inclusive view where the entire website is considered a software application, HTML and all.

So can I write an essay and cover it under the GNU license? Can my Java code be considered artistic? Can there be open-source novels, or albums, or record labels?

It'd be cool to hear everybody's thoughts on this stuff.

Petey
 
First of all, I'm not sure that I agree with you that HTML and other web languages have blurred the distinction between software and content. As stated, "Traditionally we think of software as being a chunk of code that processes information (content)..." I'm not sure that HTML is any different. For Example, consider the following:

<TABLE> ' Essestially a Function Call to &quot;TABLE&quot;
Now comes to argument to the TABLE function
<TR> ' Essentially a Function Call to &quot;TABLEROW&quot;
<TD> ' Function Call to TABLEDATA&quot;
something here ' Content (argument to TABLEDATA)
</TD> ' Return from TABLEROW Function
<TD> ' Call TABLEROW
something else ' The Content
</TD> ' Return from TABLEDATE
</TR> ' Return from TABLEROW
</TABLE> ' Return from TABLE

What I'm saying is that HTML tags are essentially function calls, and everything that falls between the Open Tag and Close Tag, are the &quot;arguements&quot; to that function. Some of those arguments are function calls themselves which too have their own arguements. And some of the arguements are simply content - in some cases, literal constants, and in others, derived, or database obtained values. That is not really any different from a traditional program, which has functions where one or more of its arguements, are other function calls, and or specific content (data).

And as the page is interpreted, no differently than a basic program was interpreted years ago, the functions are evaluated, against and with the desired content, and an output is produced. No different that a Word program evaluating the control codes, formatting codes, etc, applying to the words, and producing a formatted document.

And I disagree that JSP/ASP/PHP have further blurred this distinction, but rather have made it easier to distinguish between code and content. For starters, these languages have built-in functions with arguements, and support for some types of data structures. These languages have made it easier to distinguish code from content, thus allowing for the development of dynamic web pages. For the most part, its the content that is dynamic, not the code.

Yes you can write code that produces code, but you've always been able to do that in traditional programming languages. Even that does not blur the distinguish the content and code. The &quot;middle layer&quot; can be the content to the high level code, and is the code for its own content. Just as a node in a tree can be a child to the node above it, and parent to the nodes below it.

If you have web developers who have trouble grasping this concepts, then I suggest that they take a good hard look at what is going on - get an understanding of the concepts behind these technologies, and I think you'll find that its not difficult at all to distinguish between code and content. If you have managers that capitalize on this &quot;ambiguity&quot;, then its because they too do not understand the concepts. They need to be &quot;trained.&quot;

So can I write an essay and cover it under the GNU license? I don't see why not.

Can my Java code be considered artistic? Sure, just as traditional source code is considered artistic.

Can there be open-source novels, or albums, or record labels? One of the basic foundations, at least as I understand it, is that the open source movement allows us to share some basic building blocks, which we can then take and expound upon, and grow to our specifics needs. Provided that we give proper credit. So if you publish a novel, under GNU, then I can take that story, add a few chapters and a sub-plot or two, and publish my new version. Or add a verse to one of your songs and recut the song on a new album. If follow all the same GNU rules - and provide all the proper credits, then why not. Good Luck
--------------
As a circle of light increases so does the circumference of darkness around it. - Albert Einstein
 
To add a little to CajunCenturion's post....

The &quot;L&quot; in &quot;HTML&quot; does stand for &quot;language&quot;. In this context, &quot;language&quot; doesn't mean what most people think it means. In this context a language, to quote Merriam-Webster, is &quot;a formal system of signs and symbols (as FORTRAN or a calculus in logic) including rules for the formation and transformation of admissible expressions&quot;. This definition includes HTML, XML, SOAP, and TCP/IP. And it includes, VB, C, perl, and PHP. But it also includes symbolic logic, algebra, calculus, and musical notation.

We're talking about formal systems, here. Software, building on this, is a set of well-formed expressions in a formal system for which the means exists to translate the expressions into an action. Take musical notation. The paper which is the sheet music for &quot;Rhapsody in Blue&quot; is the storage medium; the notes on that paper, in musical notation, is the software; the peformers are the interpreter; and a performance is a single execution of the program.

A good beginning book on the subject of formal systems is Gödel, Escher, Back, an Eternal Golden Braid, by Douglas R. Hofstadter ______________________________________________________________________
Never forget that we are
made of the stuff of stars
 
Software is what's left when you delete the hardware. &quot;A little knowledge is a dangerous thing.....&quot; [morning]
 
nobrain - And where does that leave the data, or do you consider data to be software also??? Good Luck
--------------
As a circle of light increases so does the circumference of darkness around it. - Albert Einstein
 
I've worked with large computerized telephone switches since 1970. Our generic programs (operating systems) and translations/parameters (data) were the software. The nuts and bolts that are left is the hardware. The PC world seems to have gotten away from that simplistic approach, but it worked for us old telecom salts all those years. &quot;A little knowledge is a dangerous thing.....&quot; [morning]
 
If it has zeroes and ones it is software. &quot;A little knowledge is a dangerous thing.....&quot; [morning]
 
As a departing hotel manager, I was involved in assisting the hotel's lawyers in drafting an agreement for the new management company entering the hotel.

The desire of the hotel's owner association was to make sure that if the Management company up and left - they would not be able to delete the content - but still allow them the reign to make changes (keep it fresh, up to date, etc.)

The manner in which the legal document was worded was that all creative content, including graphics, pictures, text, formatting, etc (went on to include html, asp, javascript code) was the ownership of the hotel's condominium association.

&quot;Damn the torpedoes, full speed ahead!&quot;

-Adm. James Farragut

Stuart
 
That's because, at least in the old days, telecomm's computers were special-purpose. With a special-purpose computer, any dichotomy between software and data lies anywhere from vague to non-existent.

In any regard, nobrain, you've forgotten one component of your system. The digital stream that is the phone call itself. That is the data the switches process. ______________________________________________________________________
Never forget that we are
made of the stuff of stars
 
Well, for most of my career this data stream was mostly analog, except where it was converted to carrier. AT&T only manufactured analog switches. Bell of Canada (Northern Electric/Nortel) made digital switches. From 1984 AT&T started with the the digital 5ESS switch. Once these telephone calls are stored in memory they become software.
Relative to any computer on earth, no matter what it does, any information stored in RAM, cache, hard drives, EPROM-- be it data or executable code, is software. I agree that the electrical signals being transmitted once they leave a storage medium would not be data or software they are electrical information that has to be coded and decoded and stored in memory. Once it is in memory in digital form on a computer, it is software. You can't call it hardware. When you make a tape backup of all your memory on a large (or small) computer you are backing up the software. Every single bit of stored information goes on that tape with a full backup. This is the software. MP3s and MPEGs on your harddrive are software, once they are stored in memory. &quot;A little knowledge is a dangerous thing.....&quot; [morning]
 
It's easy to say software is simply &quot;that which is not hardware&quot;, but isn't this an over simplification?

Hardware is a machine in the physical sense, software is a machine in a different sense. Saying that software == data is like saying hardware == atoms. Sure, hardware is made of atoms but isn't there is a more qualified, high-level definition?

Maybe this is a question of context. For a given piece of data, it may make more sense to call it software in a certain context, or just data in a different context. For example a web server considers an HTML document to be a chunk of data, but a browser considers it to be software, because it contains commands. Same data, two different ways of looking at it.

petey
 
I agree that there is more than one way of looking at it. I come from a simpler time when software was merely one bit of data turned on or off like a light switch and this multiplied millions of times to perform tasks. This discussion can really become complicated when you add artificial intellegence to the pot. Will androids that think for themselves have software or will it be called something else. Our own brains use chemical software, or is it software. Our thoughts, memories and instructions to all parts of our bodies. Is that software?? This is a very interesting subject. I guess I always took it for granted since that was the way I was taught. I now see your point. I'll be mulling this over for some time. &quot;A little knowledge is a dangerous thing.....&quot; [morning]
 
nobrain, you gotta pick one. Data is medium independent. It doesn't matter if I have a printout of War and Peace, or if it exists in the RAM of my computer, or on a CD-ROM, or in my own memory, it's still data.


petey, your difficulty, I think, is that the dichotomy between data and software isn't as strong as you want it to be. If you write a hard-coded &quot;Hello, World!&quot; program, is the string, &quot;Hello, World!&quot; in your code data or software?

In the case of HTML, you get data and software at once. The tags are function calls, the strings in between is data being passed to those calls. DHTML blurs the line. The data itself can be acted on.

If a PHP script outputs JavaScript code, to the PHP interpreter, the JavaScript is data -- it can't act on it. To the JavaScript interpreter, the JavaScript is code.
______________________________________________________________________
Never forget that we are
made of the stuff of stars
 
In the beginning of computers all data was called software and vice versa. If it's not hardware (which includes all components, electronics, power, the things that exist with empty memory)it has to be software. I think we've beat this old horse to death....... &quot;A little knowledge is a dangerous thing.....&quot; [morning]
 
I can have some appreciation for nobrain's position espcially when you go back to the 40's, and computers were hardwired, one program at a time. But I'm not so sure that reasonable to apply that standard today. But I do have a question, nobrain - you stated [paraphrased] that you agreed that electrical signals, one they've left a storage medium, would not be data nor software. Suppose that the signal is still in a digital format (its ones and zeros) which you have stated is software. How would you classify it then? And what do you consider a &quot;storage medium&quot;, or perhaps more to the point, when these electrical signals leave a storage medium, what kind of medium are they now in?

Perhaps we make a distinction between software and data, by classifying software as instructions, and data being that which upon the instructions operate. In other words, software is the operations, and data is the operands. With respect the the &quot;Hello World&quot; program - the &quot;Hello World&quot; string is data. The &quot;display&quot; command would be the software - that's the instruction. This means that data can be hard-coded into source code, which we've done for a long time. After all, if you've ever include pi (3.14159...) into a program, did you simply include it as a &quot;constant&quot;? But its still data, Its not an instruction.

With respect to the brain question. The neurons are the hardware, the chemical/electrical signals that instruct which neurons to fire (or not) are the software, and the messages being transmitted are the data.

One drawback to this classification scheme is that it requires you to define a context in which to evaluate that which is an instruction, and that which is data. At a certain point in time, a given set of instructions may be the program being executed, or the data to another program. Without a contextual frame of reference, proper classification becomes problematic.

On a historical note, the first known reference to the term &quot;software&quot; occured in 1850 (yes 1850 - over 150 years ago) with respect to garbage. Garbage that would decompose was consider &quot;software&quot;, and garbage that would not decompose was &quot;hardware&quot;.

In the electronic age, the term software is first attributed to the Princeton University statistics professor John W. Tukey in the January 1958 American Mathematical Monthly. Titled &quot;The Teaching of Concrete Mathematics,&quot; Tukey's article contains the following passage:

Today the &quot;software&quot; comprising the carefully planned interpretive routines, compilers, and other aspects of automative programming are at least as important to the modern electronic calculator as its &quot;hardware&quot; of tubes, transistors, wires, tapes and the like.
Good Luck
--------------
As a circle of light increases so does the circumference of darkness around it. - Albert Einstein
 
I agree with John Tukey's definition.( But, I'm almost as old as he is/was)
At work, in todays' evironment, we were no longer technician's ,but circuit board changing grunts and had to accept everything for what is was and go on. We referred to unexplainable logic to fix a problem as &quot;FM&quot; (blanking magic) and went on!! &quot;A little knowledge is a dangerous thing.....&quot; [morning]
 
CajunCenturion gets a star for that quote from Tukey. Never heard that before.

I don't think there's a dichotomy between software and data, but I do think there are times when it is not meaningful to call data software (and vice versa).

Maybe a good way to draw the distinction is by saying that software is Subject and data is Object. Call it software if it is interesting for what it does. Call it data if it is interesting for what it represents.

petey
 
Sounds more like an English lesson to me... Look, we all agree that there are at least two main classifications: Hardware and Software. What about subsets? This is where data fits into the picture. Software includes any digital medium that is contained within hardware. Data is a &quot;subset&quot; of that. So are programs, operating systems, etc.

The term &quot;software&quot; can have more than one meaning - where the English derivative of the term gets a little tricky for some. Software in general is the simple contrast from hardware (as nobrain had put it). That's all there is to it.

I agree that I would never use the term &quot;software&quot; to describe data, but that doesn't mean that if I did it would be wrong. The difference is that most of us that understand &quot;data&quot; is separate from &quot;programs&quot; might be able to describe it as such. We understand and choose to describe the integral details on how it works and why. But to the rest of the world, it's the simple difference between hardware and software. Neither comparison is wrong - one is just more descriptive than the other.

Those that continue to say that data can not be a subset of software aren't breaking it down far enough. First, you've got to set limits in this discussion. Are we just talking about the technical &quot;PC&quot; aspect of the terms, or the whole world in general? Personally, I like to keep it technical in which case one cannot argue that hardware is software's physical domain. Anything in the PC world that is dependent on this physical architecture and cannot exist by itself is known as software. Break it down far enough, and everything (besides the hardware) is a bunch of 1's and 0's - bits of data. That's right people. Even programs are comprised of these &quot;bits of data&quot;. More simply put - SOFTWARE.

Back to the original question:
How do we differentiate between what we call 'software' and what we call 'content'? Is there a need to differentiate?

I think that the mistake by many is saying that software is synonymous with program. That's a common use of the term, but not exact or inclusive. In the question, it would be more appropriate to use another term besides 'software'. That's far too generalized...

It's all a matter of opinion on how descriptive you choose to be - no need for anyone to impose theirs on the rest of us.
~cdogg
&quot;We park in driveways but drive in parkways?&quot;
 
Software is a very vague term as the debate here has proved. It is easy to differentiate what is not hardware but classifying it further is getting more difficult. XML, for example, is not only the raw data, but also can explain how it is organized. So more and more, I think definitions will need to be contextual.

In developing and maintaining webpages, we differentiate between formatting and content. Think of the formatting, which is mostly in HTML, as the way the page is displayed, and the content is what is displayed on the page. Since we use various tools, we have most of our content managed in databases allowing for easy changes without having to modify HTML. Mind you, we also use databases to store and maintain the data captured by the pages.

I hope this makes sense, I think I am confusing myself ;-)

Jude
 
I know I am a little late in jumping in but I would like to add my two bits.

I completely agree with CDogg. Hardware and software are the two parents and beneath them there are subsets. I have always found it benificial to put things into an analogy.

Think of it as a square and rectangle. A square is a rectangle, yet it is not often referred to as a rectangle. In many cases the two terms are so differenciated so that people see them as two different things, but the fact remains that a square is a rectangle.

And so it is with data and software. Data is software even though it is not usually reffered to as software. It gets deeper yet when we have modified the definition of software to mean and executable set of instructions.
Thus software really has two meanings

1. Not hardware but 1's and 0's
2. An application

Under the first definition data/content is software. Under the second it is not. That'l do donkey, that'l do
[bravo] Mark
 
Status
Not open for further replies.

Part and Inventory Search

Sponsor

Back
Top