De Wikipedia, la enciclopedia libre
Saltar a navegación Saltar a búsqueda

Mesa [1] es un lenguaje de programación desarrollado a finales 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 las frases del lenguaje 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 y la implementación del lenguaje, especialmente en el manejo de excepciones de software , sincronización de subprocesos y compilación incremental .

Mesa se desarrolló 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 se escribió en BCPL . Mesa era el lenguaje de programación del sistema de las estaciones de trabajo Xerox Star posteriores y para el 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 los otros avances que Xerox contribuyó a la campo de la informática .

Historia [ editar ]

Mesa se diseñó originalmente en el Laboratorio de sistemas informáticos (CSL), una sucursal del Centro de investigación de Xerox Palo Alto, para Alto , una estación de trabajo microcodificada experimental. Inicialmente, su difusión se limitó a PARC y algunas 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), permitió a los desarrolladores depurar tanto el sistema operativo Pilot como las aplicaciones de la GUI de ViewPoint mediante un mecanismo de intercambio mundial. Esto permitió que se cambiara todo el "estado" del mundo, y permitió que se depuraran fallas del sistema de bajo nivel que paralizaban todo el sistema. Esta técnica no se escalado muy bien a imágenes de aplicaciones grandes (varios megabytes), por lo que el mundo Pilot / Mesa en versiones posteriores se alejó de la visión de intercambio mundial cuando las máquinas microcodificadas se eliminaron gradualmente en favor de las estaciones de trabajo SPARC y las PC Intel. ejecutar un emulador de Mesa PrincOps para el conjunto de instrucciones de hardware básico.

Mesa se compiló en un lenguaje de máquina de pila, supuestamente con la densidad de código más alta jamás lograda (aproximadamente 4 bytes por declaración de lenguaje de alto nivel). Esto fue promocionado en un artículo de 1981 donde los implementadores del Departamento de Desarrollo de Sistemas de Xerox (entonces, el brazo de desarrollo de PARC), ajustaron el conjunto de instrucciones y publicaron un artículo sobre la densidad del código resultante. [5]

Mesa se enseñó a través del Curso de programación de Mesa que llevó a las personas a través de la amplia gama de tecnología que Xerox tenía disponible en ese momento y terminó con el programador escribiendo un " truco ", un programa viable diseñado para ser útil. Un ejemplo real de tal hack es el BWSMagnifier, que fue escrito en 1988 y permitía a las personas ampliar secciones de la pantalla de la estación de trabajo según lo definido por una ventana redimensionable y un factor de ampliación variable. Los programadores de Mesa capacitados de Xerox estaban bien versados ​​en los aspectos fundamentales de las GUI, las redes, las excepciones y la programación de subprocesos múltiples, casi una década antes de que se convirtieran en herramientas estándar del sector.

Dentro de Xerox, Mesa fue finalmente reemplazada por el lenguaje de programación Cedar . Muchos programadores y desarrolladores de Mesa dejaron 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 [ editar ]

Semántica [ editar ]

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 los asignadores de montones pudieran escribirse en Mesa. [6]

Debido a su estricta separación entre interfaz e implementación, Mesa permite una verdadera compilación incremental y fomenta la arquitectura y la programación independiente de 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 abundantes instalaciones para el manejo de excepciones , con cuatro tipos de excepciones. Tenía soporte para la sincronización de subprocesos a través de monitores. Mesa fue el primer idioma en implementar monitor BROADCAST, un concepto introducido por el sistema operativo Pilot. [7]

Sintaxis [ editar ]

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 mediante las palabras clave BEGIN y END en lugar de llaves . En Mesa, todas las palabras clave están escritas en mayúsculas. [1]

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

Cuando los diseñadores de Mesa quisieron implementar una instalación de excepción, contrataron a un M.Sc. Graduado de Colorado que había escrito su tesis sobre instalaciones de manejo de excepciones en lenguajes algorítmicos. Esto llevó a la instalación de excepciones más rica de su época, con las primitivas SEÑAL , ERROR , ABORTAR , REINTENTAR , CAPTURAR y CONTINUAR . Debido a que el lenguaje no tenía controles de seguridad de tipos para verificar la cobertura total para el manejo de señales, las excepciones no detectadas eran una causa común de errores en el software publicado.

Cedro [ editar ]

Mesa fue el precursor del lenguaje de programación Cedar. [8] [9] Las principales adiciones de Cedar fueron 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 con seguridad de tipos de paquetes de software de múltiples módulos, para garantizar una ejecución determinista y prevenir pérdidas de memoria .

Descendientes [ editar ]

  • El Departamento de Defensa de Estados Unidos se acercó a Xerox para utilizar Mesa para su lenguaje de programación "IronMan", pero Xerox se negó debido a objetivos en conflicto. Los empleados de Xerox PARC argumentaron que Mesa era una ventaja patentada que hacía que los ingenieros de software de Xerox fueran más productivos que los ingenieros de otras empresas. En cambio, el Departamento de Defensa finalmente eligió y desarrolló el lenguaje de programación Ada a partir de los candidatos.
  • El Star Desktop original evolucionó a ViewPoint Desktop y más tarde se convirtió en GlobalView, que fue portado a varias plataformas Unix, como SunOS Unix y AIX . Se escribió un compilador Mesa to C y se compiló el código resultante para la plataforma de destino. Esta fue una solución viable, pero hizo que fuera casi imposible desarrollar en las máquinas Unix ya que el poder del compilador Mesa y la cadena de herramientas asociada se perdió con este enfoque. Hubo cierto éxito comercial en las estaciones de trabajo Sun SPARC en el mundo editorial, pero este enfoque resultó en aislar el producto de las oportunidades de mercado reducidas.
  • En 1976, durante un año sabático en Xerox PARC, Niklaus Wirth conoció a Mesa, que tuvo una gran influencia en el diseño de su lenguaje Modula-2 . [10]
  • Java se refiere explícitamente a Mesa como predecesor. [11]

Ver también [ editar ]

  • Historia de la interfaz gráfica de usuario

Referencias [ editar ]

  1. ↑ a b c 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-05-2019.
  2. ^ Mesa , Grupo de preservación de software
  3. ^ Perry, TS (mayo de 1988). " ' PostScript' imprime cualquier cosa: un historial de casos". Espectro IEEE . 25 (5): 42–46. doi : 10.1109 / 6.4550 .
  4. ^ Mesa Language Manual , capítulo 7. (El manual usa el término módulo para referirse a un archivo fuente).
  5. ^ Dulce, Richard; Sandman, James (marzo de 1982), "Análisis empírico del conjunto de instrucciones Mesa" , Actas de ASPLOS I del primer simposio internacional sobre soporte arquitectónico para lenguajes de programación y sistemas operativos
  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 .
  7. ^ Lampson, Mayordomo 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 . 
  8. ^ Lampson, Butler W. Una descripción del lenguaje de cedro . Informe técnico 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 . 
  10. ^ Wirth, Niklaus (2007). "Modula-2 y Oberon" . Actas III Congreso de Historia de los Lenguajes de Programación . San Diego: 3-1–3-10. CiteSeerX 10.1.1.91.1447 . doi : 10.1145 / 1238844.1238847 . ISBN  978-1-59593-766-7..
  11. ^ Gosling, James ; Joy, Bill ; Steele, Guy ; Bracha, Gilad . Especificación del lenguaje Java (2ª ed.).

Enlaces externos [ editar ]

  • 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 , Don Gillies, empleado de Xerox SDD / ISD, 1984-86.
  • Teitelman, Warren (abril de 1984). "Un recorrido por el cedro". Software IEEE . 1 (2): 44–73. CiteSeerX  10.1.1.105.3163 . doi : 10.1109 / ms.1984.234050 .