Foundational work on programming has been based traditionally on some variant of lambda calculus. This approach, while ideally suited to sequential programming, is increasingly at odds with modern programs which are reactive in their interfaces and concurrent in their implementation. Standard process calculi, on the other hand, model nothing but the concurrent aspects of systems, and are ill-suited to express sequential behavior. This talk will show how nets consisting of functions and rewrite rules can serve as a uniform foundation of both sequential and concurrent programming. These nets have close relationships to Petri nets; in fact Petri nets can be regarded as a graphical notation for a a subset of functional nets. Functional nets have been formalized by Gonthier et al. under the name of join calculus. This talk will show how functional nets can be seen as a natural extension of sequential functional programming, and how they can model imperative, concurrent, and object-oriented programming styles. Browse HTML-Version