Kaleida Labs, Inc. , fundada en 1991 para producir el reproductor multimedia multiplataforma Kaleida Media Player y el lenguaje de programación orientado a objetos ScriptX que se utilizó para programar su comportamiento. El sistema estaba destinado a la producción de títulos interactivos en CD ROM , un área de gran esfuerzo a principios de los años 1990. Cuando se entregó el sistema en 1994, tenía unos requisitos de sistema y una huella de memoria relativamente altos , y carecía de una versión nativa PowerPC en la plataforma Mac . Casi al mismo tiempo, los rápidos cambios en el mercado, especialmente la expansión de la World Wide Web y el lenguaje de programación Java , empujaron al mercado de CD interactivos a un papel de nicho. La plataforma Kaleida no logró ganar tracción significativa y la empresa cerró en 1996.
Kaleida fue una de las tres empresas conjuntas de la década de 1990 entre Apple e IBM, incluyendo el sistema operativo Taligent y la alianza AIM con Motorola para la plataforma PowerPC. ScriptX fue una de las varias plataformas de software similares que comenzaron en Apple en ese período de tiempo. El sistema SK8 también estaba dirigido al mercado multimedia, aunque evolucionó a partir de lo que originalmente era una actualización importante de HyperCard . El lenguaje de programación Dylan era una plataforma con más funciones, destinada a la programación general, no solo a la multimedia. El desarrollo de todos estos proyectos de software terminó aproximadamente al mismo tiempo.
La empresa, que se anunció en 1991, comenzó a operar en el verano de 1992, con Nat Goldhaber como su primer director ejecutivo. [1] La empresa estaba formada por miembros cuidadosamente seleccionados del equipo QuickTime de Apple , junto con miembros del equipo de distribución de contenido de IBM. Las oficinas corporativas de Kaleida estaban ubicadas en Mountain View, California, en sitios cerca del Anfiteatro Shoreline en el lado este de la US 101. Kaleida fue una de las primeras empresas en publicar un sitio web corporativo.
El primer modelo del sistema fue el Kaleida Media Player, o KMP. Se trataba básicamente de una versión interactiva multiplataforma del QuickTime Player que funcionaba en los Apple Macintosh , clones de IBM PC , decodificadores y otras plataformas. Su objetivo era ser un único sistema multimedia universal. Sobre este modelo se encontraba el lenguaje de programación y la biblioteca de objetos ScriptX , que permitía a los desarrolladores hacer que los archivos multimedia fueran completamente interactivos.
Según declaraciones realizadas en la Digital World Conference, Goldhaber afirmó que ScriptX permitiría a los desarrolladores distribuir su trabajo en prácticamente cualquier dispositivo simplemente "pulsando un botón en una pantalla y seleccionando 'Guardar como ScriptX'". [2] Las declaraciones grandilocuentes fueron típicas, y Goldhaber afirmó más tarde que "en realidad tiene cierta importancia social genuina". [3]
El estilo extravagante de Goldhaber, la costosa nómina de la empresa y la falta de progreso evidente dieron lugar a artículos negativos en la prensa. Un ejecutivo describió que "la empresa ha gastado unos 20 millones de dólares en su primer año de existencia y que Apple e IBM se resisten a seguir gastando dinero a ese ritmo. Dijo que los salarios de Kaleida son altos y que la empresa tiene demasiados empleados para su actual etapa de desarrollo". [4]
A principios de 1993, Goldhaber y el consejo de administración comenzaron a pelearse por las opciones sobre acciones y por si la empresa debía salir a bolsa. El 18 de julio de 1993, la empresa anunció que Goldhaber sería reemplazado como director ejecutivo por Mike Braun, ex empleado de IBM. La empresa declaró que Goldhaber permanecería en el consejo de administración en un esfuerzo por construir alianzas con la industria, pero culpó a la falta de progreso en este frente y a la gestión de Goldhaber de "no intervención" como las principales razones del cambio. [5] Al despedirse, Goldhaber bromeó diciendo que las diferentes culturas y las maniobras políticas en IBM y Apple condenaron a la empresa desde el principio.
Tras la destitución de Goldhaber, la empresa se centró en un ámbito más reducido. Los planes de construir un sistema para decodificadores se abandonaron oficialmente en abril de 1994. [6] La misión de Kaleida a partir de entonces fue completar y dar soporte al lenguaje ScriptX y a la biblioteca de objetos multimedia, que a esa altura ya estaban muy retrasados. Kaleida intentó incluir el KMP como software de sistema en los nuevos ordenadores personales. Al mismo tiempo, los desarrolladores de CD-ROM podían enviar el KMP con contenido para dar soporte a los sistemas Windows y Macintosh existentes. Como parte del nuevo enfoque, la empresa se redujo de personal y los despidos representaron entre el 20 y el 25% de la plantilla. [6] [7]
A finales de 1993 y principios de 1994, el objetivo de la empresa era que el reproductor multimedia Kaleida funcionara en una plataforma de referencia que consistiera en un procesador Motorola 68030 de 25 MHz o un procesador Intel 80486 de 25 MHz con 4 MB de memoria de acceso aleatorio. Este tipo de sistema era habitual en la base instalada en aquella época, y la mayoría de los ordenadores nuevos se comercializaban con una unidad de CD-ROM de sólo lectura. Toshiba, que había apoyado el proyecto de decodificadores de Kaleida, se convirtió en accionista minoritario. A lo largo de su breve historia, Kaleida mantuvo esfuerzos de desarrollo multiplataforma para Windows (tanto Windows 3.1 como Windows 95), Macintosh (compatible con las plataformas 68000 y PowerPC) y OS/2.
El kit de desarrollo ScriptX y la versión 1.0 del Kaleida Media Player finalmente fueron lanzados el 19 de diciembre de 1994, ahora considerablemente tarde. [8] Sin embargo, las críticas fueron generalmente positivas, llamándolo "notable por su facilidad de uso" y afirmando que el núcleo "clases que proporcionan un conjunto de características de alto denominador común para el desarrollo basado en ScriptX". [9] Sin embargo, el rendimiento era otro problema completamente diferente. La versión 1.0 del KMP requería 3,3 MB de RAM en Windows y 2,9 MB en Mac, y esto era solo para el tiempo de ejecución básico, no para el contenido real que se ejecutaba en él. [9] Para poner esto en perspectiva, un Mac de gama media de la época era el LC 475 que se enviaba con solo 4 MB de RAM estándar, de los cuales el sistema operativo usaba una cantidad significativa. Además, el sistema no fue lanzado en formato PowerPC , aunque en este punto el PPC ya había formado el extremo superior de la línea Mac durante ocho meses. [9]
Kaleida se había fundado en parte como un entorno de creación de aplicaciones basadas en CD-ROM, pero el ciclo de vida de los CD-ROM, que se habían anunciado durante años como un sistema de distribución de contenidos, resultó ser sorprendentemente corto. En 1995, se estaba haciendo evidente que la World Wide Web proporcionaría muchos de los sistemas interactivos ligeros que se entregaban anteriormente en CD-ROM y, aunque el vídeo y otros sistemas similares de gran ancho de banda aún no eran adecuados para la Web, no necesitaban el entorno de desarrollo ni la interactividad que ofrecía algo como Kaleida.
Kaleida también se había formado, en cierta medida, para ofrecer una alternativa a la plataforma Wintel para lo que en ese momento parecía ser un mercado emergente en el mundo del CD. Goldhaber había mencionado esto en muchas ocasiones, describiendo la inminente "guerra" por el multimedia. [2] Después de la oferta pública de Netscape a principios de 1995, muchos desarrolladores de software reconocieron que el navegador en sí mismo plantearía un desafío a Windows, y que el navegador se convertiría en una plataforma multimedia por derecho propio. Ahora existía la plataforma independiente para atacar a Wintel. Kaleida comenzó entonces un esfuerzo para entregar objetos a través de Internet y entregar contenido web. [10]
La mayoría de los desarrolladores potenciales de Kaleida habían estado adoptando una actitud de espera y observación con respecto al sistema, a la espera de que Kaleida resolviera los problemas de rendimiento y lanzara una versión más estable de ScriptX. Sin embargo, la empresa no había sido capaz de demostrar un sistema que funcionara aceptablemente con menos de 16 MB de RAM, que en ese momento era el "rango superior" del mercado. El programa Director de Macromedia y el programa asociado Lingo aprovecharon el vacío para establecer un mercado fuerte. [11] Mientras tanto, Sun Microsystems estaba promocionando su nuevo lenguaje de programación Java como un sistema dedicado a la Web diseñado específicamente para funcionar incluso en las plataformas más pequeñas.
A finales de 1995, estaba claro que ScriptX había perdido su impulso en el mercado, a pesar de que la empresa estaba a punto de lanzar al mercado la versión 1.5 de ScriptX. En noviembre de 1995, Apple Computer e IBM anunciaron el cierre de Kaleida Labs, que entraría en vigor en enero de 1996. [12] Las empresas matrices anunciaron que lanzarían de todos modos ScriptX 1.5. El desarrollo futuro de ScriptX pasaría a manos de un grupo dentro de Apple Computer, y Apple ofreció trabajo a la mayoría de los miembros del equipo de ingeniería de ScriptX.
La versión 1.5 de ScriptX se lanzó casi simultáneamente con el cierre de Kaleida Labs, en enero de 1996. [11] Al lanzar ScriptX, Apple e IBM cumplieron con los compromisos contractuales que habían hecho con los desarrolladores y evitaron dificultades legales. Finalmente, solo dos proyectos de contenido multimedia se lanzaron usando ScriptX 1.5. Uno fue una versión en CD-ROM de la Enciclopedia Nacional Sueca, Nationalencyklopedin , desarrollada por Linné Data de Gotemburgo, Suecia. El otro fue un título de música interactiva, Crazy for Ragtime de Robert Winter.
En pocos meses, el desarrollo de ScriptX se desvaneció dentro de Apple y los empleados restantes habían migrado a otros trabajos en Apple o se habían ido a otras empresas del sector. La aplicación Director siguió siendo una fuerza importante en el mercado multimedia durante un tiempo, pero fue suplantada y luego reemplazada por Flash . Las primeras versiones de Flash son, en muchos sentidos, un clon de ScriptX, que utiliza un pequeño entorno de ejecución de complementos con un lenguaje controlado por eventos y requisitos de recursos similares.
El principal arquitecto de software de ScriptX fue John Wainwright , un informático nacido en Australia. ScriptX se implementó en C, utilizando una extensa biblioteca llamada Objects in C que Wainwright había desarrollado antes de unirse a Kaleida y que vendió a la empresa en sus inicios. Objects in C utiliza directivas de preprocesador para simular un sistema de objetos dentro de las bibliotecas. La biblioteca cuenta con más de 240 clases, muchas de ellas diseñadas para soportar multimedia y crear interfaces de usuario personalizadas. Las estructuras de datos comunes, como matrices y listas enlazadas, se implementaron como clases de colección en la biblioteca.
ScriptX es un lenguaje de programación orientado a objetos que utiliza elementos de diseño de "Smalltalk, Dylan, Hypertalk, Lisp, Object Logo, C++ y Pascal". [13] Con Smalltalk, comparte el concepto de clases, objetos y herencia, pero también incluye herencia múltiple tanto en clases como en objetos, y vinculación dinámica de objetos en tiempo de ejecución. ScriptX no tiene tipos de datos primitivos; incluso los números enteros se definen como objetos. Todos los objetos son instancias de una clase, y las clases son instancias de un objeto MetaClass. Al igual que en LISP, no hay declaraciones, y cada línea en un programa ScriptX es una expresión que devuelve un valor. [13]
ScriptX utiliza un sistema de recolección de basura que se ejecuta en un subproceso independiente para gestionar la memoria, y cuenta con un almacén de objetos para colecciones permanentes. ScriptX admite subprocesos múltiples, pero no multiprocesamiento, y ofrece control de scripts de funciones de nivel inferior del sistema operativo, como eventos e hilos que se ejecutan simultáneamente. Las primeras herramientas de desarrollo multimedia carecen de técnicas para sincronizar presentaciones, excepto consultando el reloj del propio sistema operativo. Ray Valdés, escribiendo en el Dr. Dobb's Journal , señaló que "una característica clave de ScriptX es una clase Clock , que proporciona facilidades para sincronizar secuencias temporizadas de acciones requeridas por aplicaciones multimedia". [13]
Tras el cierre de Kaleida Labs, Wainwright se convirtió en el arquitecto principal de MaxScript, un lenguaje de programación para 3D Studio Max que se ha utilizado para procesar contenido para juegos y aplicaciones 3D como los programas Maxis Sims. [14] Se parece mucho a ScriptX.
El código siguiente ilustra la sintaxis única del lenguaje ScriptX. Es parte de una clase que maneja el seguimiento del mouse en un programa más grande escrito por Don Hopkins . [15] El método sendTrackDrop envía un mensaje trackDrop a otro objeto.
método sendTrackDrop self {clase Tracker} servicio objetivo xy datos doit -> ( coordenadas locales := nuevo puntorepetir mientras (verdadero) hacer (si (canObjectDo objetivo trackDrop) entonces (devolver (trackDrop destino servicio xy datos doit)) demás (coordenadas.x := xcoordenadas.y := ylocal t := findFirstAtPoint coordenadas de destinosi (t == vacío) devuelve falsox := x - txy := y - tyobjetivo := t)) )
Este código es responsable de reenviar mensajes trackDrop entre objetos e ilustra una serie de características poco comunes del lenguaje ScriptX. Un detalle de menor interés es el :=
operador de asignación, como el de Pascal.
Las variables se marcan local
para determinar su alcance . [13] Esto es lo opuesto a la mayoría de los lenguajes modernos, donde "local" es el alcance predeterminado, y tal declaración sería redundante. En los lenguajes convencionales, la visibilidad del alcance se define por la ubicación en el archivo de código fuente : las variables declaradas dentro de un método son locales para ese método, las definidas fuera de los métodos u otras declaraciones son globales para la clase (o programa).
Esta falta de alcance basado en archivos es una característica básica del lenguaje ScriptX y otros similares, en particular Dylan . En lenguajes convencionales como Java , las clases y construcciones similares se definen dentro de un solo archivo, o al menos un "archivo maestro". El alcance está definido por el sistema de archivos y la ubicación del código dentro de él. Por el contrario, en ScriptX cualquier método puede definirse en cualquier clase en cualquier archivo. En este ejemplo, el método sendTrackDrop
se está aplicando a la Tracker
clase y puede ubicarse dentro de cualquier archivo al que se accederá durante el tiempo de ejecución. Esto permite a los programadores organizar su código por clase o por funcionalidad, a costa de algo de sintaxis adicional.