E is an extension of C++ designed for writing software systems to supp
ort persistent applications. Originally designed as a language for imp
lementing database systems, E has evolved into a general persistent pr
ogramming language. E was the first C++ extension to support transpare
nt persistence, the first C++ implementation to support generic classe
s, and remains the only C++ extension to provide general-purpose itera
tors. In addition to its contributions to the C++ programming domain,
work on E has made several contributions to the field of persistent la
nguages in general, including several distinct implementations of pers
istence. This paper describes the main features of E and shows through
examples how E addresses many of the problems that arise in building
persistent systems.