NewtonScript - NewtonScript
| Paradigme | Prototype Objektorienteret |
|---|---|
| Designet af | Walter Smith |
| Udvikler | Apple computer |
| Første gang dukkede op | 1993 |
| Skrive disciplin | Dynamisk |
| Påvirket af | |
| Selv , Dylan | |
| Påvirket | |
| Io | |
NewtonScript er et prototype-baseret programmeringssprog, der er skabt til at skrive programmer til Newton- platformen. Det er stærkt påvirket af den Self programmeringssprog, men modificeret for at være mere velegnet til behovene hos mobile og indlejrede enheder .
Historie
Den 3. august 1993 afslørede Apple Apple Newton MessagePad . Enheden havde 640 KB RAM og 4 MB ROM, der kører på 20 MHz Acorn RISC -maskine.
Hovedintentionen bag Newton -projektet var at udvikle en enhed, der er i stand til at udskifte en computer, mens den er bærbar. Med begrænset batteri og hukommelse ledte udviklerne efter programmeringssprog, der kunne klare disse udfordringer.
Udviklerne kiggede på C ++ sprog, men indså, at det manglede fleksibilitet. De begyndte at fokusere på prototype -baserede sprog og var imponeret over Smalltalk og Self. Samtidig udviklede Apple et andet dynamisk programmeringssprog kaldet Dylan , som var en stærk kandidat til Newton -platformen.
Både Self og Dylan blev imidlertid droppet ud af betragtning, da de begge var i begyndende fase for korrekt integration.
I stedet udviklede et team under ledelse af Walter R Smith et nyt sprog kaldet NewtonScript. det var påvirket af dynamisk sprog som Smalltalk og prototypemodel baseret som Self.
Funktioner
Selvom NewtonScript var stærkt påvirket af Self, var der nogle forskelle på begge sprog.
Forskelle opstod på grund af tre opfattede problemer med Self.
- Det ene er, at det typiske Self -snapshot kræver 32 MB RAM for at køre, mens Newton -platformen kun var designet til at bruge 128 KB til operativsystemet. Dette krævede en seriøs nedbrydning af motoren for at få den til at passe og stadig have plads til applikationer.
- Et andet problem var ydelse. Da sproget ville blive brugt til hele systemet, i modsætning til bare at køre på et eksisterende operativsystem, skulle det køre så hurtigt som muligt.
- Endelig havde arvesystemet i den normale selvmotor et enkelt overordnet objekt, hvorimod GUI'er typisk har to-et for objekterne og et andet for GUI-layoutet, der typisk håndteres via tilføjelse af en plads i en slags GUI-hierarki-objekt (som View ).
Syntaksen blev også ændret for at tillade en mere tekstbaseret programmeringsstil, i modsætning til Selfs udbredte brug af et GUI-miljø til programmering. Dette gjorde det muligt at udvikle Newton -programmer på en computer, der kører Toolkit, hvor programmerne ville blive samlet og derefter downloadet til en Newton -enhed til kørsel.
En af fordelene ved NewtonScripts prototype -baserede arv var reduceret hukommelsesforbrug, en vigtig overvejelse i 128 KB Newton. Prototypen af et GUI -objekt kunne faktisk gemmes i ROM, så det var ikke nødvendigt at kopiere standarddata eller funktioner til arbejdshukommelse.
I modsætning til klassebaserede sprog, hvor oprettelse af et objekt indebærer, at hukommelse allokeres til alle dets attributter, tillod NewtonScripts brug af prototype -arv det at tildele hukommelse til få felter som _proto og _parent i stedet for at oprette et helt nyt objekt. Her angiver _proto og _parent, om objektet bruger prototype eller overordnet arv.
Et eksempel til at illustrere ovenstående koncept, en udvikler kan oprette en ny knapforekomst. Hvis knappen bruger standardskrifttypen, vil adgang til dens skrifttype "slot" (dvs. ejendom eller medlemsvariabel) returnere en værdi, der faktisk er gemt i ROM; knappen forekomst i RAM har ikke en værdi i sin egen skrifttype slot, så prototypen arvskæde følges, indtil en værdi er fundet. Hvis udvikleren derefter ændrer knappens skrifttype, vil opsætning af dens skrifttype til en ny værdi tilsidesætte prototypen; denne tilsidesættelsesværdi gemmes i RAM. NewtonScripts " differentierede arv " gjorde derfor effektiv brug af Newtons dyre flash -RAM ved at gemme hovedparten af standarddata og kode i PDA's billigere og meget større ROM .
Vigtige vilkår
Visninger: De er objekter oprettet af Newton View System, som er oprettet i løbetid for at gengive visninger.
Skabelon: Det er en blueprint, hvorfra der oprettes visninger.
Protos: De kan være blueprint til en skabelon eller en visning og er elementer i NewtonScript -kodebiblioteker.
Frame og Slot: Frame er en dynamisk samling af slots, og et element i frame kaldes som en slot. En slot består af navn og værdi. Værdien kan være af enhver type. Det er værd at bemærke, at alle objekter i NewtonScript er rammer.
Suppe og indgang: Det er en relateret samling af rammer/ data. Indgang er en individuel ramme i en suppe.
Frame Heap: RAM tildelt dynamisk af NewtonScript.
Basisvisning: Det er hovedvisningen af applikationen, der består af alle de variabler og metoder, der bruges i applikationen.
Fordele og ulemper
Fordele
- NewtonScript er et dynamisk prototype baseret programmeringssprog, der bruger differentiel arv. Det betyder, at det er meget effektivt at bruge hukommelsesplads. Da det er dynamisk, er det let at ændre objekter, typekontrol osv. I løbetid, hvilket giver udviklere stor fleksibilitet.
- Objekter, der er oprettet, kan gemmes i permanent hukommelse, f.eks. Flash -kort eller intern hukommelse. RAM'en bruges kun til lagring af attributter, hvis værdier ændres under runtime. Dette reducerer hukommelsesforbruget.
- Skrivegrænseflader til GUI -applikationer kan implementeres effektivt ved hjælp af prototypemodellen, da vi direkte kan skrive et objekt til en GUI -kontrol frem for at oprette en klasse og instantere den.
- Affaldsindsamling transporteres automatisk af systemet. Dette hjalp udviklerne til at fokusere mere på applikationsudvikling frem for at bekymre sig om hukommelsesstyring. Affaldssamling hjalp også med at afbøde problemet med dinglende pointer, hvor en markør fejlagtigt peger på en hukommelsesplacering, der blev deallokeret.
Ulemper
- Da NewtonScript -kode blev skrevet på en platform og kørt på en anden, var det praktisk talt umuligt at fejlsøge. Bedre fejlfindingskode i Newton -motoren ville i nogen grad have hjulpet med at opveje dette problem, men den begrænsede hukommelse gjorde dette svært. I stedet ville udvikleren få en vag indikation sammen med en fejlkode uden mulighed for at matche den til linjer i den originale kode.
- En anden ulempe er, at dynamisk variabel reducerer driftshastigheden, da simple pointer -dereference ikke kan bruges som i statisk indtastede som C ++ og Java.
Indflydelse
Med annulleringen af Newton -projektet af Apple i 1998 blev alle yderligere mainstream -udviklinger på NewtonScript stoppet. Funktionerne i NewtonScript ville imidlertid fortsat inspirere andre programmeringsmodeller og sprog.
Den prototype-baserede objektmodel af Self og NewtonScript blev brugt i JavaScript , det hidtil mest populære og synlige sprog til at bruge konceptet.
NewtonScript er også en af de konceptuelle forfædre (sammen med Smalltalk, Self, Act1, Lisp og Lua ) til et programmeringssprog til generelle formål kaldet Io, der implementerer den samme differentielle arvsmodel, som blev brugt i NewtonScript til at bevare hukommelse.
Se også
Referencer
eksterne links
- SELF and the Origins of NewtonScript , af Walter Smith, 1994.
- Brug af et prototype-baseret sprog til brugergrænseflade: The Newton Project's Experience (PDF), af Walter Smith, 1995.
- Klassebaseret NewtonScript-programmering af Walter Smith, 1993.
- Yderligere Newton-relaterede papirer af Walter Smith.
- NewtonScript -programmeringssprog (archive.org -cache , originalt link dødt fra 10/15/04.)
- NEWT/0 En bærbar NewtonScript -compiler/tolk
- NewtDevEnv , et NewtonScript -udviklingsmiljø, der gør det muligt at udføre udvikling direkte på Newton af Steve Weyer.
- DyneTK , et NewtonScript -udviklingsmiljø, der erstatter det originale Newton ToolKit (NTK); fungerer på MS Windows og Mac OS X af Matthias Melcher.