stringtranslate.com

Escritura de Newton

NewtonScript es un lenguaje de programación basado en prototipos creado para escribir programas para la plataforma Newton . [1] Está fuertemente influenciado por el lenguaje de programación Self , pero modificado para adaptarse mejor a las necesidades de los dispositivos móviles e integrados . [2]

Historia

El 3 de agosto de 1993, Apple presentó el Apple Newton MessagePad . El dispositivo tenía 640 KB de RAM, 4 MB de ROM y un microprocesador ARM 610 de 20 MHz.

La intención principal detrás del proyecto Newton era desarrollar un dispositivo capaz de reemplazar a un ordenador y que fuera portátil. Con una batería y una memoria limitadas, los desarrolladores buscaban un lenguaje de programación capaz de afrontar estos retos.

Los desarrolladores analizaron el lenguaje de programación C++, pero se dieron cuenta de que carecía de flexibilidad. Comenzaron a centrarse en lenguajes basados ​​en prototipos y quedaron impresionados con Smalltalk y Self. [3] Al mismo tiempo, Apple estaba desarrollando otro lenguaje de programación dinámico llamado Dylan , que era un candidato sólido para la plataforma Newton. [4]

Sin embargo, tanto Self como Dylan fueron descartados, ya que ambos estaban en una etapa inicial para una integración adecuada.

En su lugar, un equipo dirigido por Walter R. Smith desarrolló un nuevo lenguaje llamado NewtonScript, que estaba influenciado por lenguajes dinámicos como Smalltalk y modelos de prototipos como Self. [3]

Características

Aunque NewtonScript estuvo fuertemente influenciado por Self, hubo algunas diferencias entre ambos lenguajes.

Las diferencias surgieron debido a tres problemas percibidos con el Yo.

  1. Una de ellas es que la típica instantánea de Self requiere 32 MB de RAM para ejecutarse, mientras que la plataforma Newton fue diseñada para utilizar solo 128 KB para el sistema operativo. Esto requirió una reducción importante del motor para que se ajustara y aún tuviera espacio para las aplicaciones.
  2. Otro problema era el rendimiento. Como el lenguaje se utilizaría en todo el sistema, en lugar de ejecutarse únicamente en un sistema operativo existente, era necesario que funcionara lo más rápido posible.
  3. Finalmente, el sistema de herencia en el motor Self normal tenía un único objeto padre, [5] mientras que las GUI normalmente tienen dos: uno para los objetos y otro para el diseño de la GUI que normalmente se maneja mediante la adición de una ranura en algún tipo de objeto de jerarquía de GUI (como View ).

La sintaxis también se modificó para permitir un estilo de programación más basado en texto, en contraposición al uso generalizado que Self hacía de un entorno GUI para la programación. Esto permitió que los programas Newton se desarrollaran en una computadora que ejecutara el Toolkit, donde los programas se compilarían y luego se descargarían a un dispositivo Newton para su ejecución.

Una de las ventajas de la herencia basada en prototipos de NewtonScript era el uso reducido de memoria, una consideración clave en Newton de 128 KB. El prototipo de un objeto GUI podía almacenarse en la ROM, por lo que no era necesario copiar datos o funciones predeterminados en la memoria de trabajo.

A diferencia de los lenguajes basados ​​en clases, donde la creación de un objeto implica la asignación de memoria a todos sus atributos, el uso de la herencia de prototipos en NewtonScripts le permitió asignar memoria a unos pocos campos como _proto y _parent en lugar de crear un objeto completamente nuevo. Aquí, _proto y _parent indican si el objeto está utilizando la herencia de prototipos o de padres. [6]

Un ejemplo para ilustrar el concepto anterior es que un desarrollador puede crear una nueva instancia de botón. Si el botón utiliza la fuente predeterminada, al acceder a su "ranura" de fuente (es decir, propiedad o variable miembro) se obtendrá un valor que en realidad está almacenado en la ROM; la instancia del botón en la RAM no tiene un valor en su propia ranura de fuente, por lo que se sigue la cadena de herencia del prototipo hasta que se encuentra un valor. Si el desarrollador cambia la fuente del botón, al configurar su ranura de fuente con un nuevo valor se anulará el prototipo; este valor de anulación se almacena en la RAM. Por lo tanto, la " herencia diferencial " de NewtonScript hizo un uso eficiente de la costosa memoria flash RAM de Newton al almacenar la mayor parte de los datos y códigos predeterminados en la ROM de la PDA, que es más barata y mucho más grande .

Términos importantes

Vistas: Son objetos creados por Newton View System, que se crean en tiempo de ejecución para renderizar vistas.

Plantilla: Es un plano a partir del cual se crean las vistas.

Protos: pueden ser un modelo para una plantilla o una vista, y son elementos de las bibliotecas de código de NewtonScript.

Marco y ranura: El marco es una colección dinámica de ranuras, y un elemento del marco se denomina ranura. Una ranura se compone de un nombre y un valor. El valor puede ser de cualquier tipo. Vale la pena señalar que todos los objetos en NewtonScript son marcos. [7]

Sopa y entrada: es una colección relacionada de cuadros/datos. La entrada es un cuadro individual en una sopa.

Frame Heap: RAM asignada dinámicamente por NewtonScript.

Vista base: es la vista principal de la aplicación, que consta de todas las variables y métodos utilizados en la aplicación.

Ventajas y desventajas

Ventajas
Desventajas

Influencias

Con la cancelación del proyecto Newton por parte de Apple en 1998, [8] se detuvieron todos los desarrollos posteriores de NewtonScript. Sin embargo, las características utilizadas en NewtonScript continuarían inspirando otros modelos y lenguajes de programación.

El modelo de objetos basado en prototipos de Self y NewtonScript se utilizó en JavaScript , el lenguaje más popular y visible para utilizar el concepto hasta el momento.

NewtonScript es también uno de los ancestros conceptuales (junto con Smalltalk, Self, Act1, Lisp y Lua ) de un lenguaje de programación de propósito general llamado Io [9] que implementa el mismo modelo de herencia diferencial que se utilizó en NewtonScript para conservar la memoria.

Véase también

Referencias

  1. ^ Smith, WR (1 de febrero de 1994). "La arquitectura de la aplicación Newton". Actas de COMPCON '94 . págs. 156-161. doi :10.1109/CMPCON.1994.282931. ISBN 978-0-8186-5380-3.S2CID8780685  .​ {{cite book}}: |journal=ignorado ( ayuda )
  2. ^ ab Schödl, Arno (10 de octubre de 2004). "El lenguaje de programación NewtonScript". Archivado desde el original el 10 de octubre de 2004. Consultado el 15 de septiembre de 2016 .{{cite web}}: CS1 maint: bot: estado de URL original desconocido ( enlace )
  3. ^ ab Smith, Walter R. (1995-01-01). "Uso de un lenguaje basado en prototipos para la interfaz de usuario". Actas de la décima conferencia anual sobre sistemas, lenguajes y aplicaciones de programación orientada a objetos - OOPSLA '95 . Nueva York, NY, EE. UU.: ACM. págs. 61–72. doi :10.1145/217838.217844. ISBN 978-0897917032.S2CID 14099947  .
  4. ^ "Dylan: un lenguaje dinámico orientado a objetos". www.cise.ufl.edu . Consultado el 22 de septiembre de 2016 .
  5. ^ Chambers, C.; Ungar, D.; Lee, E. (1 de enero de 1989). "Una implementación eficiente de SELF, un lenguaje orientado a objetos con tipado dinámico basado en prototipos". Actas de congresos sobre sistemas, lenguajes y aplicaciones de programación orientada a objetos - OOPSLA '89 . Nueva York, NY, EE. UU.: ACM. pp. 49–70. CiteSeerX 10.1.1.588.6955 . doi :10.1145/74877.74884. ISBN  978-0897913331. Número de identificación del sujeto  5798276.
  6. ^ ab "El lenguaje de programación NewtonScript" (PDF) . 1996. Archivado desde el original (PDF) el 24 de enero de 2015.
  7. ^ McKeehan, Julie; Rhodes, Neil (1994). Programación para Newton®: Desarrollo de software con NewtonscriptTM . 955 Massachusetts Avenue, Cambridge, Massachusetts 02139: AP Professional. ISBN 978-0-12-484800-9.{{cite book}}: Mantenimiento de CS1: ubicación ( enlace )
  8. ^ "Apple cancela Newton". windowsitpro.com . 1998-02-28 . Consultado el 2016-09-22 .
  9. ^ "Guía de io". iolanguage.org . Consultado el 15 de septiembre de 2016 .

Enlaces externos