Home » Opinión » Apple, 40 años de desarrollo
Apple 40 Años

Apple, 40 años de desarrollo

El 1 de abril de 1976, Steve Jobs, Steve Wozniak y Ronald Wayne fundaron Apple Computers. Pero, ¿por qué se creó Apple? Por un motivo principal: el desarrollo.

Steve Wozniak, un genio tecnológico y precursor, había diseñado en papel su primer ordenador y había desarrollado una versión de BASIC como lenguaje base para el mismo: el Integer BASIC. 

Integer BASIC
En contra del primer microcomputador que se vendió, el Altair 8800, que necesitaba tarjetas de expansión para ser programado, el ordenador de Wozniak llevaba su propia versión de Basic en cassette y usaba un procesador MOS 6502 de 8 bits que en aquella época costaba solo 25$. El Apple I, ese primer modelo, contaba con tan solo 256 bytes en su ROM y configuraciones de 4 y 8Kb de RAM, para ser manejado en una pantalla que escribía solo texto: 40 caracteres por línea en 24 líneas.
Pero debido a las limitaciones de hardware del Apple I, el Integer BASIC de Woz, estaba limitado en sus posibles representaciones numéricas a números enteros de 16 bits, así que no podía procesar valores fuera del rango de -32768 a 32767. Y obviamente no soportaba valores flotantes.

Steve Wozniak y Steve Jobs

Pero tras una exitosa presentación en el Homebrew Computer Club de Palo Alto de dicho modelo, Steve Jobs tuvo la idea de venderlo y convenció a Wozniak, que solo quería crear una arquitectura para que cualquiera pudiera expandirla, trabajar sobre ella o crear su propia versión, pero sin pedir nada a cambio. Se pusieron a ello, con la ayuda de los 250.000 dólares del millonario Mike Markkula, que fueron esenciales para que Apple saliera adelante y enseguida se empezó a vender el Apple I a un precio de 666,66$ (como una pequeña broma). A día de hoy (según inflación) serían casi 3.000$. Porque en aquel año 1976 todavía había quién se preguntaba: ¿para qué querría nadie un ordenador en su casa?

Lo realmente importante, la base sobre la que se fundó Apple, fue para llevar la microinformática a todos los usuarios a través del desarrollo, porque para eso servían estos ordenadores: para que los usuarios los tuvieran en su casa y crearan sus propios programas. Y que esos programas pasaran (en algunos casos) de unos a otros. Porque el desarrollo es la semilla de toda la época dorada tecnológica que estamos viviendo.

Apple II

Fue con la presentación del Apple II en abril de 1977, cuando empezó a introducirse el concepto del usuario de aplicaciones que hoy conocemos, ya que Apple consiguió una posición privilegiada al ser el único sistema donde estaba disponible VisiCalc (la primera hoja de cálculo), que supuso la primera killer app de la historia, que justificaba la compra de la máquina solo por dicho programa.

Pero el desarrollo siempre ha estado presente en todos y cada uno de los sistemas Apple, porque este Apple II seguía funcionando solo en modo texto y no sería hasta casi mediados de los 80 cuando se introducirían las interfaces gráficas, también de la mano de Apple con el Macintosh de Steve Jobs.

De hecho, el Apple II inicialmente venía con la misma versión de Basic del Apple I, hasta que posteriormente, en 1978, se presentó el Applesoft Basic, diseñado por Marc McDonald y Ric Weiland, basado en el lenguaje Microsoft Basic (de hecho, AppleSoft es la unión de Microsoft y Apple en el nombre).

Esta nueva versión de BASIC para los Apple (también conocida como FP BASIC, de Floating Point) permitió ir mucho más allá a nivel de desarrollo con los Apple II y les dio mayor potencial, ya que para empezar sí soportaba valores flotantes (no como el mencionado Integer BASIC de Woz).

Sobre estas líneas, un simple “Hello World” en AppleSoft Basic, donde Apple se permitió poder usar abreviaturas de comandos que permitían, como puede verse, usar : como espacio entre comandos y parámetros, así como sustituir el comando PRINT por un símbolo ?. Cuando hacíamos un comando LIST para ver cómo era este código se nos presentaba de la siguiente forma:

No sería hasta 1979, con el lanzamiento del Apple II+, cuando se incluiría esta versión de BASIC dentro de la ROM de la máquina, permitiendo trabajar en ella directamente sin tener que cargarla desde fuente alguna.

Apple III

El Apple III, que como tal no terminó nunca de tener el mismo éxito que el II y en el cual Steve Jobs no participó prácticamente, fue una consecuencia curiosa de la lucha que ya era latente entre Microsoft y Apple. Porque tanto Apple como Microsoft desarrollaron cada uno sus propias versiones de BASIC para la máquina. Mientras el AppleSoft Basic venía en la ROM de los Apple III, el de Microsoft funcionaba a través de la carga de una plataforma CP/M que existía para el ordenador de Apple.

Las diferencias entre ambos lenguajes no eran muchas, pero las suficientes para que el código en uno de los lenguajes no funcionara en el otro, ya que algunas instrucciones como GET en el BASIC de Apple, en la versión Microsoft eran INPUT (por citar solo un pequeño ejemplo, con la instrucción que permitía pedir datos por teclado al usuario). Aquella lucha de versiones de BASIC y la batalla por su predominancia, fue calificada como las BASIC Wars.

AppleII Manual

En aquella época los ordenadores de 8 bits domésticos enfocados en juegos empezaban a salir, como el ZX Spectrum, el Commodore 64 (que tuvo gran éxito en Estados Unidos), los Amstrad (muy populares en Europa) y MSX (de gran éxito en Japón. Venían todos con manuales cuyo contenido eran guías para aprender a programar. Nada más encenderlos aparecía el intérprete de BASIC precargado en sus ROMS. Una época donde el ordenador se entendía principalmente como herramienta de desarrollo en su base, pues era para lo que servían nada más encenderse. Y todo esto lo heredaron del Apple I.

Jef Raskin, el precursor del proyecto Macintosh que comenzó su andadura en 1979, era el autor del manual del Apple II donde podíamos aprender a programar en BASIC.

Macintosh

La historia es muy conocida: en diciembre de 1979 un equipo de Apple visitó el Xerox PARC (incluidos Steve Jobs y el citado Jef Raskin) y vieron el Xerox Alto, un prototipo descartado por Xerox con una interfaz gráfica, puntero y un curioso aparato llamado ratón. A cambio de unas opciones sobre acciones de Apple, Xerox permitió a un equipo comandado por Jobs estar durante 3 días en los laboratorios trabajando sobre el Alto, que fue la semilla del Macintosh (además de ser también semilla del Windows de Microsoft que estaría basado en este mismo concepto al que ellos también pudieron acceder).

En 1984 y a un precio bastante alto, salió al mercado el Macintosh: el primer ordenador con interfaz gráfica, puntero y ratón. Pero lo más importante: fue el primer ordenador en venderse al público que no venía con un lenguaje de programación como interfaz de usuario. Por este motivo, también las posibilidades de desarrollo se ampliaron, pues como programas (al igual que hacemos ahora) se podían cargar diferentes opciones de lenguaje. Los más conocidos o usados fueron el MacBasic, el MacPascal o el propio subsistema de desarrollo de los procesadores 68000 de Motorola como los que usaba el Macintosh.

Por este motivo, junto a MacPaint, MacWrite, MacProject o incluso el mismísimo Microsoft Word (que también estaba disponible para Macintosh) se podían usar estos intérpretes/compiladores de lenguajes como BASIC o Pascal.

Microsoft Basic

MacBasic fue diseñado por la propia Apple, más concretamente por Donn Denman, Marianne Hsiung, Larry Kenyon y Bryan Stearns, comenzándose su desarrollo en 1981 y viendo la luz como beta en 1985. Pero al final, en noviembre de 1985 y tras un acuerdo de licencia con Microsoft, este proyecto quedó aparcado y quedó desde ese momento instaurado el uso de Microsoft Basic, a pesar que varias pruebas de la época demostraron que MacBasic era más eficiente en muchos aspectos.

Pero como todos sabemos, Steve Jobs salió de Apple al ser retirado del proyecto Macintosh, vendiendo todas sus acciones de la compañía y presentando su dimisión (poco antes que lo despidieran como tal). Solo se quedó con una acción de Apple. A partir de ese momento, la programación en Apple pasó a ser algo más secundario porque la introducción de interfaces hizo que las máquinas como tales (no solo las de Apple) tuvieran un enfoque más objetivo hacia los usuarios y no a los desarrolladores. El primer gran error de Apple tras la salida de Steve Jobs.

No obstante, grandes como Borland sacaron para Macintosh en 1985 varias versiones de su entorno Turbo Pascal, escrito en ensamblador de las CPUs de Motorola y que tenían un gran rendimiento (aunque el debugger del lenguaje no terminó nunca de ir bien). Pero todo eran soluciones de terceros y Apple abandonó el desarrollo para dedicarse, principalmente, a producir hardware y evolucionar su software de cara a los usuarios. Justo lo contrario que hizo Steve Jobs.

Steve Jobs, NeXT y Objective-C

Jobs salió de Apple y su enfoque fue hacer la mejor máquina del mercado para desarrollo y educación: el NeXT. Y de hecho, todo lo que gestó durante esos años es la semilla de lo que hoy día usamos en nuestro día a día en el desarrollo con Xcode o Cocoa. Pero ya no solo desarrollo en entornos Apple, si no en cualquier otro entorno. Jobs y NeXT sentaron las bases del desarrollo actual.

¿Nunca se ha preguntado por qué muchas de las clases de Cocoa empiezan por NS? Pues por el sistema operativo NextStep que Jobs y su equipo en NeXT crearon en aquella época. Aunque al principio el prefijo fue NX y luego cambió, como veremos más adelante.

NextStep

Toda esa época en NeXT supuso una salto de gigante en el mundo del desarrollo. Y todo comenzó un poco antes, en 1980, cuando Brad Cox y Tom Love decidieron crear una versión de C que integrara el estilo de desarrollo de envío de mensajes característico del lenguaje Smalltalk: con ello nació Objective-C.

Porque la característica principal de los ordenadores NeXT, que los hizo valerse el reconocimiento de la mayoría de la comunidad de desarrolladores del mundo y ser el sistema y ordenador con que se desarrolló el lenguaje de marcado HTML, el primer navegador o el primer servidor web de la historia, era su sistema operativo NextStep cuyas características eran la unión de varios elementos:

  • Un sistema operativo Unix basado en Mach y BSD.
  • Soporte de DPS (Display PostScript) y un sistema de ventanas 2D basado en él, que además era propietario. Este era un sistema pionero de aceleración de gráficos 2D.
  • El lenguaje Objective-C
  • Una capa de aplicaciones orientada a objetos o “kits”
  • Herramientas de desarrollo para esos kits

Estos kits, que conocemos a día de hoy como frameworks, permitían una flexibilidad increíble para los desarrollos, y pronto comenzaron a aparecer kits de base de datos, empresariales, de llamadas de red, etc. Para que nos hagamos una idea de la importancia que tuvieron estas máquinas, no solo estos ordenadores han sido la semilla para lo que es internet. ID Software, los precursores de los juegos FPS (Shooter en primera persona) desarrollaron el motor de Wolfenstein 3D, Doom o Quake, en ordenadores NeXT para luego portar estos desarrollos al resto de entornos comerciales.

O, por ejemplo, una pequeña empresa llamada AltSys desarrolló una herramienta llamada Virtuoso en los NeXT que posteriormente se portó a Windows o Mac y se convirtió en el famoso Macromedia Freehand.

En 1988 fue cuando NeXT licenció Objective-C bajo el nombre comercial de StepStone e incluyó su soporte dentro del compilador gcc. Y a partir de ahí, se desarrollaron los dos primeros kits que fueron la fundación (nunca mejor dicho) de todo el desarrollo de Apple de hoy día y responsable de los famosos NS: AppKit y FoundationKit. Con estos dos frameworks, el desarrollo de apps para el sistema era bastante sencillo.

Interface Builder para NextStep

Y curiosamente el programa que usaba AppKit era Interface Builder, el mismo que hasta Xcode 4 era un programa independiente y que fue lanzado en 1988 para el desarrollo de apps para el NextStep. El formato de las interfaces creadas con este programa eran .nib. ¿Les resulta familiar? De hecho, pocos años después, en 1992, vio la luz Project Builder para NextStep. La semilla de Xcode y que, además, fue el primer IDE integrado en OS X.

OpenStep y WebObjects

En el año 1994, a pesar de la revolución en muchos sentidos que eran los ordenadores NeXT, no se conseguía hacer productiva la empresa por el alto coste de sus productos, por lo que se decidió crear una asociación con Sun Microsystems, responsables del lenguaje Java, antes incluso que se publicara este en 1995. Esta asociación pretendía coger el núcleo de desarrollo de NextStep y permitir que otros sistemas basados en Unix o incluso Windows, pudieran usar estas herramientas.

Estaba concebido como una API orientada a objetos que permitía crear usar un entorno tipo NextStep en ordenadores que no usaran este tipo de sistema, y fue la base sobre la que se construyó la posterior integración con la versión X del sistema operativo de los Mac. De hecho, basado en ello, NeXT creó su propia versión llamada OPENSTEP (todo en mayúsculas) que fue donde se introdujo por primera vez el prefijo NS a los componentes de las APIs de AppKit o FoundationKit. Dicen que el uso de NS es una combinación de NeXT y Sun, aunque otros insisten en que es solo por NextStep.

OpenStep

Otro gran logro de la época NeXT fue WebObjects, el primer servidor de aplicaciones web que generaba páginas dinámicas en función de la interacción del usuario en lugar de páginas estáticas. Este vio la luz en 1995 a un exorbitante precio de 50.000$ la licencia, lo que hizo que solo grandes empresas lo usaran. Pero que fue el motor en los primeros pasos de internet de grandes como Disney, Dell Computer, BBC News, Merrill Lynch, Motorola o DreamWorks SKG. Y este, aunque posteriormente funcionó en Java, originalmente funcionaba con Objective-C como lenguaje principal.

Y de hecho, fue OPENSTEP el sistema que se mantuvo como dominante en los NeXT hasta que en 1996 fue comprada por Apple. Y el motivo principal de dicha compra no fue otro que el desarrollo: aprovechar la excelente infraestructura de desarrollo que Jobs había creado en esos años en NeXT para revitalizar y darle vida al caduco MacOS 9, que en aquel momento sufría las consecuencias del enorme éxito de Microsoft con Windows 95 y del intento fallido de Apple de determinados productos como su consola de videojuegos Pippin (junto a Atari) o las PDAs Newton.

Pero principalmente, Apple estaba pagando el precio de haberse olvidado, durante más de 10 años, del desarrollo en sus propios sistemas. Todo dependía siempre de terceros que hicieran entornos o pusieran lenguajes, lo que hizo que MacOS entrara en un bucle sin fín de obsolescencia y que su evolución fuera nula. Al final de la época de MacOS 9, la sensación general era de una nula evolución de los sistemas, y el motivo de base era esa ausencia de infraestructura de desarrollo propia que sí estaba creando Steve Jobs en NeXT y motivo principal por el que se realizó la compra. Era justo lo que le faltaba a Apple (aparte de la visión de Jobs, obviamente).

Apple y OS X

Aun tardaron unos años en que todo lo que Jobs gestó en NeXT se integrara y que como semilla, de aquello naciera OS X. Con la salida de OS X 10.0 (la versión Cheetah) todo el trabajo que Jobs y su equipo habían realizado en NeXT se integró dentro de los Mac para darles nueva vida a través de las posibilidades de desarrollo que estos tenían. Junto a los ordenadores con Cheetah, venía un disco denominado Developer Tools 1.0 que incluía Project Builder 1.0, el primer IDE de desarrollo de Apple para la era OS X.

Project Builder 1.0

Porque Cheetah y Project Builder eran la base para desarrollo del motor Darwin que a día de hoy sigue funcionando en todos nuestros OS X, iOS, watchOS y tvOS.

No fue hasta el año 2003 cuando Apple presentó junto a OS X 10.3 (Panther) Xcode, como una solución modular multi-lenguaje. De hecho, parte de Project Builder vive en Xcode, como es obvio.

A partir de ahí, Xcode ha ido evolucionando, incluyendo históricamente lenguajes como C, C++, Objective-C, Java, AppleScript, Python, Ruby, Rez o el último Swift y que además permite la integración de módulos para otros lenguajes de scripting como Lua.

La evolución del mismo ha ido paso a paso hacia lo que conocemos hoy día y en una evolución constante:

  • Xcode 2.0 lanzado junto a OS X 10.4 Tiger incluyó Quartz Composer (el lenguaje de programación visual) y la librería de referencia de Apple, que permitía buscar en la documentación, bien si esta estaba online o instalada localmente.
  • Xcode 2.1, lanzado cuando ya se sabía que Apple se pasaría a arquitectura Intel, incluyó soporte de binarios universales para Intel y PowerPC, cabeceras precompiladas compartidas, breakpoints condicionales, uso de los targets de unit testing o los watchpoints.
  • Xcode 3.0 fue lanzado junto a Leopard (10.5) y entre sus grandes novedades incluyó Objective-C 2.0 que tenía un garbage collector para la gestión automática de la memoria.

En julio de 2008, fue cuando Apple lanzó Xcode 3.1: la primera versión en integrar el recién presentado iPhone OS SDK que fue lanzado junto a la versión 2.0 de dicho sistema iPhone OS. Fue el inicio de la App Store y el comienzo de la evolución que hemos visto hasta ahora. Y curiosamente, al poco lanzaron Xcode 3.2 que quitó el soporte de Java.

Xcode 3.1

Hasta ese momento, OS X permitía desarrollar software para sí mismo pero este no dejaba de ser un sistema minoritario en comparación con otros como Windows. Con la llegada de iOS, esto cambió radicalmente porque el espectro de usuarios interesados en el desarrollo en el smartphone de Apple se amplió hasta tal punto que a día de hoy sigue siendo la plataforma que más dinero genera.

Por lo tanto, Xcode siguió evolucionando hacia lo que es hoy día.

  • Xcode 4.0 anunciado en 2010, supuso la unión de Interface Builder y las herramientas de edición de Xcode en una sola app. Hasta ese momento, teníamos que trabajar con la interfaz, grabar y cambiar de programa para hacer el código. Con esta versión 4.0, Apple también lanzó la tienda de Mac, creando un programa de desarrolladores específico para estas, como ya lo había para iOS. La versión 4 perdió el soporte de sistemas antiguos, como todos los PowerPC así como todas las SDKs de OS X 10.5 y 10.4 que aun incorporaba. En iOS, ninguna versión anterior a la 4.3 se soportó (la primera que soportaba multitarea en iPad y iPhone a la vez).
  • Xcode 4.1 lanzado en julio de 2011 también fue un cambio importante. Hasta ese momento Xcode costaba 5$ (si no eras miembro de ningún programa de desarrolladores) y a partir de ese momento, pasó a ser gratis para todo el mundo.
  • Xcode 4.2 vino con la versión 5 de iOS y Snow Leopard 10.6. Fue un cambio muy importante, porque incluyó dos cosas claves: **el ARC, que sustituía al garbage collector e incluyó los storyboards **lo que permitía crear las actuales estructuras que engloban varias vistas y un flujo de navegación dentro de las apps.
  • Xcode 4.3 fue el primero en incluir toda la app dentro de un solo bundle o paquete y reorganizó los menús.
  • Xcode 4.4 incluía ya soporte para Mountain Lion 10.8 y evolucionó un poco el lenguaje Objective-C permitiendo la sintetización automática de propiedades declaradas, sintaxis literal y subscripting.
  • Xcode 4.5, ya en septiembre de 2012, se lanzó junto a iOS 6, añadía soporte para las pantallas Retina de 4″ (añadiendo una relación de aspecto nueva a los dispositivos iOS) y, lo más importante, incorporó el auto-layout a iOS.
  • En junio de 2013 fue donde se dio el siguiente gran paso, junto a la presentación de iOS 7 en la WWDC. La interfaz se actualizó bastante, todo lo que Xcode 4 había ido incorporando como los storyboards o el ARC iban mejorando y en esta versión se incorporó la posibilidad de compilación en 64 bits coincidiendo con el lanzamiento del iPhone 5s. Se eliminó también el soporte del garbage collector.

Y con esto llegamos a la época actual más conocida o más reciente, con Xcode 6 y 7, cuya incorporación más importante fue Swift y los playgrounds.

40 años de desarrollo

Como podemos ver, la evolución de Apple en el mundo del desarrollo (y de Steve Jobs si vemos la época NeXT que fue muy importante para la propia Apple, por eso hemos hablado de ella) ha sido muy importante. Sé que pasa desapercibida para muchos y que no somos plenamente conscientes de todo lo que ha aportado, pero Apple ha sido clave en muchos aspectos para el mundo del desarrollo, una parte importante o, en el caso de NeXT, definiendo las bases mismas del desarrollo actual y cómo se trabaja.

Apple Developer

Es importante entender, que detrás de toda esta evolución hay dos personas muy claras: en una primera etapa el propio Steve Wozniak que marcó las pautas y el inicio y Steve Jobs, quien sabía que el desarrollo era clave en la trayectoria tecnológica y siempre le dio la importancia que tenía que tener. Hasta el punto que gran parte de la historia de la informática se la debemos a él.

Así que, Feliz Cumpleaños Apple. Feliz 40 años de desarrollo donde has colaborado, directa o indirectamente, en que todo sea mucho mejor y que a día de hoy, todos y cada uno de los que nos sentamos delante de un ordenador a programar cualquier cosa (lo que sea), en parte te debamos a ti y a tu evolución lo que hacemos.

¡¡Porque sean muchos más!!

Acerca de Julio César Fernández

Analista, consultor y periodista tecnológico, desarrollador, empresario, productor audiovisual, actor de doblaje e ingeniero de vídeo y audio.

Otras recomendaciones

Phil Schiller - App Store

Mantener un desarrollo con el precio que se pagó hace años

Analizamos y opinamos sobre el difícil modelo de mantener una app con el cobro realizado en el pasado y las últimas opiniones de Phil Schiller, responsable de marketing de Apple. Opinamos sobre la difícil situación de mantener un producto vivo cuando ya se cobró por él y el usuario no tiene la percepción que debería pagar de nuevo e incluso periódicamente. Un debate abierto para opinar.

  • Enrique Condo

    Excelente repaso a la historia de Apple, muy buen artículo!