뉴턴스크립트

NewtonScript
뉴턴스크립트
패러다임시제품 객체 지향
설계자월터 스미스
개발자애플 컴퓨터
처음 등장한1993년; 29년 전(1993년)
타이핑 분야역학
영향을 받다
셀프, 딜런
영향받은
이오

NewtonScript는 Newton [1]플랫폼용 프로그램을 작성하기 위해 만들어진 프로토타입 기반 프로그래밍 언어입니다.셀프 프로그래밍 언어의 영향을 많이 받지만 모바일 및 임베디드 장치의 요구에 [2]맞게 수정됩니다.

역사

1993년 8월 3일, 애플은 애플 뉴턴 메시지패드를 공개했다.디바이스에는 640KB RAM, 4MB ROM 및 20MHz ARM 610 마이크로프로세서가 탑재되어 있습니다.

뉴턴 프로젝트의 주된 목적은 휴대하면서 컴퓨터를 대체할 수 있는 장치를 개발하는 것이었다.배터리와 메모리가 한정되어 있었기 때문에, 개발자는 이러한 과제에 대응할 수 있는 프로그래밍 언어를 찾고 있었습니다.

개발자들은 C++ 프로그래밍 언어를 검토했지만 유연성이 부족하다는 것을 깨달았습니다.그들은 프로토타입 기반의 언어에 집중하기 시작했고 Smalltalk와 [3]Self에 깊은 인상을 받았다.동시에 애플은 딜런이라는 다른 동적 프로그래밍 언어를 개발하고 있었는데, 이는 뉴턴 [4]플랫폼의 유력한 후보였다.

그러나 셀프와 딜런은 둘 다 적절한 통합을 위한 초기 단계에 있었기 때문에 고려 대상에서 제외되었다.

대신, Walter R Smith가 이끄는 팀은 NewtonScript라고 불리는 새로운 언어를 개발했다.Smalltalk와 같은 역동적인 언어[3]Self와 같은 프로토타입 모델의 영향을 받았다.

특징들

뉴턴스크립트는 Self의 영향을 많이 받았지만 두 언어 모두 약간의 차이가 있었다.

셀프와의 세 가지 인식된 문제 때문에 차이가 생겼다.

  1. 하나는 일반적인 셀프 스냅샷은 32MB의 RAM을 필요로 하는 반면, Newton 플랫폼은 운영체제용으로 128KB만을 사용하도록 설계되어 있다는 것입니다.따라서 엔진을 장착하고 여전히 적용할 수 있는 여지가 있기 위해 엔진을 약간 심각하게 내려야 했습니다.
  2. 또 다른 문제는 퍼포먼스였습니다.언어는 기존 운영체제에서만 실행되는 것이 아니라 시스템 전체에서 사용되기 때문에 가능한 한 빨리 실행해야 했습니다.
  3. 마지막으로 일반 Self 엔진의 상속 시스템에는 부모 [5]오브젝트가1개 있는데 반해 GUI에는 보통 오브젝트용과 GUI 레이아웃용2개가 있습니다.1개는 보통 일종의 GUI 계층 오브젝트(View 등)에 슬롯을 추가하면 처리됩니다.

또한 Self가 프로그래밍을 위해 GUI 환경을 광범위하게 사용하는 것과 달리, 보다 텍스트 기반 프로그래밍 스타일을 허용하도록 구문을 수정했습니다.이것은 Newton 프로그램을 Toolkit을 실행하는 컴퓨터에서 개발할 수 있게 했고, 그곳에서 프로그램을 컴파일한 다음 실행을 위해 Newton 장치에 다운로드 할 수 있게 했다.

NewtonScript의 프로토타입 기반 상속의 장점 중 하나는 128KB Newton의 주요 고려 사항인 메모리 사용량을 줄였다는 것입니다.GUI 오브젝트의 프로토타입은 실제로 ROM에 저장할 수 있기 때문에 기본 데이터나 함수를 작업 메모리에 복사할 필요가 없습니다.

오브젝트 작성에 메모리가 모든 속성에 할당되는 클래스 기반 언어와는 달리 뉴턴스크립트의 프로토타입 상속 사용으로 완전히 새로운 오브젝트를 생성하는 대신 _proto 및 _parent와 같은 소수의 필드에 메모리를 할당할 수 있었습니다.여기서 _proto 및 _parent는 개체가 프로토타입 또는 상위 [6]상속을 사용하고 있는지 여부를 나타냅니다.

위의 개념을 설명하기 위해 개발자는 새로운 버튼 인스턴스를 작성할 수 있습니다.버튼이 기본 글꼴을 사용하는 경우, 해당 글꼴 "slot"(속성 또는 멤버 변수)에 액세스하면 ROM에 실제로 저장된 값이 반환됩니다. RAM의 버튼 인스턴스에는 자체 글꼴 슬롯에 값이 없으므로 값이 발견될 때까지 원형 상속 체인이 계속됩니다.개발자가 버튼의 글꼴을 변경한 경우 해당 글꼴 슬롯을 새 값으로 설정하면 프로토타입이 덮어쓰게 됩니다. 이 덮어쓰기 값은 RAM에 저장됩니다.따라서 뉴턴스크립트의 "차동 상속"은 뉴턴의 값비싼 플래시 RAM을 효율적으로 사용하기 위해 PDA의 값싸고 훨씬 큰 ROM에 기본 데이터와 코드를 저장했습니다.

중요 용어

뷰: 뷰를 렌더링하기 위해 런타임에 작성되는 Newton View System에 의해 작성된 객체입니다.

템플릿:뷰가 생성되는 Blueprint입니다.

Protos: 템플릿 또는 뷰의 청사진으로 사용할 수 있으며 NewtonScript 코드 라이브러리의 요소입니다.

프레임과 슬롯: 프레임은 슬롯의 동적 집합이며 프레임의 1개 요소를 슬롯이라고 부릅니다.슬롯은 이름과 값으로 구성됩니다.값은 모든 유형으로 지정할 수 있습니다.NewtonScript의 모든 객체는 [7]프레임이라는 점에 유의하십시오.

수프와 엔트리:프레임/데이터의 관련 컬렉션입니다.엔트리는 수프 내의 개별 프레임입니다.

프레임: NewtonScript에 의해 동적으로 할당되는 RAM.

기본 보기:어플리케이션의 메인뷰이며 어플리케이션에서 사용되는 모든 변수와 메서드로 구성됩니다.

장점과 단점

이점
  • NewtonScript는 차분 상속을 사용하는 동적 프로토타입 기반 프로그래밍 언어입니다.이것은 메모리 공간을 사용하는 데 매우 효과적이라는 것을 의미합니다.동적이어서 런타임에 객체 수정, 유형 확인 등이 쉬워 개발자에게 큰 유연성을 제공합니다.
  • 생성된 오브젝트는 플래시 카드나 내장 메모리 등의 영구 메모리에 저장할 수 있습니다.RAM은 실행 시 값이 변경되는 Atribute 저장에만 사용됩니다.이것에 의해, 메모리 소비량이 삭감됩니다.
  • 클래스를 만들어 인스턴스화하는 것이 아니라 직접 GUI 제어용 객체를 작성할 수 있기 때문에 GUI 애플리케이션용 쓰기 인터페이스를 프로토타입 모델을 사용하여 효과적으로 구현할 수 있습니다.
  • 가비지 수집은 시스템에 의해 자동으로 수행됩니다.이를 통해 개발자들은 메모리 관리에 대한 걱정보다는 애플리케이션 개발에 더 집중할 수 있었습니다.가비지 컬렉션은 포인터가 잘못 할당 [6]해제된 메모리 위치를 가리키는 포인터의 행잉 문제를 완화하는 데도 도움이 되었습니다.
단점들
  • NewtonScript 코드는 한 플랫폼에서 작성되고 다른 플랫폼에서 실행되므로 디버깅이 [2]사실상 불가능했습니다.뉴턴 엔진에서 더 나은 디버깅 코드를 사용했다면 이 문제를 어느 정도 상쇄하는 데 도움이 되었을 것입니다만, 메모리가 한정되어 있었기 때문에 이 문제는 어려워졌습니다.대신 개발자는 에러 코드와 함께 모호한 표시를 받게 되며, 원래 코드의 행과 일치시킬 수 없게 됩니다.
  • 또 다른 단점은 동적 변수는 C++나 Java와 같이 정적으로 입력된 단순한 포인터 참조를 사용할 수 없기 때문에 동작 속도가 떨어진다는 것입니다.

영향

1998년 [8]애플이 뉴턴 프로젝트를 취소하면서 뉴턴스크립트에 대한 모든 주류 개발은 중단되었다.그러나 뉴턴스크립트에 사용된 기능들은 다른 프로그래밍 모델과 언어들을 계속해서 고무시킬 것입니다.

Self와 NewtonScript의 프로토타입 기반 객체 모델은 지금까지 이 개념을 사용한 언어 중 가장 인기 있고 가시적인 언어인 JavaScript에서 사용되었습니다.

또한 NewtonScript는 메모리 절약을 위해 NewtonScript에서 사용된 동일한 미분 상속 모델을 구현하는 Io라는 범용[9] 프로그래밍 언어의 개념적 조상 중 하나입니다.

「 」를 참조해 주세요.

레퍼런스

  1. ^ Smith, W. R. (1994-02-01). The Newton application architecture. Compcon Spring '94, Digest of Papers. pp. 156–161. doi:10.1109/CMPCON.1994.282931. ISBN 978-0-8186-5380-3.
  2. ^ a b Schödl, Arno (2004-10-10). "The NewtonScript Programming Language". Archived from the original on 2004-10-10. Retrieved 2016-09-15.{{cite web}}: CS1 maint: bot: 원래 URL 상태를 알 수 없습니다(링크).
  3. ^ a b Smith, Walter R. (1995-01-01). Using a Prototype-based Language for User Interface: The Newton Project's Experience. Proceedings of the Tenth Annual Conference on Object-oriented Programming Systems, Languages, and Applications. OOPSLA '95. New York, NY, USA: ACM. pp. 61–72. doi:10.1145/217838.217844. ISBN 978-0897917032.
  4. ^ "Dylan: An Object Oriented Dynamic Language". www.cise.ufl.edu. Retrieved 2016-09-22.
  5. ^ Chambers, C.; Ungar, D.; Lee, E. (1989-01-01). An Efficient Implementation of SELF a Dynamically-typed Object-oriented Language Based on Prototypes. Conference Proceedings on Object-oriented Programming Systems, Languages and Applications. OOPSLA '89. New York, NY, USA: ACM. pp. 49–70. CiteSeerX 10.1.1.588.6955. doi:10.1145/74877.74884. ISBN 978-0897913331.
  6. ^ a b "The NewtonScript Programming Language" (PDF). 1996. Archived from the original (PDF) on 2015-01-24.
  7. ^ McKeehan, Julie; Rhodes, Neil (1994). Programming for the Newton®: Software Development with NewtonscriptTM. 955 Massachusetts Avenue, Cambridge, Massachusetts 02139: AP Professional. ISBN 978-0-12-484800-9.{{cite book}}: CS1 유지보수: 위치(링크)
  8. ^ "Apple cancels Newton". windowsitpro.com. 1998-02-28. Retrieved 2016-09-22.
  9. ^ "io guide". iolanguage.org. Retrieved 2016-09-15.

외부 링크