GRAS (Programmiersprache)

GRAS (Grafiksymbiose-System) war eine Programmiersprache, die zur Schrift 2. Vektor-Grafikzeichentrickfilme geschaffen ist. GRAS war dem GRUNDLEGENDEN in der Syntax ähnlich, aber hat zahlreiche Instruktionen hinzugefügt, um 2. Gegenstand-Zeichentrickfilm, einschließlich Schuppens, Übersetzung, Folge und Farbwechsel mit der Zeit anzugeben. Es ist schnell ein Erfolg mit der künstlerischen Gemeinschaft geworden, die mit dem neuen Medium der Computergrafik experimentierten, und am berühmtesten wegen seines Gebrauches durch Larry Cuba bleiben werden, um das ursprüngliche "Angreifen des Todessterns zu schaffen, wird nicht leichter" Zeichentrickfilm in Star Wars sein. Eine spätere Version, die angepasst wurde, um Rastergrafik zu unterstützen, war als ZGrass bekannt.

Geschichte

GRAS

Die ursprüngliche Version des GRASES wurde von Tom DeFanti für seinen 1974 Ohio Doktorarbeit der Staatlichen Universität entwickelt. Es wurde auf einem PDP-11/45 Fahren eines Vektoren Allgemein 3DR Anzeige entwickelt, und weil der Name einbezieht, war das rein Vektor-Grafikmaschine. GRAS hat mehrere Vektoren ziehende Befehle eingeschlossen, und konnte Sammlungen von ihnen in eine Hierarchie organisieren, die verschiedenen Zeichentrickfilm-Effekten auf ganze "Bäume" des Images sofort (versorgt in der Reihe) anwendend. Es war diese Version, die für den Zeichentrickfilm der Star Wars verwendet wurde, wenn Sie diesen Teil des Films wiederbeobachten, können Sie Gegenstand-Bäume sehen ins Image in verschiedenen Zeiten knallen.

Nach der Graduierung hat sich DeFanti zur Universität Illinois, Chikagoer Kreises bewegt. Dort ist er mit Dan Sandin Soldat geworden, und zusammen haben sie das Kreisgrafikhabitat (heute bekannt als das Elektronische Vergegenwärtigungslaboratorium oder EVL) gebildet. Sandin hatte sich der Universität 1971 angeschlossen und in Angriff genommen zu bauen, woran er als die Videoversion eines Synthesizers von Moog gedacht hat, der als der Bildverarbeiter von Sandin oder IP bekannt ist. Der IP war ein analoger Computer, der zwei Videoeingänge genommen hat, sie gemischt hat, die Ergebnisse gefärbt hat, und dann Fernsehproduktion erfrischt hat.

DeFanti hat das vorhandene GRAS-System als der Eingang zum IP hinzugefügt, den Verarbeiter des GRASES/IMAGES schaffend, der überall in der Mitte der 1970er Jahre verwendet wurde. Um das System nützlicher zu machen, haben DeFanti und Sandin alle Sorten von "einmaligen" Befehlen zum vorhandenen GRAS-System hinzugefügt, aber diese Änderungen haben auch die Sprache beträchtlich idiosynkratischer gemacht. 1977 hat ein anderes Mitglied des Habitats, Nola Donato, viele Kontrollstrukturen des GRASES in allgemeinere Formen neu entworfen, auf den beträchtlich saubereren GRASS3 hinauslaufend.

Die Arbeit der Star Wars von Larry Cuba basiert auf einem hinteren Vorsprung, der sich das GRAS-System verfilmen lässt, das auf einem Vektor-Terminal läuft. Da das Terminal die Vektoren (und Punkte) im inneren Gedächtnis hält, ist das System im Stande, grundlegende Transformationen - Schuppen, Folge, usw. - im schritthaltenden zu machen, ohne mit dem Computer oder der Sprache aufeinander zu wirken. Es ist nur während der Zeiten, wenn neue Landschaft präsentiert wird, dass die viel langsameren Kommunikationen mit der GRAS-Sprache stattfinden. Das kann in der Folge gesehen werden, weil die anfänglichen Abteilungen des Films den Todesstern zeigen, der rotieren wird lässt und erklettert sehr schnell, während die späteren Abteilungen, die Flug unten vortäuschen, der Graben verlangt, dass neue Landschaft in vom GRAS "Bäume" paginiert wird, der leicht sichtbar ist.

ZGrass und UV-1

1977 wurde DeFanti in Jeff Frederiksen, einen Span-Entwerfer eingeführt, der an Dave Nutting Associates arbeitet. Nutting war durch Auf halbem Wege, die Videospiel-Abteilung von Verdammten zusammengezogen worden, um einen standardisierten Grafikfahrer-Span zu schaffen. Sie haben vorgehabt, es in den meisten ihrer zukünftigen Arkade-Spiele, sowie eine Videospiel-Konsole zu verwenden, sie arbeiteten, auf dem sich später in Astrocade verwandeln würde. Auf halbem Wege hat sich ganz für das Sehen der GRAS-Sprache interessiert, die auf ihrem System läuft, und hat sich DeFanti vertraglich verpflichtet, es zur Plattform zu tragen. Mehrere Leute am Habitat, sowie einigen von Nutting, haben am Projekt gearbeitet, das sie als der Z Kasten gekennzeichnet haben. GRASS3, der darauf läuft, ist Zgrass geworden.

Der Z-Kasten war eine Rastergrafikmaschine verschieden von den ursprünglichen GRAS-Systemen so, während der grösste Teil des GRASS3 Stils in Zgrass aufrechterhalten wurde, hat es mehrere Rasterimages gewidmete Befehle hinzugefügt. Das hat einen umfassenden Satz von Bit-Block-Übertragungsbefehlen eingeschlossen, um Elfen, etwas vorzutäuschen, was die Hardware nicht eingeschlossen hat. Die Arbeit würde durch Auf halbem Wege nie veröffentlicht, aber der Kreis würde Maschinen erzeugen, die darauf als der Datamax UV-1 gestützt sind.

Die letzte Version des GRASES war RT/1, ein Hafen des GRASES zu anderen Plattformen, die die Sprache vom Anzeigemodell geschieden haben und ihm erlaubt haben, zu anderen Plattformen getragen zu werden. Versionen haben für DOS, Windows, das SGI Plattform-Verwenden OpenGL, HP-UX, AIX, Macintosh und Amiga bestanden. Die Sprache bleibt ähnlich den früheren Versionen, so ist der Grund für die Namensänderung unklar.

Beschreibung

:This-Beschreibung basiert auf den ursprünglichen Verdammten Handbüchern sowie.

Zgrass hat auf einem Standardsatz von GRUNDLEGENDEN Befehlen basiert und hat den grössten Teil seiner Syntax verwendet. Wo sich Zgrass vom GRUNDLEGENDEN unterschieden hat, war, dass alle Befehle tatsächlich Funktionen waren und Werte zurückgegeben haben, die der C Programmiersprache ähnlich sind. Wenn es keinen offensichtlichen Rückwert gab, wurde es erwartet, dass eine Funktion 1 zurückkehren würde, wenn es, und 0 erfolgreich wäre, wenn es gescheitert hat. Zum Beispiel würde der Befehl im GRUNDLEGENDEN ungesetzlich sein, aber in Zgrass würde das, 1 drucken, der der durch den zweiten zurückgegebene Wert ist, "Mich erfolgreich Produktion die Schnur '10'" bedeutend.

Programme in Zgrass sind "Makros" genannt geworden, und haben als Schnuren versorgt. Beide dieser Kuriositäten waren absichtlich, weil Zgrass jeder Schnur erlaubt hat, ein Programm zu werden. Zum Beispiel, definiert eine Schnur (kein Bedürfnis nach einem $ als im GRUNDLEGENDEN), einen Schnipsel des Codes von Zgrass enthaltend. Einfach das Schreiben von diesem Punkt darauf würde den Befehl (E) innen führen. Diese Eigenschaft kann im Platz des traditionelleren Befehls vom GRUNDLEGENDEN verwendet werden, aber hat den zusätzlichen Vorteil, einen gut definierten Namen im Vergleich mit einer undurchsichtigen Linienzahl zu haben. Außerdem bleibt der Befehl eine Schnur, und kann an der Durchlaufzeit mit Standardschnur-Operationen manipuliert werden.

Die meisten GRUNDLEGENDEN Dolmetscher des Zeitalters haben den Eingangstext in eine "tokenized" Version umgewandelt, in der jeder der Befehle durch eine einzelne Zahl (normalerweise ein Byte lang) ersetzt wurde. Das hat das Programm schneller laufen lassen, weil es ständig die Befehle von den Schnuren jedes Mal nicht decodieren musste. Der Gebrauch von Zgrass von Schnur-basierten Makros hat das schwierig gemacht, so haben sie sich mit tokenization nicht gesorgt. Stattdessen haben sie einen Bearbeiter eingeschlossen, der auf jedem besonderen Makro verwendet werden konnte, es oft beschleunigend. Programme würden häufig aus einer Mischung von kompilierten und unkompilierten Makros bestehen.

Linienzahlen waren in Zgrass fakultativ, und sind normalerweise nur auf Linien erschienen, die das Ziel von a waren. Die meisten GRUNDLEGENDEN Dolmetscher haben Linienzahlen für jede Linie des Codes verlangt, aber das war wegen ihres Gebrauches im "Linienredakteur" - wenn Sie diese Linie editieren mussten, war die einzige Weise, sich darauf zu beziehen, durch die Zahl. Zgrass hat einen fortgeschritteneren Redakteur des vollen Schirms verwendet, der dieses Bedürfnis beseitigt hat. Zgrass hat jeder Schnur erlaubt, als eine "Linienzahl" zu handeln, und war beide gültig. Zgrass hat auch namenlose Zweige mit der Instruktion eingeschlossen, die vorankommen oder eine gegebene Zahl von Linien unterstützen würde.

In Übereinstimmung mit seinem ursprünglichen Zweck als eine Grafiksprache hat Zgrass zahlreiche Befehle für die einfache Zeichnung eingeschlossen. Das Koordinatensystem von Zgrass hat auf diesem des ursprünglichen Grafikspans basiert, den Nutting, gestützt auf 320×202 Bratrost entworfen hatte. Der Astrocade, aus unbekannten Gründen, verwendete nur Hälfte der Entschlossenheit, 160×101 Anzeige. Um potenzielle kartografisch darstellende Probleme zu vermeiden, wurde der Nullpunkt des Koordinatenraums ins Zentrum des Schirms gelegt. −160 zu 160 waren X Positionen, und-101 zu 101 gültigen Y Positionen gültig. Für den Gebrauch auf Astrocade haben Sie die positiven Positionen nur verwendet, wohingegen auf dem UV-1 der komplette Raum verfügbar war.

Zgrass hat einen ziemlich ganzen Satz von Reihe-Funktionen hinzugefügt, weil Reihe in der Grafik weit verwendet wird. Das hat die Fähigkeit eingeschlossen, Teile der Anzeige in eine Reihe als ein bitmap "zu gewinnen", der dann als jeder andere grafische Artikel manipuliert werden konnte. Das hat Zgrass erlaubt, einer Elfe ähnliche Funktionalität in die Sprache, etwas einzuschließen, was die Hardware von Nutting nicht eingeschlossen hat. Eine andere Eigenschaft, die Astrocade nicht eingeschlossen hat, war die Fähigkeit, Reihe mit jeder angemessenen Geschwindigkeit zu bearbeiten, so hat der UV-1 gelieferten FPU von Zilog für die zusätzliche Leistung eingeschlossen.

Zgrass hat drei Prioritäten eingeschlossen (genannt Niveaus), der Makros erlaubt hat, normalerweise, oder im "Vordergrund" oder den "Hintergrund"-Niveaus geführt zu werden. Das hat eine einfache Form des Mehrbeschäftigens hinzugefügt, das auf einer Zeichentrickfilm-orientierten Sprache schrecklich nützlich war. Spielautoren konnten Steuerknüppel lesende Routinen in einen Makrosatz legen, um im Vordergrund zu laufen, und dann würde der Steuerknüppel automatisch gelesen, wann auch immer die aktuelle Makro-Zeichnung vollendet hat. In den Vordergrund gelegte Funktionen sind vorher auch gelaufen, und wurden häufig für Zeitmesser und andere "niedrige Latenz" Bedürfnisse verwendet. Zgrass hat eine Funktion eingeschlossen, die Makros auf einer zeitlich festgelegten Basis nennen würde, die Durchführung von Zeitmessern sehr leicht machend.

Zgrass hat auch eine Reihe von Befehlen eingeschlossen, die BEDIENUNGSFELD/M "bedeckt" haben, das der Platte erlaubt hat, zugegriffen zu werden, ohne zum schnellen Befehl abzugehen. Sie konnten Makros zu genannten Dateien leicht sparen, und sie ebenso laden, Ihnen erlaubend, Programme zu bauen, indem Sie verschiedene Makros von der Platte in ein großes Programm geladen haben. Die Befehle haben auch automatisch eine Aushilfskopie von jedem sparen lassen. Ähnliche Eigenschaften wurden für die Kassette-Band-Lagerung unterstützt, aber sonderbar wurde die Syntax beschädigt, Plattenbefehle waren D-something, wie, während Band-Befehle ETWAS-BAND, wie waren.

Mit von zufällig ausgewählten Modulen gebauten Programmen musste Zgrass bessere Kontrolle über seine Variablen haben als GRUNDLEGEND. IM GRUNDLEGENDEN Sind alle Variablen so "global", wenn zwei Unterprogramme beider die Variable (sehr üblich) dann verwenden, konnten sie jeden die Werte eines anderen veranlassen, die hart führen, bei Problemen die Fehler zu beseitigen. Unter Zgrass würde ein Programmierer, der zwei Module lädt, fast sicher finden, dass sowohl verwendet ich als ein Schleife-Schalter, als auch so Probleme verursachen konnte. Um dieses Problem zu richten, hat Zgrass erlaubt, Kleinbuchstaben für Variablen zu verwenden, in welchem Fall die Variable nur zu diesem Makro lokal war. Sonderbar machen die mit der Sprache versorgten Beispiele weit verbreiteten Gebrauch dieser Eigenschaft, potenziell verwirrende neue Programmierer nicht, die nicht bewusst sein könnten, die Eigenschaft besteht sogar.

Beispiel

SINCURVE = [VERANLASSEN "WIE IST DER AUSGLEICH?"

EINGANG HAT AUSGEGLICHEN

x =-160

angle=0

SPITZEN SIE OFFSET+x, SÜNDE (Winkel) *80,3 AN

angle=angle+2

WENN (x=x+1), der einfach durch das Schreiben in den Befehl schnell, oder von anderen Makros oder Programmen genannt werden kann. SINCURVE verwendet zwei lokale Variablen, und, sowie eine globale Variable.

/ ist eine Modifizierung des GRUNDLEGENDEN Originals, der um den Eingang nicht bitten wird, wenn der Benutzer es in die Befehl-Linie tippt, wenn er das Makro nennt. In diesem Fall das Schreiben wird auf das schnelle Erscheinen und das Programm hinauslaufen, das auf den Eingang wartet, wohingegen das Schreiben das schnelle auslassen wird und AUSGLEICH 30 automatisch zugeteilt wird. Das erlaubt einem einzelnen Makro, sowohl interaktiv als auch innerhalb eines Programms als eine Funktion verwendet zu werden.

ist ein Beispiel von einem der vielen in die Sprache von Zgrass eingeschlossenen Grafikbefehle. verlangt einen X und Y Position, sowie eine Farbe. In diesem Beispiel hat der Benutzer geliefert bewegt die x Position der Kurve auf dem Schirm, während die Y Position durch die Hemmschuh-Funktion geliefert wird, die angemessen für die Anzeige (in diesem Fall, 80mal) vergrößert ist. Die Farbe wird im letzten Eingang geliefert, und ist in diesem Fall 3. Der UV-1 hat Farbenregister verwendet, so 3 hat keine besondere Farbe, aber eine von der aktuellen Palette ausgewählte Farbe einbezogen.

Ebenfalls interessant zu sein. Es legt eine Zunahme, vor dem Test, eine Eigenschaft, die nicht normalerweise im GRUNDLEGENDEN verfügbar ist. In diesem Fall, WENN gesagt wird, wenn wahr, zu rufen, der zwei Linien zurückkehren wird und im Platz von a verwendet werden kann.

Referenzen

Zitate

Bibliografie

Weiterführende Literatur

Links


Source is a modification of the Wikipedia article GRASS (programming language), licensed under CC-BY-SA. Full list of contributors here.
Eine freie Seele / Adolphe Menjou
Impressum & Datenschutz