Mesa (lenguaje de programación)
Mesa es un lenguaje de programación desarrollado a fines 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 clave del lenguaje de programación de la época, porque Mesa es un lenguaje de "alto nivel" lenguaje de programación.
Mesa es un lenguaje similar a ALGOL con fuerte soporte para 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. Para usar una biblioteca, un programa o biblioteca de nivel superior debe "importar" las definiciones El compilador 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.
Mesa introdujo varias otras innovaciones en el diseño e implementación de lenguajes, en particular 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 fue el lenguaje de programación del sistema de las estaciones de trabajo Xerox Star posteriores y para el entorno de escritorio GlobalView. Xerox PARC luego desarrolló 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 de red y otros avances Xerox contribuido al campo de la informática.
Historia
Mesa se diseñó originalmente en el Laboratorio de Sistemas Informáticos (CSL), una sucursal del Centro de Investigación 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.
Mesa se adoptó posteriormente 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 Xerox Development Environment (XDE), permitió a los desarrolladores depurar tanto el sistema operativo Pilot como las aplicaciones GUI de ViewPoint mediante un mecanismo de intercambio mundial. Esto permitió que todo el "estado" del mundo para ser intercambiado, y permitió fallas del sistema de bajo nivel que paralizaron todo el sistema para ser depurado. Esta técnica no se adaptó 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 mundo cuando las máquinas microcodificadas se eliminaron a favor de las estaciones de trabajo SPARC y las PC Intel. ejecutando un emulador Mesa PrincOps para el conjunto de instrucciones básicas de hardware.
Mesa se compiló en un lenguaje de máquina de pila, supuestamente con la densidad de código más alta jamás alcanzada (aproximadamente 4 bytes por declaración de lenguaje de alto nivel). Esto se promocionó en un documento 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 documento sobre la densidad de código resultante.
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 un truco de este tipo es BWSMagnifier, que se escribió en 1988 y permitía a las personas ampliar secciones de la pantalla de la estación de trabajo definidas por una ventana de tamaño variable y un factor de aumento variable. Los programadores de Mesa capacitados de Xerox estaban bien versados en los fundamentos 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 comercio.
Dentro de Xerox, Mesa finalmente fue 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 usaron su experiencia con Mesa en el diseño de Modula-2+, y luego 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 del módulo, pero con suficiente flexibilidad en su sistema de tipos para que los asignadores de almacenamiento dinámico pudieran escribirse en Mesa.
Debido a su estricta separación entre la interfaz y la 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 instalaciones ricas en 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 lenguaje en implementar monitor BROADCAST, un concepto introducido por el sistema operativo Pilot.
Sintaxis
Mesa tiene un "imperativo" y "algebraico" sintaxis, 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 se escriben en mayúsculas.
Debido a que PARC's usaba la variante de 1963 de ASCII en lugar de la variante más común de 1967, el conjunto de caracteres de Alto's 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 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 apunta hacia la izquierda les permitió usarla para el operador de asignación, como había sido originalmente en ALGOL.
Cuando los diseñadores de Mesa quisieron implementar una instalación excepcional, contrataron a un M.Sc. graduado de Colorado que había escrito su tesis sobre facilidades de manejo de excepciones en lenguajes algorítmicos. Esto condujo a la función de excepción más completa de su época, con primitivas SEÑAL, ERROR, ABORT , REINTENTAR, CATCH y CONTINUAR. Como el lenguaje no tenía comprobaciones de seguridad de tipos para verificar la cobertura total del manejo de señales, las excepciones no detectadas eran una causa común de errores en el software publicado.
Cedro
Mesa fue el precursor del lenguaje de programación Cedar. 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 los paquetes de software de varios módulos, para garantizar la ejecución determinista y evitar pérdidas de memoria.
Descendientes
- El Departamento de Defensa de los Estados Unidos se acercó a Xerox para utilizar Mesa para su lenguaje de programación "IronMan" (ver requisitos de idioma de Steelman), pero Xerox disminuyó debido a objetivos conflictivos. Los empleados de Xerox PARC argumentaron que Mesa era una ventaja patentada que hacía que los ingenieros de software Xerox fueran más productivos que los ingenieros de otras empresas. En cambio, el Departamento de Defensa eligió y desarrolló el lenguaje de programación Ada de los candidatos.
- El Star Desktop original se convirtió en el escritorio ViewPoint 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 a C y se compiló el código resultante para la plataforma de destino. Esta era una solución viable, pero hizo casi imposible desarrollarse en las máquinas Unix, ya que el poder del compilador Mesa y la cadena de herramientas asociada se perdió utilizando 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 a oportunidades de mercado estrechas.
- En 1976, durante un sabático en Xerox PARC, Niklaus Wirth se familiarizó con Mesa, que tuvo una gran influencia en el diseño de su lenguaje Modula-2.
- Java se refiere explícitamente a Mesa como predecesor.
Contenido relacionado
Autenticación de acceso básica
Vickers wellington
Bartolomeu de Gusmão