stringtranslate.com

Mesa (lenguaje de programación)

Mesa [1] es un lenguaje de programación desarrollado a mediados de la década de 1970 en el Centro de Investigación de Xerox en Palo Alto, California , Estados Unidos . El nombre del lenguaje era un juego de palabras basado en las frases de moda de los lenguajes de programación de la época, porque Mesa es un lenguaje de programación de "alto nivel" .

Mesa es un lenguaje similar a ALGOL con un fuerte soporte para la programación modular . Cada módulo de biblioteca tiene al menos dos archivos fuente : un archivo de definiciones que especifica la interfaz de la biblioteca más uno o más archivos de programa que especifican la implementación de los procedimientos en la interfaz. [4] Para utilizar una biblioteca, un programa o una biblioteca de nivel superior debe "importar" las definiciones. El compilador de Mesa verifica todos los usos de las entidades importadas; esta combinación de compilación separada con verificación de tipos era inusual en ese momento. [ cita requerida ]

Mesa introdujo varias otras innovaciones en el diseño e implementación del lenguaje, especialmente en el manejo de excepciones de software , la sincronización de subprocesos y la compilación incremental .

Mesa fue desarrollado en Xerox Alto , una de las primeras computadoras personales con una interfaz gráfica de usuario ; sin embargo, la mayor parte del software del sistema de Alto fue escrito en BCPL . Mesa fue el lenguaje de programación del sistema de las posteriores estaciones de trabajo Xerox Star y del entorno de escritorio GlobalView . Xerox PARC desarrolló posteriormente Cedar, que era un superconjunto de Mesa.

Mesa y Cedar tuvieron una gran influencia en el diseño de otros lenguajes importantes, como Modula-2 y Java , y fueron un vehículo importante para el desarrollo y la difusión de los fundamentos de las GUI , los entornos en red y otros avances que Xerox contribuyó al campo de la informática .

Historia

Mesa fue diseñado originalmente en el Laboratorio de Sistemas Informáticos (CSL), una sucursal del Centro de Investigación de Xerox en Palo Alto, para el Alto , una estación de trabajo microcodificada experimental. Inicialmente, su difusión se limitó al PARC y a unas pocas universidades a las que Xerox había donado algunos Altos.

Posteriormente, Mesa fue adoptado como lenguaje de programación de sistemas para las estaciones de trabajo comerciales de Xerox, como Xerox 8010 (Xerox Star, Dandelion) y Xerox 6085 (Daybreak) , en particular para el sistema operativo Pilot .

Un entorno de desarrollo secundario, llamado Xerox Development Environment (XDE), permitía a los desarrolladores depurar tanto el sistema operativo Pilot como las aplicaciones GUI de ViewPoint mediante un mecanismo de intercambio de mundos. Esto permitía intercambiar todo el "estado" del mundo y depurar fallos de bajo nivel del sistema que paralizaban todo el sistema. Esta técnica no se adaptaba muy bien a imágenes de aplicaciones grandes (varios megabytes), por lo que el mundo Pilot/Mesa en versiones posteriores se alejó de la vista de intercambio de mundos cuando las máquinas microcodificadas se eliminaron gradualmente en favor de las estaciones de trabajo SPARC y las PC Intel que ejecutaban un emulador Mesa PrincOps para el conjunto de instrucciones de hardware básico.

Mesa fue compilado en un lenguaje de pila de máquinas, supuestamente con la mayor densidad de código jamás alcanzada (aproximadamente 4 bytes por cada instrucción de lenguaje de alto nivel). Esto se promocionó en un artículo de 1981 en el que los implementadores del Departamento de Desarrollo de Sistemas de Xerox (en aquel entonces, el brazo de desarrollo de PARC) ajustaron el conjunto de instrucciones y publicaron un artículo sobre la densidad de código resultante. [5]

Mesa se enseñaba a través del Curso de Programación Mesa, que mostraba a los usuarios la amplia gama de tecnologías que Xerox tenía disponibles en ese momento y terminaba con el programador escribiendo un " truco ", un programa funcional diseñado para ser útil. Un ejemplo real de un truco de este tipo es el BWSMagnifier, que se escribió en 1988 y permitía a los usuarios ampliar secciones de la pantalla de la estación de trabajo definidas por una ventana redimensionable y un factor de ampliación modificable. Los programadores Mesa capacitados de Xerox estaban bien versados ​​en los fundamentos de las GUI, las redes, las excepciones y la programación multiproceso, casi una década antes de que se convirtieran en herramientas estándar del sector.

Dentro de Xerox, Mesa fue finalmente reemplazado por el lenguaje de programación Cedar. Muchos programadores y desarrolladores de Mesa abandonaron Xerox en 1985; algunos de ellos fueron al DEC Systems Research Center , donde utilizaron su experiencia con Mesa en el diseño de Modula-2+ y, más tarde, de Modula-3 .

Características principales

Semántica

Mesa era un lenguaje de programación fuertemente tipado con verificación de tipos a través de los límites de los módulos, pero con suficiente flexibilidad en su sistema de tipos para que se pudieran escribir asignadores de montón en Mesa. [6]

Debido a su estricta separación entre interfaz e implementación, Mesa permite una verdadera compilación incremental y fomenta la programación independiente de la arquitectura y la plataforma . También simplificaron la depuración a nivel de fuente , incluida la depuración remota a través de Ethernet .

Mesa tenía funciones avanzadas de manejo de excepciones , con cuatro tipos de excepciones. Tenía soporte para sincronización de subprocesos a través de monitores. Mesa fue el primer lenguaje en implementar monitor BROADCAST, un concepto introducido por el sistema operativo Pilot. [7]

Sintaxis

Mesa tiene una sintaxis "imperativa" y "algebraica" , basada en ALGOL y Pascal en lugar de BCPL o C ; por ejemplo, los comandos compuestos se indican con las palabras clave BEGIN y END en lugar de llaves . En Mesa, todas las palabras clave se escriben en mayúsculas. [1]

Debido a que PARC utilizaba la variante de 1963 de ASCII en lugar de la variante más común de 1967, el conjunto de caracteres de Alto incluía una flecha que apuntaba hacia la izquierda (←) en lugar de un guión bajo. El resultado de esto es que los programadores de Alto (incluidos los que usaban Mesa, Smalltalk, etc.) usaban convencionalmente camelCase para identificadores compuestos, una práctica que se incorporó al estilo de programación estándar de PARC. Por otro lado, la disponibilidad de la flecha que apuntaba hacia la izquierda les permitió usarla para el operador de asignación, como originalmente se había hecho en ALGOL.

Cuando los diseñadores de Mesa quisieron implementar una función de excepción, contrataron a un recién graduado de maestría [ ¿quién? ] de Colorado que había escrito su tesis sobre funciones de manejo de excepciones en lenguajes algorítmicos. Esto condujo a la función de excepción más completa de su tiempo, con las primitivas SIGNAL , ERROR , ABORT , RETRY , CATCH y CONTINUE . Como el lenguaje no tenía comprobaciones de tipo seguro para verificar la cobertura total del manejo de señales, las excepciones no capturadas eran una causa común de errores en el software publicado.

Cedro

Mesa fue el precursor del lenguaje de programación Cedar. [8] [9] Las principales incorporaciones de Cedar fueron la recolección de basura , tipos dinámicos , mejor soporte de cadenas a través de cuerdas , una forma limitada de parametrización de tipos y una sintaxis especial para identificar las partes de tipos seguros de los paquetes de software multimódulo, para garantizar la ejecución determinista y evitar fugas de memoria .

Descendientes

Véase también

Referencias

  1. ^ abc Mitchell, James G. ; Maybury, William; Sweet, Richard (1979): Mesa Language Manual - version 5.0" XEROX PARC, Computer Systems Laboratory (CSL), Technical Report CSL-79-3. Copia en línea en www.bitsavers.org, consultado el 15 de mayo de 2019.
  2. ^ Mesa, Grupo de Preservación de Software
  3. ^ Perry, TS (mayo de 1988). ""PostScript" imprime cualquier cosa: un caso histórico". IEEE Spectrum . 25 (5): 42–46. doi :10.1109/6.4550. S2CID  33376390.
  4. ^ Manual del lenguaje Mesa , capítulo 7. (El Manual utiliza el término módulo para referirse a un archivo fuente).
  5. ^ Sweet, Richard; Sandman, James (marzo de 1982), "Análisis empírico del conjunto de instrucciones mesa", Actas del primer simposio internacional sobre soporte arquitectónico para lenguajes de programación y sistemas operativos - ASPLOS-I , págs. 158-166, doi : 10.1145/800050.801839 , ISBN 0897910664, Número de identificación del sujeto  1353842
  6. ^ Geschke, Charles ; Morris, James H. ; Satterthwaite, Edwin H. (agosto de 1977). "Experiencia temprana con Mesa". Comunicaciones de la ACM . 20 (8): 540–552. doi : 10.1145/359763.359771 . S2CID  15737342.
  7. ^ Lampson, Butler W. ; Redell, David D. (febrero de 1980). "Experiencia con procesos y monitores en Mesa". Comunicaciones de la ACM . 23 (2): 105–117. CiteSeerX 10.1.1.142.5765 . doi :10.1145/358818.358824. S2CID  1594544. 
  8. ^ Lampson, Butler W. Una descripción del lenguaje del cedro. Informe técnico de Xerox PARC.
  9. ^ Swinehart, Daniel C.; Zellweger, Polle T.; Hagmann, Robert B. (julio de 1985). "La estructura del cedro". Avisos SIGPLAN . 20 (7): 230–244. CiteSeerX 10.1.1.110.9565 . doi :10.1145/800225.806844. S2CID  2788992. 
  10. ^ Wirth, Niklaus (2007). "Modula-2 y Oberon". Actas de la tercera conferencia ACM SIGPLAN sobre Historia de los lenguajes de programación . San Diego. pp. 3-1–3-10. CiteSeerX 10.1.1.91.1447 . doi :10.1145/1238844.1238847. ISBN.  978-1-59593-766-7.S2CID 1918928  .{{cite book}}: Mantenimiento de CS1: falta la ubicación del editor ( enlace ).
  11. ^ Gosling, James ; Joy, Bill ; Steele, Guy ; Bracha, Gilad . Especificación del lenguaje Java (2.ª ed.).

Enlaces externos