Jump to content

НьютонСкрипт

НьютонСкрипт
Парадигма Прототип Объектно-ориентированный
Разработано Уолтер Смит
Разработчик Apple Компьютер
Впервые появился 1993 год ; 31 год назад ( 1993 )
Дисциплина набора текста Динамический
Под влиянием
Селф , Дилан
Под влиянием
Этот

NewtonScript — это на основе прототипов, язык программирования созданный для написания программ для платформы Newton . [1] На него сильно повлиял язык программирования Self , но он был модифицирован, чтобы лучше соответствовать потребностям мобильных и встраиваемых устройств . [2]

3 августа 1993 года Apple представила Apple Newton MessagePad . Устройство имело 640 КБ ОЗУ, 4 МБ ПЗУ и микропроцессор ARM 610 с частотой 20 МГц.

Основная цель проекта Newton заключалась в разработке портативного устройства, способного заменить компьютер. Учитывая ограниченность аккумулятора и памяти, разработчики искали язык программирования, способный решить эти задачи.

Разработчики рассмотрели язык программирования C++ , но поняли, что ему не хватает гибкости. Они начали концентрироваться на языках, основанных на прототипах, и были впечатлены Smalltalk и Self. [3] Одновременно Apple разрабатывала еще один язык динамического программирования под названием Dylan , который был сильным кандидатом на платформу Newton. [4]

Однако и Селф, и Дилан были исключены из рассмотрения, поскольку они оба находились на зачаточной стадии правильной интеграции.

Вместо этого группа, возглавляемая Уолтером Р. Смитом, разработала новый язык под названием NewtonScript. На него повлияли динамический язык, такой как Smalltalk , и модель прототипа, основанная на Self. [3]

Хотя NewtonScript находился под сильным влиянием Селфа, в обоих языках были некоторые различия.

Различия возникли из-за трех предполагаемых проблем с «Я».

  1. Во-первых, для работы типичного моментального снимка Self требуется 32 МБ ОЗУ , тогда как платформа Newton была разработана для использования только 128 КБ для операционной системы. Это потребовало серьезной доработки двигателя, чтобы он прижился и сохранил место для применения.
  2. Другой проблемой была производительность. Поскольку язык будет использоваться для всей системы, а не просто для работы в существующей операционной системе, ему необходимо было работать как можно быстрее.
  3. Наконец, система наследования в обычном движке Self имела единственный родительский объект: [5] тогда как графические интерфейсы обычно имеют два — один для объектов, а другой для макета графического интерфейса, который обычно обрабатывается путем добавления слота в какой-то объект иерархии графического интерфейса (например, View ).

Синтаксис также был изменен, чтобы обеспечить более текстовый стиль программирования, в отличие от широко распространенного использования Селфом среды графического интерфейса для программирования. Это позволило разрабатывать программы Newton на компьютере с установленным Toolkit, где программы компилировались, а затем загружались на устройство Newton для запуска.

Одним из преимуществ наследования на основе прототипов NewtonScript было снижение использования памяти, что является ключевым моментом в Newton размером 128 КБ. Прототип объекта графического интерфейса фактически мог храниться в ПЗУ, поэтому не было необходимости копировать данные или функции по умолчанию в рабочую память.

В отличие от языков на основе классов, где создание объекта предполагает выделение памяти для всех его атрибутов, использование в NewtonScripts наследования прототипов позволило выделить память нескольким полям, таким как _proto и _parent, вместо создания целого нового объекта. Здесь _proto и _parent обозначают, использует ли объект наследование прототипа или родительского элемента. [6]

В качестве примера, иллюстрирующего приведенную выше концепцию, разработчик может создать новый экземпляр кнопки. Если кнопка использует шрифт по умолчанию, доступ к ее «слоту» шрифта (т. е. свойству или переменной-члену) вернет значение, которое фактически хранится в ПЗУ; экземпляр кнопки в оперативной памяти не имеет значения в своем собственном слоте шрифта, поэтому цепочка наследования прототипа выполняется до тех пор, пока не будет найдено значение. Если затем разработчик изменит шрифт кнопки, установка нового значения для слота шрифта переопределит прототип; это значение переопределения хранится в ОЗУ. » NewtonScript Таким образом, « дифференциальное наследование Newton позволило эффективно использовать дорогую флэш-память , сохраняя большую часть данных и кода по умолчанию в более дешевом и гораздо большем ПЗУ КПК .

Важные условия

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

Представления: это объекты, созданные системой Newton View System, которые создаются во время выполнения для визуализации представлений.

Шаблон: это план, на основе которого создаются представления.

Прото: они могут представлять собой схему шаблона или представления и являются элементами библиотек кода NewtonScript.

Кадр и слот. Кадр представляет собой динамическую совокупность слотов, и один элемент кадра называется слотом. Слот состоит из имени и значения. Значение может быть любого типа. Стоит отметить, что все объекты в NewtonScript являются фреймами. [7]

Суп и запись: это связанный набор кадров/данных. Запись - индивидуальный кадр в супе.

Куча кадров: ОЗУ, динамически выделяемая NewtonScript.

Базовый вид: это основной вид приложения, состоящий из всех переменных и методов, используемых в приложении.

Преимущества и недостатки

[ редактировать ]
Преимущества
  • NewtonScript — это язык программирования на основе динамических прототипов, в котором используется дифференциальное наследование. Это означает, что он очень эффективно использует пространство памяти. Будучи динамичным, он позволяет легко изменять объекты, проверять типы и т. д. во время выполнения, что обеспечивает большую гибкость для разработчиков.
  • Созданные объекты могут храниться в постоянной памяти, например на флэш-карте или во внутренней памяти. ОЗУ используется только для хранения атрибутов, значения которых изменяются во время выполнения. Это снижает потребление памяти.
  • Написание интерфейсов для приложений с графическим интерфейсом может быть эффективно реализовано с использованием модели прототипа, поскольку мы можем напрямую написать объект для элемента управления с графическим интерфейсом, а не создавать класс и создавать его экземпляр.
  • Сбор мусора осуществляется системой автоматически. Это помогло разработчикам больше сосредоточиться на разработке приложений, а не беспокоиться об управлении памятью. Сбор мусора также помог решить проблему висячих указателей , когда указатель ошибочно указывает на область памяти, которая была освобождена. [6]
Недостатки
  • Поскольку код NewtonScript был написан на одной платформе и запускался на другой, отлаживать его было практически невозможно. [2] Улучшенный код отладки в движке Newton помог бы в некоторой степени компенсировать эту проблему, но ограниченность памяти усложняла эту задачу. Вместо этого разработчик получит расплывчатое указание вместе с кодом ошибки без возможности сопоставить его со строками исходного кода.
  • Еще одним недостатком является то, что динамическая переменная снижает скорость работы, поскольку нельзя использовать простое разыменование указателя, как в статически типизированных типах, таких как C++ и Java.

После отмены проекта Newton компанией Apple в 1998 г. [8] все дальнейшие основные разработки NewtonScript были остановлены. Однако функции, используемые в NewtonScript, будут продолжать вдохновлять другие модели и языки программирования.

Объектная модель Self и NewtonScript, основанная на прототипах, использовалась в JavaScript , самом популярном и известном языке, использующем эту концепцию на данный момент.

NewtonScript также является одним из концептуальных предков (вместе со Smalltalk, Self, Act1, Lisp и Lua ) языка программирования общего назначения под названием Io. [9] который реализует ту же модель дифференциального наследования, которая использовалась в NewtonScript для экономии памяти.

См. также

[ редактировать ]
  1. ^ Смит, WR (1 февраля 1994 г.). «Архитектура приложения Ньютона». Труды КОМПКОН '94 . стр. 156–161. дои : 10.1109/CMPCON.1994.282931 . ISBN  978-0-8186-5380-3 . S2CID   8780685 . {{cite book}}: |journal= игнорируется ( помогите )
  2. ^ Jump up to: а б Шёдль, Арно (10 октября 2004 г.). «Язык программирования NewtonScript» . Архивировано из оригинала 10 октября 2004 г. Проверено 15 сентября 2016 г. {{cite web}}: CS1 maint: bot: исходный статус URL неизвестен ( ссылка )
  3. ^ Jump up to: а б Смит, Уолтер Р. (1 января 1995 г.). «Использование языка прототипов для пользовательского интерфейса». Материалы десятой ежегодной конференции по объектно-ориентированным системам, языкам и приложениям программирования — OOPSLA '95 . Нью-Йорк, штат Нью-Йорк, США: ACM. стр. 61–72. дои : 10.1145/217838.217844 . ISBN  978-0897917032 . S2CID   14099947 .
  4. ^ «Дилан: объектно-ориентированный динамический язык» . www.cision.ufl.edu . Проверено 22 сентября 2016 г.
  5. ^ Чемберс, К.; Унгар, Д.; Ли, Э. (1 января 1989 г.). «Эффективная реализация SELF — объектно-ориентированного языка с динамической типизацией, основанного на прототипах». Материалы конференции «Объектно-ориентированные системы, языки и приложения программирования — OOPSLA '89» . Нью-Йорк, штат Нью-Йорк, США: ACM. стр. 49–70. CiteSeerX   10.1.1.588.6955 . дои : 10.1145/74877.74884 . ISBN  978-0897913331 . S2CID   5798276 .
  6. ^ Jump up to: а б «Язык программирования NewtonScript» (PDF) . 1996. Архивировано из оригинала (PDF) 24 января 2015 г.
  7. ^ Маккиэн, Джули; Роудс, Нил (1994). Программирование для Newton®: разработка программного обеспечения с помощью NewtonscriptTM . 955 Массачусетс Авеню, Кембридж, Массачусетс 02139: AP Professional. ISBN  978-0-12-484800-9 . {{cite book}}: CS1 maint: местоположение ( ссылка )
  8. ^ «Apple отменяет Newton» . windowsitpro.com . 28 февраля 1998 г. Проверено 22 сентября 2016 г.
  9. ^ «Ио-руководство» . iolanguage.org . Проверено 15 сентября 2016 г.
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 790d13287662ab5400b2978976d1c5f5__1712883300
URL1:https://arc.ask3.ru/arc/aa/79/f5/790d13287662ab5400b2978976d1c5f5.html
Заголовок, (Title) документа по адресу, URL1:
NewtonScript - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)