NewtonScript - NewtonScript

NewtonScript
Paradigma Prototyp Objektově orientovaný
Navrhl Walter Smith
Vývojář Počítač Apple
Poprvé se objevil 1993 ; Před 28 lety ( 1993 )
Kázeň při psaní Dynamický
Ovlivněn
, Dylane
Ovlivněn
Io

NewtonScript je prototypový programovací jazyk vytvořený pro psaní programů pro platformu Newton . Je silně ovlivněn programovacím jazykem Self , ale upraven tak, aby více vyhovoval potřebám mobilních a vestavěných zařízení .

Dějiny

3. srpna 1993 představila společnost Apple Apple Newton MessagePad . Zařízení mělo 640 KB RAM a 4 MB ROM a běželo na stroji 20 MHz Acorn RISC.

Hlavním záměrem projektu Newton bylo vyvinout zařízení schopné nahradit počítač a přitom být přenosné. S omezenou baterií a pamětí vývojáři hledali programovací jazyk schopný tyto výzvy zvládnout.

Vývojáři se podívali na jazyk C ++, ale uvědomili si, že mu chybí flexibilita. Začali se soustředit na jazyky založené na prototypech a zapůsobilo na ně Smalltalk a Self. Souběžně Apple vyvíjel další dynamický programovací jazyk s názvem Dylan , který byl silným kandidátem pro platformu Newton.

Self i Dylan však byli vyloučeni z úvah, protože byli oba v rodící se fázi pro správnou integraci.

Místo toho tým vedený Walterem R Smithem vyvinul nový jazyk s názvem NewtonScript. to bylo ovlivněno dynamickým jazykem jako Smalltalk a prototypovým modelem založeným jako Self.

Funkce

Ačkoli NewtonScript byl silně ovlivněn Selfem, v obou jazycích byly určité rozdíly.

Rozdíly vznikly kvůli třem vnímaným problémům s Já.

  1. Jedním z nich je, že typický vlastní snímek vyžaduje ke spuštění 32 MB RAM , zatímco platforma Newton byla navržena tak, aby pro operační systém používala pouze 128 kB. To vyžadovalo určité důkladné odštípnutí motoru, aby byl vhodný a stále měl prostor pro aplikace.
  2. Dalším problémem byl výkon. Vzhledem k tomu, že jazyk bude použit pro celý systém, na rozdíl od pouhého spuštění na stávajícím operačním systému, musel běžet co nejrychleji.
  3. A konečně, dědičný systém v normálním vlastním enginu měl jeden nadřazený objekt, zatímco GUI mají obvykle dva-jeden pro objekty a druhý pro rozvržení grafického uživatelského rozhraní, které se obvykle řeší přidáním slotu do nějakého druhu hierarchického objektu GUI (jako View ).

Syntaxe byla také upravena tak, aby umožňovala programovací styl více založený na textu, na rozdíl od rozšířeného používání prostředí GUI pro programování společnosti Self. To umožnilo vyvinout programy Newton na počítači se systémem Toolkit, kde by byly programy kompilovány a poté staženy do zařízení Newton pro spuštění.

Jednou z výhod dědičnosti založené na prototypech NewtonScriptu bylo snížení využití paměti, což je klíčové v 128 KB Newtonu. Prototyp objektu GUI mohl být ve skutečnosti uložen v paměti ROM, takže nebylo nutné kopírovat výchozí data nebo funkce do pracovní paměti.

Na rozdíl od jazyků založených na třídách, kde vytváření objektu zahrnuje přidělování paměti všem jeho atributům, použití prototypové dědičnosti NewtonScripts umožnilo přidělit paměť několika polím, jako jsou _proto a _parent, místo vytváření zcela nového objektu. Zde _proto a _parent označuje, zda objekt používá prototypovou nebo rodičovskou dědičnost.

Jako příklad pro ilustraci výše uvedeného konceptu může vývojář vytvořit novou instanci tlačítka. Pokud tlačítko používá výchozí písmo, přístup k jeho „slotu“ písma (tj. Vlastnost nebo členská proměnná) vrátí hodnotu, která je ve skutečnosti uložena v ROM; instance tlačítka v paměti RAM nemá hodnotu ve svém vlastním slotu písem, takže je sledován řetězec dědičnosti prototypu, dokud není nalezena hodnota. Pokud vývojář poté změní písmo tlačítka, nastavení slotu jeho písma na novou hodnotu přepíše prototyp; tato přepsaná hodnota je uložena v paměti RAM. NewtonScriptova „ diferenciální dědičnost “ proto efektivně využívala drahou flash paměť RAM Newtonu tím, že ukládala většinu výchozích dat a kódu do levnější a mnohem větší ROM PDA .

Důležité termíny

Pohledy: Jsou to objekty vytvořené systémem Newton View System, které jsou vytvořeny za běhu k vykreslování pohledů.

Šablona: Je to plán, ze kterého se vytvářejí pohledy.

Protos: Mohou být plánem pro šablonu nebo zobrazení a jsou prvky knihoven kódů NewtonScript.

Rámeček a slot: Rám je dynamická kolekce slotů a jeden prvek rámce se nazývá slot. Slot se skládá ze jména a hodnoty. Hodnota může být libovolného typu. Stojí za zmínku, že všechny objekty v NewtonScriptu jsou rámečky.

Polévka a vstup: Jedná se o související sbírku rámců/ dat. Vstup je individuální snímek v polévce.

Hromada rámců: RAM přidělená dynamicky NewtonScriptem.

Základní zobrazení: Toto je hlavní pohled na aplikaci, který se skládá ze všech proměnných a metod použitých v aplikaci.

Výhody a nevýhody

Výhody

  • NewtonScript je dynamický programovací jazyk založený na prototypech, který využívá diferenciální dědičnost. To znamená, že je velmi efektivní využití paměti. Jelikož je dynamický, je snadné za běhu upravovat objekty, kontrolovat typ atd., Což vývojářům poskytuje velkou flexibilitu.
  • Vytvořené objekty lze uložit do trvalé paměti, jako je flash karta nebo interní paměť. RAM slouží pouze k ukládání atributů, jejichž hodnoty se během běhu mění. To snižuje spotřebu paměti.
  • Rozhraní pro psaní pro aplikace GUI lze efektivně implementovat pomocí prototypového modelu, protože můžeme přímo psát objekt pro ovládací prvek GUI, než vytvářet třídu a vytvářet její instanci.
  • Sběr odpadu provádí systém automaticky. To vývojářům pomohlo soustředit se více na vývoj aplikací, než se starat o správu paměti. Sběr odpadků také pomohl zmírnit problém visících ukazatelů, kde ukazatel nesprávně ukazuje na místo paměti, které bylo uvolněno.

Nevýhody

  • Protože kód NewtonScript byl napsán na jedné platformě a spuštěn na jiné platformě, bylo prakticky nemožné ladit. Lepší ladění kódu v motoru Newton by do určité míry pomohlo tento problém kompenzovat, ale omezená paměť to ztěžovala. Místo toho by vývojář dostal vágní údaj spolu s chybovým kódem, aniž by ho mohl přiřadit k řádkům v původním kódu.
  • Další nevýhodou je, že dynamická proměnná snižuje rychlost provozu, protože dereferenci jednoduchého ukazatele nelze použít jako u staticky napsaných jako C ++ a Java.

Vlivy

Se zrušením projektu Newton společností Apple v roce 1998 byl zastaven veškerý další mainstreamový vývoj v NewtonScriptu. Funkce používané v NewtonScriptu by však nadále inspirovaly další programovací modely a jazyky.

Objektový model Self a NewtonScript založený na prototypech byl použit v JavaScriptu , dosud nejpopulárnějším a nejviditelnějším jazyce pro použití konceptu.

NewtonScript je také jedním z koncepčních předchůdců (společně s Smalltalk, Self, Act1, Lisp a Lua ) univerzálního programovacího jazyka s názvem Io, který implementuje stejný model diferenciální dědičnosti, který byl v NewtonScriptu použit k zachování paměti.

Viz také

Reference

externí odkazy