Skip to content

Instantly share code, notes, and snippets.

@tonymorris
Last active August 29, 2015 14:02
Show Gist options
  • Save tonymorris/3cd88c81a24fb517eb64 to your computer and use it in GitHub Desktop.
Save tonymorris/3cd88c81a24fb517eb64 to your computer and use it in GitHub Desktop.
Working program

Working

  • A thing, such as a computer program, is described as working if an ultimate goal for that thing can be stated and that thing meets that goal.

  • A thing, such as a computer program, is described as approximately working, if an ultimate goal for that thing can be stated and that thing meets a significant set of goals that comprise the ultimate goal.

  • A thing, such as a computer program, is described as not working, if an ultimate goal for that thing can be stated and that thing does not meet the ultimate goal, or meets a trivially insignificant set of goals that compromise the ultimate goal.

  • The method by which a goal is broken into sub-goals is formally prescribed, by an epistemological effort and by drawing on fundamental concepts of computing. The method is summarised below.

  • A definition is useful if it can be used to construct inferences that coincide with observations.

  • There does not exist another useful definition of a working thing, such as a computer program, except for the one described here.

Convergence

  • All (decidable) working programs are reduce to a set of decision problems.

  • A program is a function problem and therefore, may give complex answers (not necessarily a decision).

  • An undecidable program may or may not be working. Since this question is undecidable, it is discarded, because it does not give rise to a useful inferences (and therefore, a goal).

  • A goal is composed of two or more sub-goals, if those sub-goals exist independently of each other as goals themselves (potentially disparate from the result of their composition) and subsequently, give rise to a (decidable or undecidable) working program by a process of reverse engineering.

@cfreeman
Copy link

What are the thresholds involved in separating the three thing categories?

I would be keen to learn more about the method deferred.

I also imagine that 'A definition is useful if it can be used to construct inferences that coincide with observations.' would be subjective and vary considerably from implementor to implementor.

@benwazza
Copy link

A non-working program by the above definition could still be 'useful' and provide value in real terms. I think this is where the usual arguments diverge - one being about the definition of 'working' and the counter side being about what is 'useful'.

@tonymorris
Copy link
Author

Programs that do not work, are by definition not useful, in the context.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment