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:
It used typestate analysis to check variables transitions errors, to rule out some semantically non meaningful transitions from one state to another, 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, were the earliest programming languages supporting this form of initialization checking.
Typestate was actually used more extensively, to generate compiler-inserted "delete" operations.