NewtonScript - NewtonScript

Newton Komut Dosyası
paradigma Prototip Nesneye yönelik
Tarafından tasarlandı Walter Smith
geliştirici elma bilgisayar
İlk ortaya çıktı 1993 ; 28 yıl önce ( 1993 )
Yazma disiplini Dinamik
Tarafından etkilenmiş
ben , Dylan
Etkilenen
Io

NewtonScript , Newton platformu için programlar yazmak üzere oluşturulmuş prototip tabanlı bir programlama dilidir . Self programlama dilinden büyük ölçüde etkilenmiştir , ancak mobil ve gömülü cihazların ihtiyaçlarına daha uygun olacak şekilde değiştirilmiştir .

Tarih

3 Ağustos 1993'te Apple, Apple Newton MessagePad'i tanıttı . Cihaz, 20 MHz Acorn RISC makinesinde çalışan 640 KB RAM ve 4 MB ROM'a sahipti.

Newton projesinin arkasındaki ana amaç, taşınabilir iken bir bilgisayarın yerini alabilecek bir cihaz geliştirmekti. Sınırlı pil ve bellek ile geliştiriciler, bu zorlukların üstesinden gelebilecek bir programlama dili arıyorlardı.

Geliştiriciler C++ diline baktılar ancak esneklikten yoksun olduğunu fark ettiler. Prototip tabanlı dillere odaklanmaya başladılar ve Smalltalk ve Self'den etkilendiler. Aynı zamanda Apple, Newton platformu için güçlü bir aday olan Dylan adında başka bir dinamik programlama dili geliştiriyordu .

Bununla birlikte, hem Self hem de Dylan, her ikisi de uygun entegrasyon için yeni bir aşamada oldukları için değerlendirme dışı bırakıldı.

Bunun yerine, Walter R Smith tarafından yönetilen bir ekip, NewtonScript olarak adlandırılan yeni bir dil geliştirdi. Smalltalk gibi dinamik bir dilden ve Self gibi prototip modelden etkilenmiştir .

Özellikleri

NewtonScript, Self'den büyük ölçüde etkilenmiş olsa da, her iki dilde de bazı farklılıklar vardı.

Benlikle ilgili algılanan üç sorun nedeniyle farklılıklar ortaya çıktı.

  1. Birincisi, tipik Self snapshot'ın çalışması için 32 MB RAM gerektirmesi , Newton platformunun ise işletim sistemi için yalnızca 128 KB kullanacak şekilde tasarlanmış olmasıdır. Bu, motorun uygun hale getirilmesi ve hala uygulamalar için yer kalması için ciddi bir şekilde ayrıştırılmasını gerektirdi.
  2. Diğer bir konu ise performanstı. Dil, sadece mevcut bir işletim sisteminde çalışmak yerine tüm sistem için kullanılacağından, mümkün olduğunca hızlı çalışması gerekiyordu.
  3. Son olarak, normal Self motorundaki kalıtım sistemi tek bir ana nesneye sahipken, GUI'lerde tipik olarak iki tane bulunur - biri nesneler için, diğeri ise tipik olarak bir tür GUI hiyerarşisi nesnesine bir yuva eklenmesiyle işlenen GUI düzeni için ( Görünüm gibi ).

Sözdizimi, Self'in programlama için bir GUI ortamını yaygın olarak kullanmasının aksine, daha metin tabanlı bir programlama stiline izin verecek şekilde değiştirildi. Bu, Newton programlarının Toolkit çalıştıran bir bilgisayarda geliştirilmesine izin verdi; burada programlar derlenecek ve daha sonra çalıştırılmak üzere bir Newton cihazına indirilecekti.

NewtonScript'in prototip tabanlı mirasının avantajlarından biri, 128 KB Newton'da önemli bir husus olan azaltılmış bellek kullanımıydı. Bir GUI nesnesinin prototipi aslında ROM'da saklanabilirdi, bu nedenle varsayılan verileri veya işlevleri çalışan belleğe kopyalamaya gerek yoktu.

Bir nesnenin yaratılmasının tüm özniteliklerine tahsis edilmesini gerektirdiği sınıf tabanlı dillerin aksine, NewtonScripts'in prototip kalıtımını kullanması, tamamen yeni nesne oluşturmak yerine _proto ve _parent gibi birkaç alana bellek ayırmasına izin verdi. Burada _proto ve _parent, nesnenin prototip mi yoksa üst miras mı kullandığını belirtir.

Yukarıdaki kavramı göstermek için bir örnek, bir geliştirici yeni bir düğme örneği oluşturabilir. Düğme varsayılan yazı tipini kullanıyorsa, yazı tipi "yuvasına" (yani, özellik veya üye değişkenine) erişmek, gerçekte ROM'da depolanan bir değeri döndürür; RAM'deki düğme örneğinin kendi yazı tipi yuvasında bir değeri yoktur, bu nedenle bir değer bulunana kadar prototip kalıtım zinciri takip edilir. Geliştirici daha sonra düğmenin yazı tipini değiştirirse, yazı tipi yuvasını yeni bir değere ayarlamak prototipi geçersiz kılar; bu geçersiz kılma değeri RAM'de saklanır. NewtonScript'in " diferansiyel kalıtımı " bu nedenle , varsayılan verilerin ve kodun büyük bir kısmını PDA'nın daha ucuz ve çok daha büyük ROM'unda depolayarak Newton'un pahalı flash RAM'ini verimli bir şekilde kullandı .

Önemli terimler

Görünümler: Görünümleri oluşturmak için çalışma zamanında oluşturulan Newton View System tarafından oluşturulan nesnelerdir .

Şablon: Görünümlerin oluşturulduğu bir plandır.

Protolar: Bir şablon veya bir görünüm için plan olabilirler ve NewtonScript kod kitaplıklarının öğeleridirler.

Çerçeve ve Yuva: Çerçeve, dinamik bir yuvalar topluluğudur ve çerçevenin bir unsuruna yuva adı verilir. Bir slot isim ve değerden oluşur. Değer herhangi bir türden olabilir. NewtonScript'teki tüm nesnelerin çerçeveler olduğunu belirtmekte fayda var.

Çorba ve Giriş: İlgili çerçeveler/veriler topluluğudur. Giriş, bir çorbada bireysel bir çerçevedir.

Çerçeve Yığını: NewtonScript tarafından dinamik olarak ayrılan RAM.

Temel Görünüm: Uygulamada kullanılan tüm değişkenler ve yöntemlerden oluşan uygulamanın ana görünümüdür .

Avantajlar ve dezavantajlar

Avantajlar

  • NewtonScript, diferansiyel kalıtım kullanan dinamik prototip tabanlı bir programlama dilidir. Bu, bellek alanını kullanmanın çok etkili olduğu anlamına gelir. Dinamik olduğundan, çalışma zamanında nesneleri değiştirmek, tip denetimi vb. yapmak kolaydır ve geliştiriciler için büyük esneklik sağlar.
  • Oluşturulan nesneler, flash kart veya dahili bellek gibi kalıcı bellekte saklanabilir. RAM, yalnızca çalışma zamanı sırasında değerleri değişen öznitelikleri depolamak için kullanılır. Bu, bellek tüketimini azaltır.
  • GUI uygulamaları için yazma arabirimleri, prototip modeli kullanılarak etkin bir şekilde uygulanabilir, çünkü bir GUI denetimi için bir sınıf oluşturmak ve onu somutlaştırmak yerine doğrudan bir nesne yazabiliriz.
  • Çöp toplama sistem tarafından otomatik olarak taşınır. Bu, geliştiricilerin bellek yönetimi konusunda endişelenmek yerine uygulama geliştirmeye daha fazla odaklanmasına yardımcı oldu. Çöp toplama ayrıca , bir işaretçinin yanlışlıkla ayrılmış bir bellek konumuna işaret ettiği sarkan işaretçi sorununun azaltılmasına da yardımcı oldu .

Dezavantajları

  • NewtonScript kodu bir platformda yazıldığından ve diğerinde çalıştırıldığından, hata ayıklamak neredeyse imkansızdı. Newton motorundaki daha iyi hata ayıklama kodu, bu sorunu bir dereceye kadar gidermeye yardımcı olabilirdi, ancak sınırlı bellek bunu zorlaştırdı. Bunun yerine geliştirici, orijinal koddaki satırlarla eşleştirme yeteneği olmadan, bir hata koduyla birlikte belirsiz bir gösterge alır.
  • Diğer bir dezavantaj, dinamik değişkenin, C++ ve Java gibi statik olarak yazılanlarda olduğu gibi basit işaretçi referansının kullanılamaması nedeniyle işlem hızını düşürmesidir.

etkiler

Newton projesinin 1998'de Apple tarafından iptal edilmesiyle, NewtonScript'teki diğer tüm ana akım geliştirmeler durduruldu. Ancak NewtonScript'te kullanılan özellikler, diğer programlama modellerine ve dillerine ilham vermeye devam edecektir.

Self ve NewtonScript'in prototip tabanlı nesne modeli, şimdiye kadar kavramı kullanan en popüler ve görünür dil olan JavaScript'te kullanıldı .

NewtonScript ayrıca , NewtonScript'te belleği korumak için kullanılan aynı diferansiyel kalıtım modelini uygulayan Io adlı genel amaçlı bir programlama dilinin (Smalltalk, Self, Act1, Lisp ve Lua ile birlikte) kavramsal atalarından biridir .

Ayrıca bakınız

Referanslar

Dış bağlantılar