Software is dealt with in a few different ways in Cyc.
Two salient senses of software are:
- As a kind of propositional conceptual work, software,
or a specific computer program, is a deliberately created abstract object comprised of propositions
that together constitute a list of instructions for computers to execute. Examples include
Emacs (the program) and the Linux kernel (the program). Computer programs are distinct from
computer code and from both running and installed programs. The instructions that comprise a
computer program can be expressed as abstract computer code, but no list of instructions expressed
in code constitutes a computer program as a conceptual work. Rather, the code in which a
computer program is expressed constitutes an abstract information structure that can be related to
the program it expresses. More than one computer code can express the same computer program;
for example, a single computer program can be written in source code in several different computer
languages, or it can be compiled as a binary executable. A physical computer program is called a
"computer program copy" which is an information-bearing thing. A computer program that is being
executed is called a "running computer process".
- As an object, software is either a versioned or unversioned non-series software object, such as
a program, a version of a program, a software package, or a library. Positive examples include
Netscape Navigator, Netscape Navigator version 4.76, glibc, and SUNWzip. Negative examples include
Netscape Navigator versions 3 through 4 inclusive, which is a series.