Jump to content

Hermes (programming language)

From Wikipedia, the free encyclopedia
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

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]

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.

References

  1. ^ Strom, Robert E.; Bacon, David F; Goldberg, Arthur P.; Lowry, Andy; Yellin, Daniel M.; Yemini, Shaula (1991). Hermes - A Language for Distributed Computing. Englewood Cliffs, NJ, USA: Prentice-Hall. ISBN 978-0-13-389537-7.
  2. ^ Lowry, Andy (1992). "The Hermes language in outline form". ACM SIGPLAN Notices. 27 (8): 51–70. doi:10.1145/142137.142148. ISSN 0362-1340. S2CID 28615424.
  3. ^ Strom, R.E. (1990). "Hermes: an integrated language and system for distributed programming". IEEE Workshop on Experimental Distributed Systems. pp. 75–82. doi:10.1109/EDS.1990.138054. S2CID 10223422.
  4. ^ Bacon, David F.; Lowry, Andy (1990). A Portable Run-time System for the Hermes Distributed Programming Language. USENIX Summer Technical Conference. Anaheim, California, USA: Usenix Association. pp. 39–50.
  5. ^ Korfhage, Willard; Goldberg, Arthur P. (1995). "Hermes language experiences" (PDF). Software: Practice and Experience. 25 (4): 389–402. CiteSeerX 10.1.1.13.9034. doi:10.1002/spe.4380250404. ISSN 0038-0644. S2CID 30437763. Archived from the original (PDF) on 2005-05-26. Retrieved 2009-08-27.
  6. ^ Strom, Robert E. (1983). "Mechanisms for compile-time enforcement of security". Proceedings of the 10th ACM SIGACT-SIGPLAN symposium on Principles of programming languages - POPL '83. pp. 276–284. doi:10.1145/567067.567093. ISBN 978-0897910903. S2CID 6630704.