SK8(프로그래밍 언어)
SK8 (programming language)![]() | |
패러다임 | 객체 지향 |
---|---|
개발자 | 애플 컴퓨터 |
첫 등장 | 1990년대 중반 |
안정적 해제 | 0.9 |
타이핑 규율 | 강하고 역동적인 |
OS | 매코스 |
면허증 | 오픈 소스 |
주요 구현 | |
매킨토시 커먼 리스프 | |
영향받은 | |
애플스크립트 |
SK8("스케이트"로 발음)은 1988년부터 1997년까지 애플의 어드밴스트 테크놀로지 그룹에서 개발된 멀티미디어 저작 환경이었다.하이퍼카드의 하이퍼토크 프로그래밍 언어 버전과 현대적인 객체 지향 애플리케이션 플랫폼을 결합하여 "스테로이드 위에 하이퍼카드"[1]로 묘사되었다.이 프로젝트의 목표는 창의적인 설계자들이 복잡한 독립형 응용프로그램을 만들 수 있도록 하는 것이었다.SK8의 주요 컴포넌트로는 객체 시스템, 프로그래밍 언어, 그래픽 및 컴포넌트 라이브러리, 통합 개발 환경인 프로젝트 빌더가 있었다.
SK8은 많은 역사 동안 연구 프로젝트로 남아 있었고, 애플스크립트와 같은 많은 다른 애플 프로젝트에 영감을 주었으며, 프로토타이핑 플랫폼으로 사용되었다고 보았다.1993년경 애플 제품 부서로부터 SK8 런타임을 출시하도록 팀을 배정받았지만, 맥의 역량과 파워로의 전환은 물론,PC 칩은 그렇게 큰 프로젝트를 다루기 어렵게 만들었다.원래 비전의 대부분을 완성하고 MacOS의 일부로 출시하기 쉬운 경로가 없어, 1996-1997년에 적극적인 개발이 종료되었고, 전체 프로젝트의 매킨토시 커먼 리스프 소스 코드가 1997년에 대중에게 공개되었다.
역사
SK8 프로젝트는 1987년 루벤 클라이먼이 애플에 입사하면서 만든 프로젝트다.그는 유연하고 객체 지향적인 사용자 인터페이스와 멀티미디어 개발 환경을 개발하기 위해 애플에 왔다.[2]그 프로젝트의 이름은 스케이트 보드에 대한 그의 관심에서 유래되었다.[3]공교롭게도 이때 직접 조작 인터페이스와 스크립팅 언어를 갖춘 하이퍼카드가 곧 출하될 예정이었다.HyperCard는 단순한 애플리케이션에 적합했지만, 잠재적인 적용 가능성을 제한하는 제한된 상호 작용 모델인 "카드의 "스택"을 사용하였다.SK8은 이러한 혜택을 보다 넓은 프로그래밍 역할로 확대하려고 시도했다.[2]
무엇이 SK8이 될 것인지에 대한 초기 작업은 시각적 프로그래밍보다는 인프라에 초점을 맞췄다.Kleiman의 첫 번째 노력은 동적 프로토타입 기반 객체 시스템인 MacFrames, 추론 엔진용 플러그인이 있는 프레임/객체 시스템이었다.기본 설정을 통해 MacFrames는 IntelliCorp의 KEY를 비롯한 다양한 객체 시스템을 에뮬레이트하는 데 사용되었다.이번 연구는 애플에서 실제 애플리케이션과 프로토타입을 개발하는 사용자들과 협력하여 SK8에서 사용되는 객체 모델을 도출했다.[2]맥프레임은 애플이 인수해 매킨토시 커먼리스프가 된 코랄리스프에서 개발됐다.
당시 매킨토시에는 일반화된 프로세스 간 통신(IPC) 시스템이 없었다.Kleiman은 Mac용 IPC init를 만들어 MacFrames가 다른 프로세스, 특히 HyperCard와 통신할 수 있도록 했다.이를 통해 HyperCard를 MacFrames의 비주얼 프로그래밍 프런트엔드로 사용할 수 있었다.MacFrames의 또 다른 목표는 분산 처리를 객체 시스템으로 바로 구축하는 것이었습니다.RPC API를 사용하는 대신 객체의 속성을 원하는 값으로 설정하고 결과를 콜백한다.맥프레임은 애플의 QA 그룹이 자동화된 블랙박스 테스트 시스템을 만들기 위해 사용했다.
SK8 Project Builder는 인터랙티브 컨트롤을 구축하는 도구와 일반적이지만 비침습적인 접착제를 포함한 풍부한 직접 조작 도구 세트를 제공하기 위해 만들어졌다.[2]건설업자의 목적은 시각 개발 환경을 구축하기 위한 시각/직접 조작 인터페이스를 제공하는 것이었다.즉, 시스템은 다른 업무에 맞춘 완전히 다른 개발 환경을 개발하는데 사용될 수 있다.SK8 그래픽 시스템의 첫 번째 버전은 HyperCard를 확장하도록 설계되어 카드들이 단일 "백그라운드" 템플릿이 아닌 여러 레이어를 가질 수 있게 되었다.
SK8 시스템은 처음에 Lisp에서 프로그래밍되었다.이것은 일반적으로 사용하기에는 너무 난해한 것으로 여겨졌다.게다가, 애플에서 사용되는 다양한 언어의 수에 대한 우려가 커지고 있었다.MacOS 현대화를 위한 광범위한 노력의 일환으로 새로운 통합 스크립팅 언어가 필요했다.1989년 클레이만은 데이비드 캔필드 스미스, 래리 테슬러와 함께 애플스크립트의 첫 버전을 디자인하고 구현했다.이 버전의 AppleScript는 SK8 오브젝트를 사용하였고, 2년 후 Apple Product Division은 AppleEvents를 AppleScript 오브젝트와 통신하는 접착제로 사용하여 AppleScript를 다시 구현하였다.원래의 프로토타입은 그 후 SK8Script로 이름이 바뀌었고, 1992년에 조립자에서 다시 구현되었다.
첨단 기술 그룹의 많은 연구원들이 그들의 프로젝트에 SK8을 사용하기 시작했다.일부 대학과 기업도 참여하기 시작했다.[2]이 시스템은 뉴턴, 퀵타임 인터페이스, 인터프로세스 커뮤니케이션의 프로토타입을 개발하기 위해 사용되었고, 어린이들을 위한 학습 도구인 스테이지크래프트를 포함한 많은 타이틀을 프로토타입으로 제작하는데 사용되었다.
성능상의 이유로 1992년과 1993년 SK8이 원점에서 다시 구현되었다.애플 케임브리지 연구센터에서 일하던 매킨토시 커먼 리스프(Common Lisp) 오브젝트 매장은 고립돼 SK8 매장에 직접 연결됐다.SK8Script 디버거는 조립자 언어 레벨(이전 Lisp)에서 재실행되었고 컴파일러와 런타임 성능이 향상되었다.
설명
SK8 시스템은 객체 시스템, 그래픽 및 구성요소 객체, SK8Script 언어, Project Builder 환경을 포함한다.
오브젝트 시스템
SK8 오브젝트 시스템은 자바스크립트와 마찬가지로 프로토타입 기반이었지만, 자바스크립트와 달리 오브젝트 속성은 그 자체가 오브젝트였다.따라서 속성은 단순히 값을 설정하거나 검색하는 키의 역할을 하는 이름이 아니라 임의의 행동을 가지고 있었다.이를 통해 속성은 지능적인 동작(예: 추론 엔진을 트리거하거나 RPC 네트워킹에서 엔드포인트 역할을 하는 것)을 가질 수 있었다. 즉, 속성은 "스마트 속성"이라고 생각할 수 있다.그 아이디어는 애플리케이션 프로그래머들이 API를 배울 필요 없이 객체를 조작하는 데 집중할 수 있도록 하는 것이었다.속성 이름을 관리하는 계층 네임스페이스가 구현되지 않음.
SK8스크립트
1989년까지 SK8의 스크립팅 언어는 리스프였다.이는 하이퍼토크(HT)의 영향이 컸던 SK8Script로 바뀌었다.SK8Script와 HyperTalk의 많은 차이점은 HT 개념의 일반화라고 볼 수 있으며, HyperCard 우주의 특정 개체와의 긴밀한 통합을 없애고 어떤 개체와도 상호 작용할 수 있는 일반화된 구문으로 대체한다.
HT와 마찬가지로 SK8Script 시스템의 핵심 개념은 재래식 시스템의 물체와 대략 동일한 '컨테이너'와 그러한 컨테이너를 식별하고 열거할 수 있게 한 '칭크' 시스템이다.HT는 개체와 컬렉션을 다루는 다양한 방법을 제공함으로써 프로그래머가 문맥상 가장 자연스러워 보이는 구문을 선택하고 나서 완전히 다른 곳에서 다른 구문을 사용할 수 있도록 하는 아이디어를 도입했었다.SK8스크립트도 비슷한 시스템을 제공했다.
그래픽 및 구성요소 객체
SK8의 우주는 무대 위의 액터스(Actors on a Stage)를 이용한 멀티미디어 중심의 시스템으로 구성됐다.액터들은 2D 그래픽 지원을 제공하는 데 필요한 기본 프레임워크, 예를 들어, 오브젝트의 위치 및 크기 등 프로토타입인 Actor 객체를 기반으로 한 모든 객체였다.배우들은 상호작용을 제공하기 위해 사용자 이벤트를 캡처한 보이지 않는 배경 개체인 스테이지에 배치되었을 때 눈에 띄게 되었다.SK8에서 전통적인 창은 다른 그래픽 개체와 같은 개체였다.배우가 무대에 섰을 때, 그것은 창문과 같은 사물처럼 행동할 수 있었다.[4]창문처럼 행동하는 복잡한 물체(예: 도넛 모양의 창문; 그 구멍의 불투명도 0%)를 디자인하는 것은 쉬웠고, 내용물은 텍스트 물체가 이리저리 스크롤되거나 아마도 그 틀 안에서 영화가 상영되는 것이었다."할로"라고 알려진 물체는 시각적 개발 환경에서 조작할 수 있도록 손잡이와 기타 위젯의 크기를 조정해 주었다.[5]
모든 SK8 배우들은 다른 배우들을 포함할 수 있다.[6]청킹 식을 사용하여 계층을 탐색할 수 있으므로set the visible of the first Rectangle in CoolOval to true
. 그런 다음 객체를 사용하여 스테이지로 이동함으로써 UI에서 볼 수 있도록 할 수 있다.insert
예를 들면 명령하다.insert CoolOval into the stage
그것은 타원형과 직사각형을 모두 보이게 할 것이다.[7]
GUI는 배우들만으로 구성되었다.창문과 같은 물체는 다른 물체(예: 닫힌 단추, 위젯)를 포함하는 불투명 사각형으로 제작될 수 있다.[8]모든 배우의 그리기 스타일은 렌더러에 의해 제어되었고, 이것은 GUI 제작 과정을 도왔다.예를 들어, BevelRender는 Windows 3.x 컨트롤이나 NeXTSTEP의 제목 표시줄과 같은 효과를 생성하면서 행위자 주위에 가장자리를 형성하는 데 사용될 수 있다.다른 렌더러는 색상과 이미지 채우기, 그라데이션, 타일 및 혼합을 포함했다.[9]프로그래밍 용어의 차이는 없었지만 직사각형 같은 기본 물체는 '지오메트리 액터'로 분류됐고, 버튼과 같은 전통적인 GUI 요소는 '인터페이스 액터'로 알려졌다.[10]
The Stage는 마우스다운 클릭과 키 누름과 같은 사용자 생성 이벤트를 캡처하여 액터즈로 전송했다.어떤 객체가 메시지를 먼저 수신할 것인지 시각적 계층 구조는 스테이지가 Z 순서가 되어 있고 앞에 더 가까운 객체가 먼저 메시지를 받았다.메시지를 클래스/프로토타입 계층 구조로 전달할 수 있음do inherited
명령하다[11]
프로젝트 빌더
Project Builder는 시각적 개발 환경을 구축하기 위한 환경이었다.코드 편집, 디버깅, 그래픽 및 스마트 컴포넌트 라이브러리, 런타임 타겟팅 지원, 직접 조작 그래픽 인터페이스 빌더 시스템 등을 제공했다.Builder 시스템의 핵심 요소는 "개요자" 패널이었는데, 현재 열린 프로젝트의 모든 객체의 분류 목록을 가지고 있었다.여기에는 라이브러리, 사용자가 만든 기능 및 방법, 변수 등이 포함된다.[12]두 번 클릭하거나 GUI 빌더에서 개체를 선택할 때 나타나는 관련 팝업 메뉴를 클릭하여 이러한 메뉴를 검사하고 편집할 수 있다.[8]나타난 개체 편집기는 개체의 "속성"(인스턴스 및 클래스 변수)을 한 창에 나열하고 다른 창에 "손잡이"(방법)[13]를 나열했다.
GUI 빌더에는 시각적 객체를 구성하기 위한 드래그 앤 드롭 기반 시스템이 포함되어 있었다.[14]SK8은 전통적인 '스크린'이 없었고, 보이지 않는 '스테이지' 객체를 사용해 이벤트와 시각적 객체를 관리하는 배경 역할을 했다.한 가지 흥미로운 측면은 전통적인 의미에서 어떤 창문도 필요하거나 어떤 것도 전시할 것으로 기대되지 않는다는 것이다.사실, 어떤 시각적 물체는 (끌어서 놓기와 다른 스마트한 속성을 통해) 창문과 같은 행동을 할 수 있다.그러나 SK8은 하이퍼카드에 없는 기능인 완전한 메뉴 바를 편집하고 프로그래밍하는 시스템을 포함했다.하이퍼카드의 또 다른 요구 사항은 미디어 편집기로서 매킨토시 리소스를 프로젝트 안팎으로 이동할 수 있게 했다.SK8은 IDE에 이 기능을 내장했다.시스템의 다른 구성 요소에는 온라인 문서 시스템, 시스템 전반의 개체 및 명령 목록, 코드 편집기 및 디버거 창이 포함되었다.[15]
시스템과의 상호 작용
SK8Script는 매킨토시 툴박스와 더 직접적으로 상호작용할 수 있도록 운영체제 기능을 호출하고 빼내는 시스템을 제공했다.HyperCard에서 임의의 Toolbox 코드와의 상호 작용은 블랙박스에 기능을 캡슐화한 XCMD 및 XFCN으로 알려진 사용자 정의 코드 리소스를 통해 처리되었다.이것들은 내부 작전이 보이지 않는 한 번의 작업으로 호출되어 반환되었다.SK8에 따르면 SK8Script는 캡슐화된 코드와 직접 상호작용하고 변수를 설정하며 함수를 호출하고 결과를 반환할 수 있다.외부 코드는 SK8Script에 호출하거나 변수를 검사 및 설정하거나 함수를 호출할 수도 있다.[16]
참조
인용구
- ^ 1998년, SK8.
- ^ a b c d e 애플 1995, SK8 히스토리.
- ^ 응용 프로그램 스플래시 스크린에는 스케이트 보드가 눈에 띄게 그려져 있다.
- ^ 사용자 1994, 페이지 211–213.
- ^ 사용자 1994, 페이지 57-61.
- ^ 사용자 1994, 페이지 203–204.
- ^ 사용자 1994, 페이지 205.
- ^ a b 사용자 1994, 페이지 12.
- ^ 사용자 1994, 페이지 76–84.
- ^ 사용자 1994, 페이지 4.
- ^ 사용자 1994, 페이지 26.
- ^ 사용자 1994 페이지 11.
- ^ 사용자 1994, 페이지 15.
- ^ 사용자 1994, 페이지 20.
- ^ 사용자 1994, 4장.
- ^ 사용자 1994, 19장.
참고 문헌 목록
- The SK8 Multimedia Authoring Environment. Apple. 1995.
- Apple's SK8 license agreement. Apple. 1994.
- Spohrer, Jim (April 1998). "ATG Education Research — The Authoring Tools Thread'" (PDF). SIGCHI Bulletin. 30 (2). doi:10.1145/279044.279173. S2CID 15281183.
관련특허
- 컴퓨터 생성 물체를 선택하기 위해 물체 감도를 사용하는 시스템 및 방법, 미국 특허 5737554
- 제한된 행위자를 상호 작용하기 위한 그래픽 인터페이스, 미국 특허 5450540
추가 읽기
- 복잡한 소프트웨어를 사용자 정의 가능한 시스템, 맨 및 사이버네틱스 만드는 방법, 1994.인간, 정보 및 기술, 1994 IEEE 국제 컨퍼런스, 1994년 10월
- 교육 저작 도구 및 교육 목적 경제, 교육 분야 대화형 미디어 저널, 98(10), 1998년 10월
외부 링크
- SK8 소스 코드(zip 형식)
- SK8 소스 코드(StuffIt 형식), 애플 연구용 FTP 서버의 거울