Jump to content

Телескрипт (язык программирования)

Telescript — это агентно-ориентированный язык программирования, написанный General Magic как часть общей системы Magic Cap . Программы Telescript использовали модифицированный C - синтаксис, известный как High Telescript, и для выполнения компилировались в основанный на стеке язык Low Telescript. Low Telescript работал в интерпретаторах виртуальных машин или «механизмах Telescript» на хост-компьютерах.

Базовая модель Telescript аналогична Java и отличается в первую очередь тем, где будут запускаться приложения. Java была создана таким образом, чтобы можно было загружать приложения Java на любую платформу и запускать их локально. Telescript по сути изменил это, позволив оборудованию конечных пользователей с ограниченными возможностями загружать программы Telescript на серверы, чтобы они могли воспользоваться возможностями сервера. Telescript может даже перенести работающую программу; язык включал в себя функции маршалирования кода программы и сериализованного состояния, передачи его в другой механизм Telescript (на устройстве или сервере) для продолжения выполнения и, наконец, возврата к исходному клиентскому или серверному устройству для доставки вывода.

General Magic изначально разрабатывалась как команда внутри Apple Inc. и была выделена в 1990 году. Когда в 1992 году они начали вызывать некоторый ажиотаж в прессе, Apple решила выйти на тот же рынок со своим Newton планшетным компьютером . General Magic не смогла найти свою нишу на рынке, и вскоре услуги Telescript были заменены новыми продуктами, не связанными с мобильными компьютерами .

В 1990 году Марк Порат убедил тогдашнего генерального директора Apple Джона Скалли , что будущее вычислений лежит не за настольными персональными компьютерами , а за гораздо меньшими портативными устройствами, сочетающими в себе вычислительную мощность, системы связи и данные, расположенные на доступных по сети серверах. [1] Он отметил, что портативные компьютеры всегда будут иметь меньшую мощность, чем машины, к которым они подключаются, и предложил сделать это частью конструкции — вместо того, чтобы пытаться создать портативный компьютер, который мог бы выполнять задачи настольной системы, портативное устройство должно незаметно использовать вычислительную мощность серверов для получения аналогичного результата. [2] [3]

Скалли согласился позволить Порату начать исследование концепции под кодовым названием «Карманный кристалл». Ключевыми членами ранней команды были Порат и известные Macintosh разработчики Билл Аткинсон и Энди Херцфельд . Команда быстро обнаружила, что высшее руководство ее игнорирует, и ей пришлось постоянно бороться за ресурсы. Они снова обратились к Скалли с идеей выделения Pocket Crystal в отдельную компанию. Скалли согласился на это, а также на идею приглашения новых партнеров по аппаратному обеспечению. Новая компания General Magic (GM) была создана в мае 1990 года, в которой Apple, Sony и Motorola владели по 10% акций каждая. Ряды компании вскоре пополнились другими выпускниками Macintosh, в том числе Джоанной Хоффман , Сьюзан Каре , Дэном Винклером, Брюсом Ликом и Филом Голдманом . [1]

К 1992 году GM подписала соглашения о разработке с рядом компаний для работы со средой Magic Cap, включая Sony, Motorola, Matsushita , Philips , British Telecom и AT&T Corporation . Это вызвало значительный «ажиотаж» в прессе. [3] К этому времени Apple запустила проект Newton — дизайн более крупного портативного планшетного компьютера, более похожего на полноразмерный iPad . Благодаря успеху General Magic в прессе, они вновь позиционировали Newton на том же рынке и поспешили выпустить его в 1993 году. Они также продали свою долю в General Magic и подали на них в суд. Партнеры General Magic не выпускали аппаратное обеспечение до 1994 года, когда компания Newton по существу определила, каким должен быть персональный цифровой помощник (КПК), а системы КПК оценивались по их возможностям распознавания рукописного текста . Magic Cap представлял собой интерфейс типа «укажи и щелкни» (похожий на HyperCard или современную iOS ). [2]

К 1995 году компания превратилась в оболочку прежней сущности, и большинство первоначальных разработчиков ушли. В 1996 году на его место был нанят Стив Маркман, и он нанял Кевина Сурасе, чтобы тот повел компанию в новом направлении. Новая команда разработала систему личного помощника на базе телефона Portico, которая и по сей день является основой OnStar . Первоначальная группа портативных устройств была выделена в 1998 году как DataRover Mobile Systems Incorporated, а затем в 2000 году переименована в Icras. [4] обслуживала ряд вертикальных рынков, прежде чем закрылась в 2001 году. [5] Остатки первоначальной компании были ликвидированы в 2004 году. [3]

Описание

[ редактировать ]

Основные концепции

[ редактировать ]

Telescript был смоделирован на основе концепции небольших программ, известных как агенты , которые будут взаимодействовать с вычислительными службами, известными как места, все из которых будут работать в кластере из одного или нескольких серверов, на которых размещается так называемое облако Telescript. Портативное устройство пользователя было одним из таких мест, хотя и с ограниченными возможностями. Модель предполагала, что большая часть информации и услуг будет предоставляться местами, работающими на более крупных компьютерах-серверах, размещенных у таких провайдеров связи, как AT&T. Даже в ранних документах это называется « работа в облаке» . [1] Программы, ориентированные на пользователя, будут состоять из ряда таких агентов, которые могут запускаться локально, на хостах провайдера или даже перенаправляться на сторонние серверы. Для координации связи Telescript также включил концепцию телеимени , которое уникально идентифицирует пользователей, и телеадресов , которые идентифицируют устройство даже при его перемещении между сетями. [6]

Например, рассмотрим приложение для покупок, в котором пользователь просит узнать цены на новый гриль-барбекю, который он хочет приобрести. В традиционной модели клиент-сервер приложение формирует ряд запросов, отправляет их ряду сервисов, а затем собирает результаты и отображает их. В модели Telescript приложение вместо этого создаст нового агента, заполненного данными из запроса, пометит его своим именем и адресом, а затем отправит его в хранилище на сервере для обработки. Затем этот сервер может обработать запрос напрямую или передать агента в другие места, например, к местам реальных поставщиков, для дальнейшей обработки. Результаты могут быть помещены во внутренние поля данных агента и отправлены обратно через сеть на устройство пользователя, или может быть создан новый агент-«мессенджер», который будет переносить только данные результатов и отправлять обратно, чтобы минимизировать передачу сетевых данных. [7]

Модель также отличается от традиционных решений тем, как происходит обмен данными при взаимодействии программ. Например, если пользователь решает купить один из барбекю, которые он нашел при предыдущем поиске, в обычной системе задача заполнения форм заказа и подтверждения оплаты будет выполняться посредством прямой связи между устройством пользователя и удаленным сервером. требующий «живого» канала связи на протяжении всего процесса. В модели Telescript новый агент с информацией, необходимой для совершения покупки, отправляется в магазин этого поставщика, взаимодействует с магазином или агентами поставщика, а затем возвращается с успешным или неудачным результатом. Основная связь происходит между агентами и местами на удаленном сервере, поэтому связь по сети требуется только в начале и конце процесса. [8]

Telescript был объектно-ориентированным (ОО) и использовал ряд необычных терминов для описания состояния объекта и коммуникаций. Атрибуты соответствуют тому, что в других языках называется переменными или полями экземпляра. Вызовы методов назывались запросами , а сам процесс реализации метода назывался его выполнением . Все такие вызовы всегда отвечали сообщением, указывающим на успех или неудачу, и запрашивающий объект мог при необходимости перехватить их и ответить на них . Подсказки о том, как передавать данные в вызовы методов и из них, были известны как ограничения общие « по ссылке » и « по значению ». и охватывали, среди прочего, [9]

Telescript, как правило, не имел состояния с точки зрения срока жизни данных. Все данные в программе, как экземплярные, так и локальные переменные, всегда сериализовались. Агенты могут быть вызваны или приостановлены в любой момент и не потеряют своего состояния. Этот же механизм также позволял агентам легко обмениваться данными между хостами.

Синтаксис и макет

[ редактировать ]

Хотя управление и структура Telescript были вдохновлены C, его точный синтаксис значительно отличался. Одним из очевидных отличий была замена фигурных скобок в стиле C круглыми скобками на уровне определения, сохранение фигурных скобок для группировки операторов внутри операторов логики и управления потоком , а также использование двоеточия для отделения имени от его определения. Следующий код определяет интерфейс для объектов типа Pie : [10] [Н 1]

  Pie: interface(Object) = (
       public
           name: String;
           initialize: op(name: String);
  );

Обратите внимание на использование ключевого слова op, что соответствует function или sub встречается в других языках. Реализация пирога может использоваться в одном или нескольких class объекты, которые могут быть организованы в modulesпохоже на Visual Basic .NET namespace построить. #include используется для импорта файлов заголовков, но импорт является локальным для modules, а не файл в целом. [11]

Концепции агента и места Telescript были вызваны простым разделением на подклассы этих двух классов, Agent и Place, которые оба были подклассами Process. Для ясности кода можно поместить оба этих компонента в один файл или даже собрать их в один модуль. Следующий код определяет агентов, необходимых для реализации магазина по продаже пирогов: [12]

   PieStoreModule: module = (
   	#include "pie.i"
       
   	PieBuyer: class(Agent) = (
   		public
   			live: sponsored op() = {
   					*.go(*.destination);
   					myPie = [email protected]();
   					*.go(*.originPlace);
   				};
   			);
   			
   	PieSeller: class(Place) = (
   		public
   			sellPie: op() Pie = {
   				aPie: Pie | Nil;
   				aPie = *.getPieFromStock;
   				if (aPie = nil) {
   					PieBuyer(*.distributorTicket, Permit(nil));
   					aPie = *.waitForPie();
   					return aPie;
   				};
   			};
   		);
   );

Объект PieBuyer, Агент, содержит единственный метод: live, стандартный метод запуска, используемый всеми агентами. [13] Простое создание PieBuyer и его вызов приведет к live метод, который будет вызываться аналогично методу new Операция встречается в большинстве объектно-ориентированных языков, хотя этот метод вызывается после установки. * заменяет то, что чаще всего реализуется как self или Me, ссылаясь на сам объект, в данном случае на агента PieBuyer. Код по сути говорит, что при создании объект должен отправить себя (*.go) в то место, которое было отправлено ему во время создания (*.destination). Оказавшись там, он должен указать соответствующему объекту места, в данном случае PieSeller, продать Pie. Когда эта команда будет выполнена, агент вернется в исходное место. Вызвавшее приложение может затем изучить результаты, проверив переменную myPie. [12]

Объект PieSeller Place также содержит единственный метод: sellPie. Он определяет локальную переменную aPie, определяя ее как объект Pie или «ничего», который используется в случае отсутствия круговых диаграмм. Затем он пытается присвоить aPie значение, вызывая собственный метод getPieFromStock (здесь не показан), а затем проверяет, вернул ли он значение. Если это не удалось, например, если запас был пуст, он создает новый собственный объект PieBuyer, отправляет этот запрос в другой магазин и затем ждет ответа. Этот магазин может перенаправить запрос другому и так далее. Когда эта цепочка событий завершается, либо с пирогом, либо безуспешно, место PieSeller наконец возвращает его вызывающему PieBuyer. [12]

Объекты обычно «принадлежат» тому месту, где они были созданы. Владение также дает возможности и настройки безопасности. Язык может стать владельцем объекта посредством own {} построить или, в этом случае, использовать sponsored Ключевое слово, указывающее, что он должен работать в пределах владения того места, где он работает. Это можно использовать, например, чтобы предоставить агенту возможность видеть запасы в инвентаре, значения, которые в противном случае были бы частными. С использованием sponsored это точно тот же результат, что и размещение кода в own {} блокировать, но позволяет это сделать в вызывающем объекте. [14]

Telescript включает в себя несколько встроенных типов коллекций: Set, List, Dictionary, и Collection, последний из которых по сути представляет собой список с текстовыми индексами (половина словаря). Одним из распространенных источников ошибок в Telescript было то, что, хотя коллекцию в целом можно было передать обратно в агент, отдельные элементы в ней принадлежали этому месту. Таким образом, если использовать return MyCollection[someIndex];, он вернется на устройство пользователя как нулевой. Решением стал дополнительный синтаксис, DictOwned и ColOwned подсказки, которые приводили к изменению владельца возвращаемых значений при возврате и, таким образом, сериализации в результаты при возврате в исходное место. [15]

Подклассы были известны как ароматы ; класс PieBuyer, описанный выше, является разновидностью Agent. Telescript также включил концепцию смешанных классов, которая предлагала функции, аналогичные множественному наследованию , позволяя создавать классы, содержащие только код, который затем можно было включить в другие классы. Смеси не были ароматизаторами. [16]

Как и многие современные объектно-ориентированные языки, Telescript разделил интерфейс и реализацию, поместив их в .i файлы для интерфейса и .t файлы для реализации (t как в «t»elescript). Необычно, что язык также определяет третий тип файла, .d, который объединил несколько .i файлы вместе. [17] Скомпилированный код помещался в .s файл, который управлялся инструкциями компоновщика в .l файл. [18] Платформа внешних приложений позволяла C++ из Telescript. вызывать код [19]

Примечания

[ редактировать ]
  1. ^ Эти примеры изменены по сравнению с оригиналами, найденными в Руководстве, с исправлением ряда синтаксических и орфографических ошибок.

Цитаты

Библиография

  • Леви, Стивен (апрель 1994 г.). «Невероятное приключение Билла и Энди 2» . Проводной .
  • Кларк, Ричард; Кнастер, Скотт; и др. (май 1995 г.). «Введение разработчика в General Magic и Magic Cap» . МакТех .
  • Канеллос, Майкл (18 сентября 2011 г.). «Дженерал Мэджик: самая важная мертвая компания в Кремниевой долине?» . Форбс .
  • Справочник по языку Telescript (PDF) . Общая магия. Октябрь 1995 года.
  • Руководство по программированию Телескрипта . Общая магия. 1995.
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: f8a2864a40b9a1eebd6e17091729e541__1695614760
URL1:https://arc.ask3.ru/arc/aa/f8/41/f8a2864a40b9a1eebd6e17091729e541.html
Заголовок, (Title) документа по адресу, URL1:
Telescript (programming language) - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)