Telescript (язык программирования) - Telescript (programming language) - Wikipedia

Телескрипт является Агентно-ориентированное программирование язык, написанный Общая магия как часть общей Волшебная шапка система. Программы Telescript использовали модифицированный C-подобный синтаксис известные как High Telescript, и были скомпилированы на стековый язык под названием Low Telescript для выполнения. Low Telescript работал внутри виртуальная машина интерпретаторы, или «движки Telescript», на хост-компьютерах.

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

General Magic изначально создавалась как команда внутри Apple Inc., и были выделены в 1990 году. Когда они начали вызывать некоторый шум в прессе в 1992 году, Apple решила выйти на тот же рынок со своими Ньютон планшет. 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, Мацусита, Philips, British Telecom и Корпорация AT&T. Это вызвало большой ажиотаж в прессе.[3] Apple к этому времени начала Проект Ньютон, дизайн для большого портативного планшетного компьютера, более похожего на полноразмерный 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 также включил концепции telename это однозначно идентифицированные пользователи, и телеадреса который идентифицировал устройство, даже когда оно перемещалось между сетями.[6]

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

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

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

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

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

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

  Pie: interface (Object) = (публичное имя: String; инициализация: op (name: String););

Обратите внимание на использование ключевого слова op, что соответствует функция или же суб найдено на других языках. Реализация Pie может использоваться в одном или нескольких учебный класс объекты, которые могут быть организованы в модулиs способом, подобным Visual Basic .NET с пространство имен построить. #включают используется для импорта файлов заголовков, но импорт является локальным для модули, а не файл в целом.[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 (ноль)); aPie = * .waitForPie (); return aPie;};};););

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

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

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

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

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

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

Примечания

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

Рекомендации

Цитаты

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

  • Леви, Стивен (апрель 1994). "Превосходное приключение Билла и Энди 2". Проводной.CS1 maint: ref = harv (связь)
  • Кларк, Ричард; Кнастер, Скотт; и другие. (Май 1995 г.). "Введение в General Magic и Magic Cap для разработчиков". MacTech.CS1 maint: ref = harv (связь)
  • Канеллос, Майкл (18 сентября 2011 г.). "General Magic: самая важная мертвая компания в Кремниевой долине?". Forbes.CS1 maint: ref = harv (связь)
  • Справочник по языку Telescript (PDF). Общая магия. Октябрь 1995 г.
  • Руководство по программированию Telescript. Общая магия. 1995 г.