Hermes (programming language) explained
Hermes[1] [2] is a language for distributed programming[3] that was developed at IBM's Thomas J. Watson Research Center from 1986 through 1992,with an open-source compiler and run-time system.[4] Hermes' primary features included:[5]
- 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.[6] Typestate was actually used more extensively, to generate compiler-inserted "delete" operations.
Notes and References
- Book: Strom . Robert E. . Bacon . David F . David F. Bacon . Goldberg . Arthur P. . Lowry . Andy . Yellin . Daniel M. . Yemini . Shaula . Hermes - A Language for Distributed Computing . Englewood Cliffs, NJ, USA . Prentice-Hall . 1991 . 978-0-13-389537-7 .
- Lowry. Andy. The Hermes language in outline form. ACM SIGPLAN Notices. 27. 8. 1992. 51–70. 0362-1340. 10.1145/142137.142148. 28615424. free.
- Book: Strom. R.E.. IEEE Workshop on Experimental Distributed Systems. Hermes: an integrated language and system for distributed programming. 1990. 75–82. 10.1109/EDS.1990.138054. 10223422.
- Bacon . David F. . David F. Bacon . Lowry . Andy . A Portable Run-time System for the Hermes Distributed Programming Language . USENIX Summer Technical Conference . Usenix Association . Anaheim, California, USA . 1990 . 39–50 .
- Korfhage. Willard. Goldberg. Arthur P.. Hermes language experiences. Software: Practice and Experience. 25. 4. 1995. 389–402. 0038-0644. 10.1002/spe.4380250404. 10.1.1.13.9034. 30437763. 2009-08-27. https://web.archive.org/web/20050526190214/http://www.cs.ubc.ca/local/reading/proceedings/spe91-95/spe/vol25/issue4/spe950wk.pdf. 2005-05-26. dead.
- Book: Strom. Robert E.. Proceedings of the 10th ACM SIGACT-SIGPLAN symposium on Principles of programming languages - POPL '83. Mechanisms for compile-time enforcement of security. 1983. 276–284. 10.1145/567067.567093. 978-0897910903. 6630704.