Newton-Skript - NewtonScript

NewtonScript
Paradigma Prototyp objektorientiert
Entworfen von Walter Smith
Entwickler Apple Computer
Erstmals erschienen 1993 ; Vor 28 Jahren ( 1993 )
Schreibdisziplin Dynamisch
Beeinflusst von
Selbst , Dylan
Beeinflusst
Io

NewtonScript ist eine prototypbasierte Programmiersprache, die entwickelt wurde, um Programme für die Newton- Plattform zu schreiben . Es ist stark von der Programmiersprache Self beeinflusst, wurde jedoch modifiziert, um den Anforderungen mobiler und eingebetteter Geräte besser gerecht zu werden .

Geschichte

Am 3. August 1993 stellte Apple das Apple Newton MessagePad vor . Das Gerät hatte 640 KB RAM und 4 MB ROM und lief auf einem 20 MHz Acorn RISC-Rechner.

Die Hauptabsicht hinter dem Newton-Projekt war es, ein Gerät zu entwickeln, das einen Computer ersetzen kann, während es tragbar ist. Mit begrenzter Batterie und begrenztem Speicher suchten die Entwickler nach einer Programmiersprache, die diese Herausforderungen meistern kann.

Die Entwickler sahen sich die Sprache C++ an, stellten jedoch fest, dass es ihr an Flexibilität mangelte. Sie konzentrierten sich auf prototypbasierte Sprachen und waren beeindruckt von Smalltalk und Self. Gleichzeitig entwickelte Apple eine weitere dynamische Programmiersprache namens Dylan , die ein starker Kandidat für die Newton-Plattform war.

Sowohl Self als auch Dylan wurden jedoch außer Betracht gelassen, da sie sich beide in der Entwicklungsphase für eine ordnungsgemäße Integration befanden.

Stattdessen entwickelte ein Team unter der Leitung von Walter R. Smith eine neue Sprache namens NewtonScript. es wurde von dynamischer Sprache wie Smalltalk und prototypbasierten Modellen wie Self beeinflusst.

Merkmale

Obwohl NewtonScript stark von Self beeinflusst wurde, gab es in beiden Sprachen einige Unterschiede.

Unterschiede entstanden aufgrund von drei wahrgenommenen Problemen mit dem Selbst.

  1. Einer ist, dass der typische Self-Snapshot 32 MB RAM benötigt, um darin zu laufen, während die Newton-Plattform nur 128 KB für das Betriebssystem benötigt. Dies erforderte eine ernsthafte Reduzierung des Motors, um ihn fit zu machen und noch Platz für Anwendungen zu haben.
  2. Ein weiteres Thema war die Leistung. Da die Sprache für das gesamte System verwendet würde, anstatt nur auf einem vorhandenen Betriebssystem zu laufen, musste sie so schnell wie möglich laufen.
  3. Schließlich hatte das Vererbungssystem in der normalen Self-Engine ein einziges Elternobjekt, während GUIs normalerweise zwei haben – eines für die Objekte und ein weiteres für das GUI-Layout, das normalerweise durch das Hinzufügen eines Slots in einer Art GUI-Hierarchieobjekt gehandhabt wird (wie Ansicht ).

Die Syntax wurde auch modifiziert, um einen eher textbasierten Programmierstil zu ermöglichen, im Gegensatz zu Selfs weit verbreiteter Verwendung einer GUI-Umgebung für die Programmierung. Dies ermöglichte die Entwicklung von Newton-Programmen auf einem Computer, auf dem das Toolkit ausgeführt wurde, wo die Programme kompiliert und dann zum Ausführen auf ein Newton-Gerät heruntergeladen wurden.

Einer der Vorteile der prototypbasierten Vererbung von NewtonScript war der reduzierte Speicherverbrauch, ein wichtiger Aspekt beim 128 KB Newton. Der Prototyp eines GUI-Objekts konnte tatsächlich im ROM gespeichert werden, sodass keine Standarddaten oder Funktionen in den Arbeitsspeicher kopiert werden mussten.

Im Gegensatz zu klassenbasierten Sprachen, bei denen bei der Erstellung eines Objekts Speicher für alle seine Attribute zugewiesen wird, konnte NewtonScripts durch die Verwendung der Prototypvererbung nur wenigen Feldern wie _proto und _parent Speicher zuweisen, anstatt ein ganz neues Objekt zu erstellen. _proto und _parent geben hier an, ob das Objekt Prototyp- oder Elternvererbung verwendet.

Als Beispiel zur Veranschaulichung des obigen Konzepts könnte ein Entwickler eine neue Schaltflächeninstanz erstellen. Wenn die Schaltfläche die Standardschriftart verwendet, wird der Zugriff auf ihren Schriftart-"Slot" (dh Eigenschaft oder Mitgliedsvariable) einen Wert zurückgeben, der tatsächlich im ROM gespeichert ist; Die Schaltflächeninstanz im RAM hat keinen Wert in ihrem eigenen Font-Slot, daher wird der Vererbungskette des Prototyps gefolgt, bis ein Wert gefunden wird. Wenn der Entwickler dann die Schriftart der Schaltfläche ändert, wird der Prototyp überschrieben, indem ihr Schriftart-Slot auf einen neuen Wert gesetzt wird. dieser Override-Wert wird im RAM gespeichert. Die " differentielle Vererbung " von NewtonScript nutzte daher effizient den teuren Flash-RAM des Newton, indem der Großteil der Standarddaten und des Codes im billigeren und viel größeren ROM des PDA gespeichert wurde .

Wichtige Begriffe

Ansichten: Dies sind von Newton View System erstellte Objekte, die zur Laufzeit erstellt werden , um Ansichten zu rendern.

Vorlage: Es ist eine Blaupause, aus der Ansichten erstellt werden.

Protos: Sie können Blaupausen für eine Vorlage oder eine Ansicht sein und sind Elemente von NewtonScript-Codebibliotheken.

Frame und Slot: Frame ist eine dynamische Sammlung von Slots, und ein Element von Frame wird als Slot bezeichnet. Ein Slot besteht aus Name und Wert. Der Wert kann einen beliebigen Typ haben. Es ist erwähnenswert, dass alle Objekte in NewtonScript Frames sind.

Suppe und Eintritt: Es ist eine verwandte Sammlung von Rahmen/Daten. Eintrag ist ein individueller Rahmen in einer Suppe.

Frame Heap: RAM wird dynamisch von NewtonScript zugewiesen.

Basisansicht: Dies ist die Hauptansicht der Anwendung, die aus allen Variablen und Methoden besteht, die in der Anwendung verwendet werden.

Vorteile und Nachteile

Vorteile

  • NewtonScript ist eine dynamische prototypbasierte Programmiersprache, die differenzielle Vererbung verwendet. Dies bedeutet, dass es sehr effektiv ist, Speicherplatz zu verwenden. Da es dynamisch ist, ist es leicht, Objekte zur Laufzeit zu ändern, Typprüfungen usw. durchzuführen, was den Entwicklern große Flexibilität bietet.
  • Erstellte Objekte können in einem permanenten Speicher wie einer Flash-Karte oder einem internen Speicher gespeichert werden. Das RAM wird nur zum Speichern von Attributen verwendet, deren Werte sich zur Laufzeit ändern. Dies reduziert den Speicherverbrauch.
  • Das Schreiben von Schnittstellen für GUI-Anwendungen kann mithilfe des Prototypmodells effektiv implementiert werden, da wir ein Objekt für ein GUI-Steuerelement direkt schreiben können, anstatt eine Klasse zu erstellen und zu instanziieren.
  • Die Müllabfuhr erfolgt automatisch durch das System. Dies half den Entwicklern, sich mehr auf die Anwendungsentwicklung zu konzentrieren, anstatt sich um die Speicherverwaltung zu kümmern. Die Garbage Collection half auch bei der Abschwächung des Problems von hängenden Zeigern, bei denen ein Zeiger fälschlicherweise auf einen Speicherort zeigt, der freigegeben wurde.

Nachteile

  • Da NewtonScript-Code auf einer Plattform geschrieben und auf einer anderen ausgeführt wurde, war eine Fehlersuche praktisch unmöglich. Ein besserer Debug-Code in der Newton-Engine hätte dieses Problem bis zu einem gewissen Grad beheben können, aber der begrenzte Speicher machte dies schwierig. Stattdessen würde der Entwickler einen vagen Hinweis zusammen mit einem Fehlercode erhalten, ohne die Möglichkeit, ihn mit Zeilen im Originalcode abzugleichen.
  • Ein weiterer Nachteil besteht darin, dass dynamische Variablen die Betriebsgeschwindigkeit reduzieren, da eine einfache Zeigerdereferenzierung nicht verwendet werden kann, wie in statisch typisierten wie C++ und Java.

Einflüsse

Mit der Einstellung des Newton-Projekts durch Apple im Jahr 1998 wurden alle weiteren Mainstream-Entwicklungen von NewtonScript gestoppt. Die in NewtonScript verwendeten Funktionen würden jedoch weiterhin andere Programmiermodelle und -sprachen inspirieren.

Das prototypbasierte Objektmodell von Self und NewtonScript wurde in JavaScript verwendet , der bisher beliebtesten und sichtbarsten Sprache, um das Konzept zu verwenden.

NewtonScript ist auch einer der konzeptionellen Vorfahren (zusammen mit Smalltalk, Self, Act1, Lisp und Lua ) einer universellen Programmiersprache namens Io , die dasselbe differenzielle Vererbungsmodell implementiert, das in NewtonScript verwendet wurde, um Speicher zu sparen.

Siehe auch

Verweise

Externe Links