텔레스콤스크립트(프로그래밍 언어)
Telescript (programming language)Telescript는 General Magic이 전체 Magic Cap 시스템의 일부로 작성한 에이전트 지향 프로그래밍 언어입니다.Telescript 프로그램은 High Telescript로 알려진 수정된 C-like 구문을 사용했으며 실행을 위해 Low Telescript라는 스택 기반 언어로 컴파일되었습니다.Low Telescript는 호스트 컴퓨터의 가상 시스템 인터프리터 또는 "Telescript 엔진" 내에서 실행되었습니다.
Telescript의 기본 모델은 Java와 유사하며 주로 응용 프로그램의 실행 위치가 다릅니다.Java는 Java 애플리케이션을 모든 플랫폼에 다운로드하여 로컬에서 실행할 수 있도록 모델링되었습니다.Telescript는 기본적으로 이러한 상황을 반전시켜 제한된 기능을 가진 최종 사용자 기기가 Telescript 프로그램을 서버에 업로드하여 서버 기능을 활용할 수 있도록 했습니다.실행 중인 프로그램을 이행할 수도 있습니다.이 언어에는 프로그램의 코드와 시리얼화된 상태를 정리하고, 실행을 계속하기 위해 다른 Telescript 엔진(디바이스 또는 서버)으로 전송하고, 최종적으로 원래의 클라이언트 또는 서버 디바이스로 돌아가 출력을 제공하는 기능이 포함되어 있습니다.
제너럴 매직은 원래 애플사의 팀으로 개발되어 1990년에 분사되었다.1992년 뉴턴 태블릿 PC로 같은 시장에 진출하기로 결정했다.General Magic은 시장에서 틈새를 찾을 수 없었고, Telescript 서비스는 모바일 컴퓨팅과 무관한 신제품 때문에 곧 폐지되었습니다.
역사
1990년 Marc Porat는 당시 애플 CEO였던 John Sculley에게 컴퓨팅의 미래는 데스크톱 PC에 있는 것이 아니라 네트워크 액세스 가능한 [1]서버에 있는 컴퓨팅 능력, 통신 시스템 및 데이터를 결합한 훨씬 더 작은 휴대용 기기에 있다고 설득했습니다.그는 노트북 컴퓨터는 접속하는 컴퓨터보다 항상 낮은 전력을 가지고 있다고 지적하고 이것이 설계의 일부라고 제안했습니다.데스크탑 시스템의 작업을 수행할 수 있는 휴대용 컴퓨터를 만드는 것이 아니라, 휴대용 기기는 보이지 않게 서버의 계산 능력을 사용하여 유사한 기능을 생성해야 합니다.결과입니다.[2][3]
스컬리는 Porat가 코드명 "Pocket Crystal"로 개념 연구를 시작할 수 있도록 하는 데 동의했다.초기 팀의 주요 멤버는 포랏과 유명한 매킨토시 개발자인 빌 앳킨슨과 앤디 헤르츠펠트였다.이 팀은 고위 경영진으로부터 무시당하고 끊임없이 자원을 얻기 위해 고군분투하고 있음을 금방 알게 되었습니다.그들은 Pocket Crystal을 별개의 회사로 돌린다는 생각으로 Sculley에 다시 접근했다.Sculley는 이에 동의하고 하드웨어 측면에서 새로운 파트너를 초대하는 아이디어에 동의했습니다.제너럴 매직(GM)이라는 새로운 회사는 1990년 5월 애플, 소니, 모토로라가 각각 10%의 지분을 가지고 설립되었습니다.이 회사는 곧 Joanna Hoffman, Susan Kare, Dan Winkler, Bruce Leak 및 Phil [1]Goldman을 포함한 다른 Macintosh 졸업생들로 채워졌다.
1992년까지 GM은 Sony, Motorola, Matsushita, Philips, British Telecom 및 AT&T Corporation을 포함한 다수의 회사와 개발 계약을 체결했습니다.이로 인해 상당한 프레스 "버지"[3]가 발생하였습니다.이때쯤 애플은 뉴턴 프로젝트를 시작했는데, 뉴턴은 풀사이즈 아이패드와 더 비슷한 크기의 태블릿과 같은 대형 컴퓨터를 위한 디자인이다.General Magic의 성공으로 그들은 뉴턴을 정확히 같은 시장에 재배치하여 1993년에 출시하기 위해 서두르고 있다.그들은 또한 제너럴 매직의 지분을 매각하고 소송을 제기했다.General Magic의 파트너는 1994년까지 하드웨어를 출시하지 않았습니다.그때 뉴턴은 기본적으로 PDA(개인용 디지털 어시스턴트)가 무엇인지 정의했고 PDA 시스템은 필적 인식 능력에 따라 판단되었습니다.Magic Cap은 포인트 앤 클릭 인터페이스(HyperCard 또는 최신 iOS와 [2]유사)였습니다.
1995년까지 그 회사는 예전 모습의 껍데기였고 대부분의 초기 개발자들은 떠났다.1996년에 Steve Markman이 인수하기 위해 고용되었고, 그는 회사를 새로운 방향으로 이끌기 위해 Kevin Surace를 고용했습니다.새로운 팀이 Portico 전화 기반의 퍼스널 어시스턴트 시스템을 개발했습니다.이것은 오늘날 OnStar의 기반이 되고 있습니다.원래 핸드헬드 그룹은 1998년에 DataRover Mobile Systems Incorporated로 분사되었고,[4] 이후 2000년에 Icras로 이름이 변경되었으며,[5] 2001년에 폐쇄되기 전에 여러 수직 시장에 서비스를 제공하고 있습니다.원래 회사의 유적은 [3]2004년에 청산되었다.
묘사
기본 개념
Telescript는 에이전트로 알려진 소규모 프로그램의 개념을 모델로 작성되었으며, 이러한 프로그램은 모두 Telescript 클라우드라고 불리는 1대 이상의 서버 클러스터에서 실행됩니다.사용자의 핸드헬드 기기는 비록 기능이 제한적이긴 하지만 그러한 장소 중 하나였다.이 모델에서는 대부분의 정보와 서비스가 AT&T와 같은 통신 공급자가 호스팅하는 대규모 서버 컴퓨터에서 실행되는 장소에서 제공된다고 가정했습니다.초기 문서에서도 이를 클라우드 [1]실행이라고 합니다.사용자용 프로그램은 로컬, 프로바이더의 호스트 또는 서드파티 서버로 전송될 수 있는 다수의 에이전트로 구성됩니다.통신을 조정하기 위해 Telecript는 사용자를 일의로 식별하는 텔네임과 네트워크 [6]간 이동 중에도 디바이스를 식별하는 텔레어드레스의 개념도 포함시켰습니다.
예를 들어, 사용자가 구매하고자 하는 새 바비큐 그릴의 가격을 알아보도록 요청하는 쇼핑 애플리케이션을 생각해 보십시오.기존 클라이언트-서버 모델에서는 응용 프로그램이 다수의 쿼리를 형성하여 여러 서비스에 전송한 후 결과를 수집하여 표시합니다.Telescript 모델에서는 응용 프로그램이 요청 데이터가 채워진 새 에이전트를 빌드하고 이름과 주소를 스탬프로 표시한 후 처리를 위해 서버상의 저장소로 보냅니다.그런 다음 해당 서버는 요청을 직접 처리하거나 실제 공급업체의 장소와 같은 다른 장소에 에이전트를 넘겨 추가 처리를 수행할 수 있습니다.결과를 에이전트의 내부 데이터 필드에 배치하여 네트워크를 통해 사용자의 장치로 반송하거나 새로운 "메신저" 에이전트를 생성하여 결과 데이터만 전송하여 네트워크 데이터 [7]전송을 최소화할 수 있습니다.
또한 이 모델은 프로그램 상호 작용의 경우 데이터 교환이 이루어지는 방식에서도 기존 솔루션과 다릅니다.예를 들어, 사용자가 이전 검색에서 발견한 바비큐 중 하나를 구매하기로 선택한 경우, 기존 시스템에서는 주문 양식을 작성하고 지불을 확인하는 작업이 사용자의 장치와 원격 서버 간의 직접 통신을 통해 수행되므로, "라이브" 통신 채널이 필요합니다.ess. Telescript 모델에서는 구매를 완료하기 위해 필요한 정보를 가진 새로운 에이전트가 해당 벤더의 스토어로 전송되어 스토어 장소 또는 벤더의 에이전트와 상호 작용한 후 성공 또는 실패와 함께 돌아옵니다.메인 통신은 에이전트와 리모트서버상의 장소간에 행해지므로, 네트워크상의 통신은 프로세스의 [8]개시와 종료시에만 필요합니다.
Telecompript는 객체 지향(OO)이었으며 객체 상태 및 통신을 설명하기 위해 많은 일반적이지 않은 용어를 사용했습니다.속성은 인스턴스 변수 또는 필드라고 하는 다른 언어에 대응합니다.메서드 호출은 요청으로 알려져 있으며 메서드 구현을 실행하는 액션은 수행으로 알려져 있습니다.이러한 모든 콜은 항상 성공 또는 실패를 나타내는 메시지로 응답합니다.이러한 콜은 필요에 따라 트랩하여 응답할 수 있습니다.데이터를 메서드 호출에 전달하거나 메서드 호출에서 벗어나는 방법에 대한 힌트를 제약이라고 하며,[9] 특히 공통적인 "기준" 및 "값별"에 대해 다룹니다.
텔레스스크립트는 일반적으로 데이터 수명 측면에서 상태 비저장입니다.프로그램 내의 모든 데이터(인스턴스 변수와 로컬 변수 모두)는 항상 직렬화되었습니다.에이전트는 언제든지 호출되거나 일시 정지될 수 있으며 상태를 잃지 않습니다.또, 이 메카니즘에 의해서, 호스트간에 에이전트를 간단하게 통신할 수 있게 되었습니다.
구문 및 레이아웃
Telescript의 제어와 레이아웃은 C에서 영감을 얻었지만 정확한 구문은 상당히 달랐다.명확한 차이점 중 하나는 C스타일의 곱슬괄호를 정의 수준에서 괄호로 대체하고 논리문 및 흐름제어문 내에서 문을 그룹화하기 위해 곱슬괄호를 유지하며 콜론을 사용하여 이름을 정의에서 분리하는 것입니다.다음 코드는 [10][N 1]Pie 유형의 객체에 대한 인터페이스를 정의합니다.
원형: interface(개체) = (공개 이름:문자열; initialize: op(이름: String);;
키워드의 사용에 주의해 주세요.op
에 대응합니다.function
또는sub
다른 언어에서 찾을 수 있습니다.파이 구현은 1개 또는 여러 개에서 사용할 수 있습니다.class
오브젝트, 정리할 수 있습니다.modules
s는 Visual Basic과 비슷한 방식으로 되어 있습니다.네트워크namespace
건설하다. #include
헤더 파일의 Import에 사용됩니다만, Import는,modules
파일 [11]전체가 아닙니다.
Telescript의 에이전트와 플레이스 개념은 프로세스의 하위 클래스인 에이전트와 플레이스라는 두 클래스를 하위 분류함으로써 호출됩니다.코드를 알기 쉽게 하기 위해 이 두 가지를 모두 단일 파일에 저장할 수 있으며, 단일 모듈로 수집할 수도 있습니다.다음 코드는 [12]Pies를 판매하는 스토어를 구현하는 데 필요한 에이전트를 정의합니다.
PieStoreModule: 모듈 = ( #pie "pie.i" PieBuyer: class(에이전트) = (공개 라이브: 스폰서 op() = {.go.destination), myPie = place@PieSeller.sellPie(); *.go(*.originPlace); }; ); PieSeller: 클래스(장소) = (공용 sellPie: op() Pie = { aPie:Pie Nil; aPie = *.getPieFromStock; (aPie = 0)인 경우 {PieBuyer(*.distributor)티켓, 허가(nil), aPie = *.waitForPie(); 반환 aPie; }; }; );
에이전트인 PieBuyer 개체에는 단일 메서드가 포함되어 있습니다.live
모든 [13]에이전트가 사용하는 표준 부팅 방법.단순히 PieBuyer를 만들고 호출하는 것만으로live
와 비슷한 방법으로 불릴 수 있는 방법new
대부분의 OO 언어에서 사용할 수 있지만, 이 방법을 설정 후 호출합니다.* 는, 보다 일반적으로 실장되어 있는 것을 대체합니다.self
또는Me
오브젝트 자체를 나타냅니다.이 경우 PieBuyer 에이전트입니다.코드에서는 기본적으로 오브젝트가 작성될 때 오브젝트가 작성 중에 송신된 위치(*.destination)로 송신되어야 한다고 되어 있습니다.그러면 일치하는 장소 객체(이 경우 PieSeller)에 sellPie를 지시해야 합니다.이 명령어가 완료되면 에이전트는 원래 위치로 돌아갑니다.호출 어플리케이션은 myPie [12]변수를 검사하여 결과를 조사할 수 있습니다.
장소인 PieSeller 개체에는 단일 메서드도 포함되어 있습니다.sellPie
aPie라는 로컬 변수를 정의하여 Pie 오브젝트 또는 "nothing"으로 정의합니다.이것은 파이가 없는 경우에 사용됩니다.그런 다음 자체 getPieFromStock 메서드(여기에는 표시되지 않음)를 호출하여 aPie를 값으로 설정하려고 시도한 후 값이 반환되었는지 확인합니다.예를 들어 재고가 비어 있는 경우 실패하면 자체 PieBuyer 개체를 새로 만들고 해당 요청을 다른 상점으로 전송한 후 응답을 기다립니다.그 상점은 요청을 다른 상점으로 전송하는 등의 조치를 취할 수 있습니다.이 일련의 이벤트가 파이로 끝나거나 실패하거나 하면 PieSeller 플레이스는 최종적으로 해당 이벤트를 호출하는 [12]PieBuyer에게 반환합니다.
오브젝트는 일반적으로 오브젝트를 작성한 장소에 의해 "소유"됩니다.소유권은 기능과 보안 설정도 제공합니다.이 언어는 다음을 통해 객체의 소유권을 취득할 수 있습니다.own {}
구성(이 경우)sponsored
실행 중인 플레이스의 소유권 내에서 실행해야 함을 나타내는 키워드입니다.예를 들어, 이는 에이전트에 인벤토리의 주식을 볼 수 있는 권한을 부여하기 위해 사용될 수 있으며, 그렇지 않으면 비공개 값이 될 수 있습니다.사용.sponsored
코드 배치와 완전히 같은 결과입니다.own {}
발신측에서 [14]이 처리를 허가합니다.
텔레스코프스크립트에는 몇 가지 빌트인 컬렉션 타입이 포함되어 있습니다.Set
,List
,Dictionary
,그리고.Collection
마지막은 텍스트인덱스를 포함한 목록(사전의 절반)입니다.Telescript 오류의 한 가지 일반적인 원인은 컬렉션을 전체적으로 에이전트로 되돌릴 수 있지만 그 안에 있는 개별 항목은 플레이스에 의해 소유된다는 것입니다.따라서, 만약 누군가가return MyCollection[someIndex];
는, 유저의 디바이스에 늘로서 반송됩니다.해결책은 추가 구문, 즉DictOwned
그리고.ColOwned
힌트: 반환 시 반환된 값의 소유권이 [15]변경되어 원래 위치로 돌아가면 결과로 일련화됩니다.
서브클래스는 플레이버로 알려져 있습니다.상기 PieBuyer 클래스는 Agent의 플레이버입니다.Telescript에는 혼합 클래스의 개념도 포함되어 있어 다른 클래스에 포함할 수 있는 코드만 포함하는 클래스를 만들 수 있어 다중 상속과 유사한 기능을 제공합니다.믹스인은 [16]맛이 아닙니다.
현대의 많은 OO 언어처럼 Telescript는 인터페이스와 구현을 분리하여 다음과 같이 배치했습니다..i
인터페이스용 파일 및.t
("telescript"와 같은 t)를 사용합니다.이 언어에는 세 번째 유형의 파일도 정의되어 있습니다..d
여러 개를 조합하여.i
파일을 [17]정리합니다.컴파일된 코드가 에 배치되었습니다..s
이 파일은 의 링커 명령에 의해 유도되었습니다..l
파일.[18] 외부 애플리케이션 프레임워크는 C++ 코드를 [19]Telescript에 의해 호출할 수 있도록 했습니다.
메모들
- ^ 이러한 예는 가이드의 원본을 수정하여 구문 및 철자 오류를 수정한 것입니다.
레퍼런스
인용문
- ^ a b c 1994년 부담금.
- ^ a b 1995년 클락 앤 크나스터
- ^ a b c 카넬로스 2011년
- ^ Dan Hanttula, "Magic Mirror", Pen Computing, 2000년 4월
- ^ Mark Beaulieu, "무선 인터넷 애플리케이션과 아키텍처", Addison-Wesley Professional, 2002, 9780201733549, 페이지 12.
- ^ 참고 자료 1995, 페이지 1
- ^ 1995, 페이지 1-2 참조.
- ^ 참고 자료 1995, 페이지 2
- ^ 1995, 페이지 8-12 참조.
- ^ 가이드 1995, 7페이지
- ^ 가이드 1995, 8페이지
- ^ a b c 가이드 1995, 9페이지
- ^ 가이드 1995, 페이지 66
- ^ 가이드 1995, 페이지 40
- ^ 가이드 1995, 페이지 42
- ^ 참고 자료 1995, 페이지 20
- ^ 가이드 1995, 3페이지
- ^ 가이드 1995, 페이지 4
- ^ 가이드 1995, 5페이지
참고 문헌
- Levy, Steven (April 1994). "Bill and Andy's Excellent Adventure II". Wired.
- Clark, Richard; Knaster, Scott; et al. (May 1995). "A developer's introduction to General Magic and Magic Cap". MacTech.
- Kanellos, Michael (18 September 2011). "General Magic: The Most Important Dead Company in Silicon Valley?". Forbes.
- Telescript Language Reference (PDF). General Magic. October 1995.
- Telescript Programming Guide. General Magic. 1995.