Hermes (programming language)

Hermes is a language for distributed programming that was developed at IBM's Thomas J. Watson Research Center from 1986 through 1992, with an open-source compiler and run-time system. Hermes' primary features included:


 * Language support of processes and interprocess communication.
 * Compile-time verification that operations use initialized data.
 * Representation-independent data aggregates called tables.
 * Lack of pointers.

It used typestate analysis to check variables transitions errors, to rule out some semantically non meaningful transitions from one state to another (i.e. starting from a value, some sequences of operations on a variable are nonsensical), of which reading an uninitialized variable is a special case. In this role of compile-time checking of data initialization is similar to definite assignment analysis performed by Java, Cyclone and C#.

Hermes and its predecessor, NIL (Network Implementation Language), were the earliest programming languages supporting this form of initialization checking. Typestate was actually used more extensively, to generate compiler-inserted "delete" operations.