Hermes (programming language)
Introduction '''Hermes'''is a language for distributed programmingthat 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.
References