Hermes [ 1 ] [ 2 ] es un lenguaje para programación distribuida [ 3 ] que fue desarrollado en el Centro de Investigación Thomas J. Watson de IBM desde 1986 hasta 1992, con un compilador y un sistema de tiempo de ejecución de código abierto. [ 4 ] Las características principales de Hermes incluían: [ 5 ]
- Soporte lingüístico para procesos y comunicación entre procesos .
- Verificación en tiempo de compilación de que las operaciones utilizan datos inicializados.
- Conjuntos de datos independientes de la representación, denominados tablas.
- Falta de indicadores .
Utiliza el análisis de estado de tipo para comprobar los errores de transición de variables, descartando transiciones semánticamente sin sentido de un estado a otro (por ejemplo, partiendo de un valor, algunas secuencias de operaciones sobre una variable carecen de sentido), siendo la lectura de una variable no inicializada un caso especial. En este sentido, la comprobación en tiempo de compilación de la inicialización de datos es similar al análisis de asignación definida que realizan Java , Cyclone y C# .
Hermes y su predecesor, NIL (Network Implementation Language), fueron los primeros lenguajes de programación que admitían esta forma de verificación de inicialización. [ 6 ] Typestate se utilizó de forma más extensa para generar operaciones de "eliminación" insertadas por el compilador.
Referencias
- ↑ Strom, Robert E.; Bacon, David F .; Goldberg, Arthur P.; Lowry, Andy; Yellin, Daniel M.; Yemini, Shaula (1991). Hermes - Un lenguaje para la computación distribuida . Englewood Cliffs, NJ, EE. UU.: Prentice-Hall. ISBN 978-0-13-389537-7.
- ↑ Lowry, Andy (1992). "El lenguaje Hermes en forma esquemática" . ACM SIGPLAN Notices . 27 (8): 51– 70. doi : 10.1145/142137.142148 . ISSN 0362-1340 . S2CID 28615424 .
- ↑ Strom, RE (1990). "Hermes: un lenguaje y sistema integrado para programación distribuida". Taller IEEE sobre Sistemas Distribuidos Experimentales . págs. 75–82 . doi : 10.1109/EDS.1990.138054 . S2CID 10223422 .
- ↑ Bacon, David F. ; Lowry, Andy (1990). Un sistema de ejecución portátil para el lenguaje de programación distribuida Hermes . Conferencia técnica de verano de USENIX. Anaheim, California, EE. UU.: Asociación Usenix. págs. 39–50 .
- ↑ Korfhage, Willard; Goldberg, Arthur P. (1995). "Experiencias lingüísticas de Hermes" (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. Archivado del original (PDF) el 26 de mayo de 2005. Recuperado el 27 de agosto de 2009 .
- ↑ Strom, Robert E. (1983). «Mecanismos para la aplicación de la seguridad en tiempo de compilación». Actas del 10.º simposio ACM SIGACT-SIGPLAN sobre principios de lenguajes de programación - POPL '83 . págs. 276–284 . doi : 10.1145/567067.567093 . ISBN 978-0897910903. S2CID 6630704 .
- computación distribuida
- Lenguajes de programación
- Herramientas de análisis estático de programas
- Temas básicos de lenguajes de programación