Articulo de referencia

Mesa (lenguaje de programación)

[[James G. Mitchell|Mitchell, James G.]]; Maybury, William; Sweet, Richard (1979): [http://www.bitsavers.org/pdf/xerox/parc/techReports/CSL-79-3_Mesa_Language_Manual_Version_5.0...

Mesa [ 1 ] es un lenguaje de programación desarrollado a mediados de la década de 1970 en el Centro de Investigación Xerox Palo Alto en Palo Alto, California , Estados Unidos . El nombre del lenguaje era un juego de palabras basado en los eslóganes de 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 sólido 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 y uno o más archivos de programa que especifican la implementación de los procedimientos en la interfaz. [ 4 ] Para usar una biblioteca, un programa o una biblioteca de nivel superior debe "importar" las definiciones. El compilador de Mesa verifica los tipos de todas las instancias de entidades importadas; esta combinación de compilación separada con verificación de tipos era inusual en ese momento.

Mesa introdujo 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 se desarrolló en el Xerox Alto , uno de los primeros ordenadores personales con interfaz gráfica de usuario ; sin embargo, la mayor parte del software del sistema del Alto estaba escrito en BCPL . Mesa fue el lenguaje de programación de las estaciones de trabajo Xerox Star posteriores y del entorno de escritorio GlobalView . Posteriormente, Xerox PARC desarrolló Cedar , que era una extensión 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 interfaces gráficas de usuario (GUI) , los entornos en red y los demás avances con los que Xerox contribuyó al campo de la informática .

Historia

Mesa fue diseñada originalmente en el Laboratorio de Sistemas Informáticos (CSL), una división del Centro de Investigación Xerox Palo Alto, para la Alto , una estación de trabajo experimental con microcódigo. Inicialmente, su difusión se limitó al PARC y a algunas universidades a las que Xerox había donado algunas unidades de la Alto.

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

Un entorno de desarrollo secundario, denominado Entorno de Desarrollo Xerox (XDE), permitía a los desarrolladores depurar tanto el sistema operativo Pilot como las aplicaciones GUI ViewPoint mediante un mecanismo de intercambio de mundos. Esto permitía intercambiar todo el "estado" del mundo y depurar fallos del sistema de bajo nivel que paralizaban todo el sistema. Esta técnica no era muy escalable para imágenes de aplicaciones grandes (de varios megabytes), por lo que en versiones posteriores, el entorno Pilot/Mesa dejó de utilizar la vista de intercambio de mundos cuando las máquinas con microcódigo fueron reemplazadas por estaciones de trabajo SPARC y PC Intel que ejecutaban un emulador Mesa PrincOps para el conjunto básico de instrucciones de hardware.

Mesa se compiló en un lenguaje de máquina de pila, supuestamente con la mayor densidad de código jamás alcanzada (aproximadamente 4 bytes por instrucción de lenguaje de alto nivel). Esto se promocionó en un artículo de 1981 donde implementadores del Departamento de Desarrollo de Sistemas de Xerox (entonces, el brazo de desarrollo de PARC) optimizaron 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 de Mesa, que abarcaba la amplia gama de tecnologías disponibles en Xerox en aquel entonces y culminaba con la creación de un " hack ", un programa funcional diseñado para ser útil. Un ejemplo real de este tipo de hack es BWSMagnifier, escrito en 1988, que permitía ampliar secciones de la pantalla de la estación de trabajo mediante una ventana redimensionable y un factor de ampliación ajustable. Los programadores de Mesa capacitados por Xerox dominaban los fundamentos de las interfaces gráficas de usuario (GUI), las redes, las excepciones y la programación multihilo, 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 se unieron al Centro de Investigación de Sistemas de DEC , donde utilizaron su experiencia con Mesa en el diseño de Modula-2+ y, posteriormente, de Modula-3 .

Características principales

Semántica

Mesa era un lenguaje de programación fuertemente tipado con verificación de tipos entre límites de módulos, pero con suficiente flexibilidad en su sistema de tipos como para que se pudieran escribir asignadores de memoria dinámica en Mesa. [ 6 ]

Gracias a su estricta separación entre interfaz e implementación, Mesa permite una compilación incremental real y fomenta la programación independiente de la arquitectura y la plataforma . Además, simplificaron la depuración a nivel de código fuente , incluyendo la depuración remota a través de Ethernet .

Mesa contaba con amplias funcionalidades para el manejo de excepciones , con cuatro tipos de excepciones. Admitía la sincronización de subprocesos mediante monitores. Mesa fue el primer lenguaje en implementar BROADCAST de monitores, 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 ASCII de 1963 en lugar de la más común de 1967, el conjunto de caracteres de Alto incluía una flecha hacia la izquierda (←) en vez de un guion bajo. Como resultado, los programadores de Alto (incluidos los que usaban Mesa, Smalltalk, etc.) utilizaban convencionalmente la notación camelCase para los 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 hacia la izquierda les permitía usarla para el operador de asignación, como se hacía originalmente en ALGOL.

Cuando los diseñadores de Mesa quisieron implementar un sistema de manejo de excepciones, contrataron a un recién graduado de maestría de Colorado que había escrito su tesis sobre el manejo de excepciones en lenguajes algorítmicos. Esto dio como resultado el sistema de manejo de excepciones más completo de su época, con las primitivas SIGNAL , ERROR , ABORT , RETRY , CATCH y CONTINUE . Dado que el lenguaje no contaba con comprobaciones de tipado seguro para verificar la cobertura completa 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 adiciones de Cedar fueron la recolección de basura , los tipos dinámicos , un 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 seguras de tipos de paquetes de software de múltiples módulos, para garantizar la ejecución determinista y evitar fugas de memoria .

Descendientes

  • El Departamento de Defensa de Estados Unidos propuso a Xerox el uso de Mesa para su lenguaje de programación "IronMan" (véanse los requisitos del lenguaje Steelman ), pero Xerox rechazó la propuesta debido a la existencia de objetivos contrapuestos. Los empleados de Xerox PARC argumentaron que Mesa representaba una ventaja competitiva que hacía que los ingenieros de software de Xerox fueran más productivos que los de otras empresas. Finalmente, el Departamento de Defensa optó por desarrollar el lenguaje de programación Ada entre las opciones disponibles.
  • El escritorio Star original evolucionó a ViewPoint Desktop y posteriormente a GlobalView , que se adaptó a diversas plataformas Unix, como SunOS Unix y AIX . Se desarrolló un compilador de Mesa a C y el código resultante se compiló para la plataforma de destino. Esta solución era viable, pero dificultaba enormemente el desarrollo en máquinas Unix, ya que se perdía la potencia del compilador Mesa y su conjunto de herramientas asociadas. Si bien tuvo cierto éxito comercial en estaciones de trabajo Sun SPARC en el sector editorial, este enfoque limitó las oportunidades de mercado del producto.
  • En 1976, durante un año sabático en Xerox PARC, Niklaus Wirth conoció Mesa, que tuvo una gran influencia en el diseño de su lenguaje Modula-2 . [ 10 ]
  • Java se refiere explícitamente a Mesa como un predecesor. [ 11 ]

Véase también

Referencias

  1. 1 2 3 Mitchell, James G. ; Maybury, William; Sweet, Richard (1979): Manual del lenguaje Mesa - versión 5.0 " XEROX PARC, Laboratorio de Sistemas Informáticos (CSL), Informe técnico CSL-79-3. Copia en línea en www.bitsavers.org, consultado el 15-05-2019.
  2. Mesa , Grupo de Preservación de Software
  3. Perry, TS (mayo de 1988).'PostScript' imprime cualquier cosa: un estudio de caso". 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, S2CID 1353842 
  6. Geschke, Charles ; Morris, James H.; Satterthwaite, Edwin H. (agosto de 1977). "Primeras experiencias con Mesa" . Communications of the 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" . Communications of the ACM . 23 (2): 105– 117. CiteSeerX 10.1.1.142.5765 . doi : 10.1145/358818.358824 . S2CID 1594544 .  
  8. Lampson, Butler W. Descripción del lenguaje Cedar . Informe técnico de Xerox PARC. Archivado del original el 13 de febrero de 2008.
  9. Swinehart, Daniel C.; Zellweger, Polle T.; Hagmann, Robert B. (julio de 1985). "La estructura del cedro". SIGPLAN Notices . 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 la 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}}: CS1 mantenimiento: falta el editor de ubicación ( enlace ) .
  11. Gosling, James ; Joy, Bill ; Steele, Guy ; Bracha, Gilad . Especificación del lenguaje Java (2.ª ed.). 
  • Manual del lenguaje de programación Mesa, versión 5 (1979) en bitsavers.org
  • Otros documentos de Mesa en bitsavers.org
  • Depuradores de parada mundial archivados el 26 de agosto de 2016 en la Wayback Machine , Don Gillies, empleado de Xerox SDD/ISD, 1984–86.
  • Teitelman, Warren (abril de 1984). "Un recorrido por Cedar". IEEE Software . 1 (2): 44– 73. CiteSeerX 10.1.1.105.3163 . doi : 10.1109/ms.1984.234050 .