This paper argues that basing the semantics of concurrent systems on the notions of state and state transitions is neither
advisable nor necessary. The tendency to do this is deeply rooted in our notions of computation, but these roots have proved
problematic in concurrent software in general, where they have led to such poor programming practice as threads. I review
approaches (some of which have been around for some time) to the semantics of concurrent programs that rely on neither state
nor state transitions. Specifically, these approaches rely on a broadened notion of computation consisting of interacting
components. The semantics of a concurrent compositions of such components generally reduces to a fixed point problem. Two
families of fixed point problems have emerged, one based on metric spaces and their generalizations, and the other based on
domain theories. The purpose of this paper is to argue for these approaches over those based on transition systems, which
require the notion of state.