Posdata

Posdata
Fecha de la primera versión mil novecientos ochenta y dos
Paradigma multiparadigma  : orientado a pila , procedimental
Desarrollador Adobe Systems
Última versión 3 (1997)
Mecanografía dinámico, fuerte
Influenciado por Adelante
Influenciado PDF
Implementaciones Adobe PostScript , TrueImage , Ghostscript
Extensión de archivo PD
Posdata Caracteristicas
Extensión .ps
Tipo de Mimica application/postscript
PUID fmt / 501 , x-fmt / 408 , x-fmt / 407 , x-fmt / 406 , x-fmt / 91
Desarrollado por Adobe
Tipo de formato formato de archivo de impresión
Origen de PostScript encapsulado

PostScript es un lenguaje de descripción de páginas desarrollado por Adobe . Se basa en formulaciones vectoriales de la mayoría de sus elementos. También sabe cómo procesar imágenes rasterizadas (punto por punto).

Este lenguaje interplataforma permite obtener un único archivo que comprende todos los elementos que describen la página (textos, imágenes, tipografías, colores, etc.).

PostScript se ha convertido prácticamente en un estándar, la mayoría de las impresoras láser contienen un intérprete y pueden procesar directamente un documento descrito en este formato. En los demás, es necesario utilizar un filtro de software de entrada para convertir el lenguaje PostScript al formato raster comprensible para estas impresoras.

Adobe ha detenido el desarrollo de PostScript desde 2007, por lo que PDF puede hacerse cargo.

Otros descendientes de PostScript son:

El lenguaje

Postscript es un lenguaje completo, que permite la codificación de cualquier algoritmo . Aunque es muy posible escribir estos programas directamente, normalmente los crean otros programas, como los controladores de impresora.

Postscript es inseparable del entorno en el que se ejecutará. Dada la naturaleza totalmente dinámica de este lenguaje, de hecho será interpretado .

El intérprete trabaja manipulando una pila y varios diccionarios. La pila se utiliza como almacenamiento temporal para los parámetros de función y luego para sus resultados. Los diccionarios permiten el almacenamiento de variables, así como el código de funciones.

Un programa PostScript se compone de una secuencia de palabras separadas por espacios, tabulación (TAB), retorno de carro (CR), salto de línea (LF) o comentarios. El intérprete analiza secuencialmente cada palabra del programa PostScript operando como una calculadora en notación polaca inversa , es decir, se evalúa cada palabra, luego el resultado de esa evaluación se coloca en la parte superior de la pila, y así sucesivamente.

Por ejemplo, para realizar el cálculo numérico simple b 2 - 4 ac , esto se puede codificar: b b mul 4 a mul c mul sub

PostScript admite los siguientes cinco tipos de palabras:

Constante numérica integer ( 123) o real ( 3.14159), la evaluación agrega el valor numérico a la parte superior de la pila; Constante de cadena son matrices de caracteres entre paréntesis, por ejemplo, (Abc)representa la cadena "Abc"; Referencia a un nombre /arepresenta el nombre "a", que se puede utilizar para nombrar una variable o una función; la referencia se agrega a la parte superior de la pila; apellido puede ser el nombre de un procedimiento predefinido o creado, de una variable, de un diccionario; el nombre se busca en los diccionarios activos, luego si es un valor, se coloca en la pila, y si es una función, se llama (ejecuta); evaluar una función podría usar los valores en la parte superior de la pila y reemplazarlos con cualquier resultado; Constructor cuatro constructores le permiten crear estructuras de datos de tamaño variable. Están compuestos por caracteres pareados que delimitan el inicio y el final de la estructura: La apertura del constructor coloca una marca en la pila, luego, sucesivamente, todos los elementos de esta estructura. El cierre del constructor recupera todos los elementos de la marca de apertura en la pila, "construye" la estructura correspondiente y la coloca en la pila.

Los diccionarios son tablas con solo dos columnas:

Con esta propiedad, un diccionario funciona como una matriz con una columna, pero cuyo índice puede ser de cualquier tipo, sin estar restringido a un rango simple de números enteros.

El diccionario se gestiona como una tabla hash (gracias a una función hash predefinida por el propio lenguaje), cuyo tamaño inicial se puede definir en el momento de la creación, según el número de pares nombre-valor que se desee. limitar las ocurrencias de colisiones (sin embargo, PostScript sabe cómo redimensionar dinámicamente un diccionario de acuerdo con el número de colisiones en los nombres o su tasa de llenado). Los diccionarios PostScript se utilizan principalmente (pero no exclusivamente) para definir (dinámicamente) el alcance de las variables nombradas y referenciadas en otras partes del lenguaje.

Entre los operadores predefinidos, el más importante es defque permite agregar una asociación nombre-valor en el diccionario actual, lo que permite definir nuevas variables con su valor, o modificar su valor, y definir o redefinir funciones. Por lo tanto, podemos ver que en Postscript, el código ejecutable son datos casi como cualquier otro, y se pueden crear sobre la marcha, modificar.

Ejemplos:

En el último ejemplo anterior, nada indica que la variable denominada "contador" será la misma de la que extrajimos el valor. De hecho, "def" se usa para almacenar una asociación de nombre-valor solo en el diccionario actual y en ningún otro diccionario de la pila de alcance. Sin embargo, leer la variable de contador (la segunda referencia en el código anterior) puede devolver el valor de una variable que se encuentra en un diccionario que no sea el diccionario actual (o producir una excepción en tiempo de ejecución si ninguno de los diccionarios en la pila de ámbitos no contener una variable con este nombre): en este caso, se agregará una nueva variable por "def" en el diccionario actual, sin modificar la variable original donde se encontró, que por lo tanto mantendrá su valor; sin embargo, mientras el diccionario actual esté activo, la nueva variable ocultará la anterior. Por tanto, este dispositivo permite gestionar variables locales distintas de una posición relativa en la pila.

PostScript puede diferenciar entre referencias a una variable (por su nombre dado después de a /) y referencias a su valor. Sin embargo, la referencia no se resuelve en ningún diccionario de ámbito hasta que se ha asociado con un diccionario para buscarla. Cuando se usa un nombre sin una /inicial, se busca inmediatamente cuando la función se compila en los diccionarios de ámbito activo (comenzando con el diccionario actual durante la compilación y no con el que estará activo cuando se ejecute la función), luego el nombre de la variable se reemplaza en tiempo de ejecución en la pila por el valor asociado con este nombre en el diccionario donde se encontró el nombre.

Además, para crear una referencia completa a una variable bien definida y no su valor u otra variable con el mismo nombre en otro diccionario, debemos indicar no solo el nombre de esta variable, sino también una referencia al diccionario que la contiene y donde debe buscarse. Si no se hace referencia al diccionario (por ejemplo, sin prefijar a /), la resolución de nombres es dinámica y, por lo tanto, puede hacer referencia a diferentes variables según el contexto de ejecución.

Por lo tanto, Postcript define dos contextos distintos para el uso de una referencia a una variable:

Este comportamiento para desreferenciar una variable (acceso de lectura) es, por tanto, muy diferente al de almacenar una variable con el defque siempre se hace según el diccionario actual únicamente en el momento de la ejecución.

Operadores

alguna música pop - elimina el elemento de la pila
cualquiera 1 cualquiera 2 intercambiar los 2 todos 1 intercambiar los dos elementos
... ...
numero 1 numero 2 agregar suma devuelve el número 1 más el número 2
numero 1 numero 2 div cociente devuelve el número 1 dividido el número 2
entero 1 entero 2 idiv cociente devuelve el entero 1 dividido el entero 2
... ...

Implementación

PostScript se proporciona bajo licencia de Adobe Company. Sin embargo, hay un intérprete de PostScript gratuito, Ghostscript .

Notas y referencias

  1. (in) "  Cómo Adobe se convirtió en una empresa exitosa de SaaS de 95.000 millones de dólares  " sobre la ropa del producto ,15 de enero de 2018(consultado el 14 de marzo de 2019 )
  2. Nicolas Six, "  Charles Geschke, pionero de la informática y cofundador de Adobe, ha muerto  ", Le Monde ,19 de abril de 2021( leer en línea )

Ver también

Artículos relacionados

enlaces externos