I’m going to suggest “irreducibly goal-directed, self-sustaining, self-generated action” as the definition of life. This eliminates such things as stars, while preserving all forms of biological life (including viruses and cells).
I would argue that this definition also eliminates computer programs and robots, since their actions are not irreducibly goal-directed; their ‘goal-directed action’ is simply our perception of the result of a long list of goal-independent instructions, simple coding and the like none of which are specifically goal-directed in themselves. Take a robot whose ‘goal’ is to keep a house clean. On casual inspection, we can see its action as goal-directed. Looking at its code, though, there is no ‘keep house clean’ action: There’s a long list of constituent actions, all intermixed, things like “turn left,” “drive forward until you hit a wall,” “deploy cleaning device,” etc, all of which can themselves be reduced to the fundamental ones-and-zeroes of data transmission and processing. When the reason behind any of these constituent ones-and-zeroes actions is investigated, we do not find a goal – we find “because the programming said to do it.”
Thus, the definition of life is a matter of context, as is all knowledge. What we identify as ‘goal-directed action’ is, itself, contextual on our understanding of the nature of that action. To provide another example, if we were able to examine in detail the ‘programming’ of a lower-level life form such as a virus, we could likely reduce a virus’ goal-directed action down to a list of constituent actions, none of which are, by themselves, specifically goal-directed (as with the cleaning robot above). In this sense, we have taken a higher-level perspective of goal-directed action and reduced it to a large list of goal-independent actions: Via a change in the context of our knowledge, we have reduced a living virus to a computer program.
Our context changed, our understanding of goal-directed action changed, and so our understanding of a virus as a ‘life form’ would also change.
In other words, something is alive as long as its actions are goal-directed. If we can reduce these goal-directed actions to a list of determined instructions that are no longer goal-directed actions, then, within the context of our knowledge, we have ‘reduced’ this thing such that it no longer satisfies the conditions for ‘life.’
Clearly, we all have an intuitive grasp of what ‘life’ is, and I think the above describes it most succinctly. Imagine our perspective of a cockroach now; we see it as ‘alive.’ But if we were able to print out the programming of its consciousness and see that it really only followed a long, long list of determined, goal-independent actions, that it was a glorified robot in a biological shell, I think a lot of us would intuitively reject applying the definition of ‘life’ to it: The mystery is gone, the magic has left it; all silly intuitive constructs behind which exists a rational truth – our definition of life is dependent on our identification of a life form’s actions as irreducibly goal-directed.
Is this an accurate definition of life? I don’t know; but I think it’s the definition we all implicity hold to when we claim that viruses, cockroaches and humans are alive, but computers, stars and robots are not: The actions of the former are irreducibly goal-directed, within the context of our knowledge.