Postscriptum

Postscriptum
Data pierwszej wersji 1982
Paradygmat wieloparadygmat  : zorientowany na stos , proceduralny
Deweloper Adobe Systems
Ostatnia wersja 3 (1997)
Pisanie na maszynie dynamiczny, mocny
Wpływem Naprzód
Pod wpływem PDF
Wdrożenia Adobe PostScript , TrueImage , Ghostscript
Rozszerzenie pliku ps
Postscriptum Charakterystyka
Rozbudowa .ps
Typ MIME application/postscript
PUID fmt / 501 , x-fmt / 408 , x-fmt / 407 , x-fmt / 406 , x-fmt / 91
Opracowany przez Cegła suszona na słońcu
Typ formatu format pliku do druku
Pochodzenie Encapsulated PostScript

PostScript to język opisu strony opracowany przez firmę Adobe . Opiera się na wektorowych recepturach większości jego elementów. Wie również, jak przetwarzać obrazy rastrowe (punkt po punkcie).

Ten międzyplatformowy język umożliwia uzyskanie jednego pliku zawierającego wszystkie elementy opisujące stronę (teksty, obrazy, czcionki, kolory itp.).

PostScript stał się praktycznie standardem, większość drukarek laserowych zawiera interpreter i może bezpośrednio przetwarzać dokument opisany w tym formacie. W pozostałych przypadkach konieczne jest użycie wejściowego filtru programowego, aby przekonwertować język PostScript do formatu rastrowego zrozumiałego dla tych drukarek.

Rozwój PostScript został zatrzymany przez Adobe od 2007 roku, dzięki czemu PDF może przejąć kontrolę.

Inni potomkowie PostScript to:

Język

PostScript to kompletny język, który umożliwia kodowanie dowolnego algorytmu . Chociaż jest całkiem możliwe pisanie takich programów bezpośrednio, są one zwykle tworzone przez inne programy, takie jak sterowniki drukarek.

PostScript jest nierozerwalnie związany ze środowiskiem, w którym będzie wykonywany. Biorąc pod uwagę całkowicie dynamiczny charakter tego języka, w rzeczywistości będzie on interpretowany .

Tłumacz działa poprzez manipulowanie stosem i kilkoma słownikami. Stos jest używany jako tymczasowe miejsce przechowywania parametrów funkcji, a następnie ich wyników. Słowniki pozwalają na przechowywanie zmiennych, a także kodu funkcji.

Program PostScript składa się z sekwencji słów oddzielonych spacjami, tabulatorem (TAB), znakiem powrotu karetki (CR), wysuwem wiersza (LF) lub komentarzami. Interpreter analizuje sekwencyjnie każde słowo programu PostScript, działając jako kalkulator w odwrotnej notacji polskiej , tj. Każde słowo jest oceniane, a następnie wynik (y) tej oceny jest umieszczany na wierzchu stosu i tak dalej.

Przykład, aby wykonać proste obliczenia numeryczne b 2 - 4 ac , można to zakodować: b b mul 4 a mul c mul sub

PostScript obsługuje następujące pięć typów słów:

Stała liczbowa integer ( 123) lub real ( 3.14159), ocena dodaje wartość liczbową na szczyt stosu; Stała łańcuchowa są to tablice znaków w nawiasach, np. (Abc)reprezentuje napis „Abc”; Odniesienie do nazwy /areprezentuje nazwę „a”, której można użyć do nazwania zmiennej lub funkcji; odniesienie jest dodawane na szczycie stosu; Nazwisko może to być nazwa predefiniowanej lub utworzonej procedury, zmiennej, słownika; nazwa jest sprawdzana w aktywnych słownikach, a następnie, jeśli jest wartością, jest umieszczana na stosie, a jeśli jest funkcją, jest wywoływana (wykonywana); oceniając funkcję, można by użyć wartości na szczycie stosu i zastąpić je dowolnymi wynikami; Budowniczy cztery konstruktory pozwalają na tworzenie struktur danych o zmiennej wielkości. Składają się z par znaków, które wyznaczają początek i koniec struktury: Otwór konstruktora umieszcza znak na stosie, a następnie kolejno wszystkie elementy tej konstrukcji. Zamknięcie konstruktora pobiera wszystkie elementy ze znaku otwarcia w stosie, „buduje” odpowiednią strukturę i umieszcza ją na stosie.

Słowniki to tabele zawierające tylko dwie kolumny:

Dzięki tej właściwości słownik działa więc jak tablica z jedną kolumną, ale której indeks może być dowolnego typu, bez ograniczania się do prostego zakresu liczb całkowitych.

Słownik jest zarządzany jak tablica mieszająca (dzięki funkcji skrótu predefiniowanej przez sam język), której początkowy rozmiar można zdefiniować przy tworzeniu, zgodnie z liczbą par nazwa-wartość, jaką chce się przechowywać. ogranicz liczbę kolizji (jednak PostScript wie, jak dynamicznie zmieniać rozmiar słownika w zależności od liczby kolizji nazw lub szybkości ich wypełniania). Słowniki PostScript są używane głównie (ale nie wyłącznie) do (dynamicznego) definiowania zakresu zmiennych nazwanych i do których istnieją odniesienia w innych miejscach w języku.

Wśród operatorów predefiniowanych najważniejsza jest defmożliwość dodania asocjacji nazwa-wartość w aktualnym słowniku, co pozwala definiować nowe zmienne wraz z ich wartością lub modyfikować ich wartość, a także definiować lub redefiniować funkcje. Dlatego widzimy, że w PostScript, kod wykonywalny to dane prawie jak każdy inny i można go tworzyć w locie, modyfikować.

Przykłady:

W ostatnim przykładzie powyżej nic nie wskazuje na to, że zmienna o nazwie „counter” będzie taka sama, jak ta, z której wyodrębniliśmy wartość. Rzeczywiście, „def” jest używane do przechowywania asocjacji nazwa-wartość tylko w bieżącym słowniku, a nie w żadnym innym słowniku w stosie zasięgu. Jednak odczytanie zmiennej licznika (drugie odniesienie w powyższym kodzie) może zwrócić wartość zmiennej znalezionej w słowniku innym niż bieżący słownik (lub wygenerować wyjątek w czasie wykonywania, jeśli żaden ze słowników na stosie zakresów nie zawierają zmienną o tej nazwie): w tym przypadku nowa zmienna zostanie dodana przez „def” w bieżącym słowniku, bez modyfikowania oryginalnej zmiennej, w której została znaleziona, co w ten sposób zachowa swoją wartość; jednakże tak długo, jak aktywny słownik jest aktywny, nowa zmienna ukryje stary. Urządzenie to umożliwia zatem zarządzanie zmiennymi lokalnymi w inny sposób niż poprzez względną pozycję w stosie.

PostScript może rozróżniać odwołania do zmiennej (według nazwy podanej po a /) i odniesienia do jej wartości. Jednak odwołanie nie jest rozpoznawane w żadnym słowniku o określonym zakresie, dopóki nie zostanie skojarzone ze słownikiem w celu wyszukania go. Gdy nazwa jest używana bez /inicjału, jest ona natychmiast szukana podczas kompilacji funkcji w aktywnych słownikach o określonym zakresie (zaczynając od bieżącego słownika podczas kompilacji, a nie tego, który będzie aktywny po wykonaniu funkcji), a następnie nazwa zmiennej jest zastępowana w czasie wykonywania na stosie wartością skojarzoną z tą nazwą w słowniku, w którym została znaleziona.

Ponadto, aby stworzyć pełne odniesienie do dobrze zdefiniowanej zmiennej, a nie jej wartość lub inną zmienną o tej samej nazwie w innym słowniku, musimy wskazać nie tylko nazwę tej zmiennej, ale także odniesienie do słownika, który ją zawiera gdzie należy go szukać. Jeśli słownik nie jest przywoływany (na przykład przez brak przedrostka a /), rozpoznawanie nazw jest dynamiczne i dlatego może odwoływać się do różnych zmiennych w zależności od kontekstu wykonania.

PostScript definiuje zatem dwa różne konteksty użycia odniesienia do zmiennej:

To zachowanie przy wyłuskiwaniu zmiennej (dostęp do odczytu) jest zatem bardzo różne od zachowania przy przechowywaniu zmiennej, z defktórą zawsze odbywa się zgodnie z bieżącym słownikiem tylko w momencie wykonania.

Operatorzy

każdy Muzyka pop - usuwa element ze stosu
dowolna 1 dowolne 2 wymiana wszystkie 2 wszystkie 1 zamienić dwa elementy
... ...
numer 1 numer 2 Dodaj suma zwraca liczbę 1 plus liczbę 2
numer 1 numer 2 div iloraz zwraca liczbę 1 podzieloną liczbę 2
liczba całkowita 1 liczba całkowita 2 idiv iloraz zwraca liczbę całkowitą 1 podzieloną liczbę całkowitą 2
... ...

Realizacja

PostScript jest udostępniany na licencji firmy Adobe. Istnieje jednak bezpłatny interpreter PostScript, Ghostscript .

Uwagi i odniesienia

  1. (w) „  Jak firma Adobe stała się odnoszącą sukcesy firmą SaaS o wartości 95 miliardów dolarów  ” w zakresie produktów ,15 stycznia 2018 r(dostęp 14 marca 2019 )
  2. Nicolas Six, „  Charles Geschke, pionier komputerowy i współzałożyciel Adobe, nie żyje  ”, Le Monde ,19 kwietnia 2021 r( czytaj online )

Zobacz też

Powiązane artykuły

Linki zewnętrzne