Objective-C

Objective-C
Información general
Paradigma orientado a objetos
Apareció en 1980
Diseñado por Brad Cox
Tipo de dato fuerte, estático
Implementaciones numerosas
Influido por C, Smalltalk
Ha influido a Objective-C++, Java
[ editar datos en Wikidata]

Objective-C es un lenguaje de programación orientado a objetos creado como un superconjunto de C para que implementase un modelo de objetos parecido al de Smalltalk. Originalmente fue creado por Brad Cox y la corporación StepStone en 1980. En 1988 fue adoptado como lenguaje de programación de NEXTSTEP y en 1992 fue liberado bajo licencia GPL para el compilador GCC. Actualmente se usa como un lenguaje principal de programación para Mac OS X, iOS y GNUstep, además de swift.

Historia

A principios de los 80, el software se desarrollaba usando programación estructurada. La programación estructurada se estableció para ayudar a dividir los programas en pequeñas partes, haciendo más fácil el desarrollo cuando la aplicación se volvía muy grande. Sin embargo, como los problemas seguían creciendo al pasar el tiempo, la programación estructurada se volvió compleja dado el desorden de algunos programadores para invocar instrucciones repetitivamente, llevando a código spaghetti y dificultando la reutilización de código.

Muchos vieron que la programación orientada a objetos sería la solución al problema. De hecho, Smalltalk ya tenía solucionados muchos de estos problemas: algunos de los sistemas más complejos en el mundo funcionaban gracias a Smalltalk. Pero Smalltalk usaba una máquina virtual, lo cual requería mucha memoria para esa época, y era demasiado lento.

Objective-C fue creado principalmente por Brad Cox y Tom Love a inicios de los 80 en su compañía Stepstone. Ambos fueron iniciados en Smalltalk mientras estaban en el Programming Technology Center de ITT en 1981. Cox se vio interesado en los problemas de reutilización en el desarrollo de software. Se dio cuenta de que un lenguaje como Smalltalk sería imprescindible en la construcción de entornos de desarrollo potentes para los desarrolladores en ITI Corporation. Cox empezó a modificar el compilador de C para agregar algunas de las capacidades de Smalltalk. Pronto tuvo una extensión para añadir la programación orientada a objetos a C la cual llamó «OOPC» (Object-Oriented Programming in C). Love mientras tanto, fue contratado por Shlumberger Research en 1982 y tuvo la oportunidad de adquirir la primera copia de Smalltalk-80, lo que influyó en su estilo como programador.

Para demostrar que se hizo un progreso real, Cox mostró que para hacer componentes de software verdaderamente intercambiables sólo se necesitaban unos pequeños cambios en las herramientas existentes. Específicamente, estas necesitaban soportar objetos de manera flexible, venir con un conjunto de bibliotecas que fueran utilizables, y permitir que el código (y cualquier recurso necesitado por el código) pudiera ser empaquetado en un formato multiplataforma.

Cox y Love luego fundaron una nueva empresa, Productivity Products International (PPI), para comercializar su producto, el cual era un compilador de Objective-C con un conjunto de bibliotecas potentes.

En 1986, Cox publicó la principal descripción de Objective-C en su forma original en el libro Object-Oriented Programming, An Evolutionary Approach. Aunque él fue cuidadoso en resaltar que hay muchos problemas de reutilización que no dependen del lenguaje, Objective-C frecuentemente fue comparado detalladamente con otros lenguajes.

Popularización mediante NeXT

En 1998, NeXT licenció el Objective-C de StepStone (el nuevo nombre de PPI, el dueño de la marca Objective-C) y extendió el compilador GCC para dar soporte a Objective-C, al mismo tiempo que desarrolló las librerías AppKit y Foundation Kit sobre las que se basaron la interfaz de usuario y la interfaz de creación de NeXTstep. Mientras que las estaciones de trabajo de NeXT no consiguieron hacer un gran impacto en el mercado, las herramientas fueron ampliamente alabadas en la industria. Esto llevó a NeXT a abandonar la producción de hardware y enfocarse en las herramientas de software, vendiendo NeXTstep (y OpenStep) como una plataforma para la programación a medida.

El trabajo para extender GCC fue liderado por Steve Naroff, que se unió a NeXT proveniente de StepStone. Los cambios del compilador fueron puestos a disposición bajo términos de licencia GPL, pero no las librerías de tiempo de ejecución, dejando la contribución de código abierto inutilizable para el público general. Esto llevó a que otras compañías desarrollaran esas librerías bajo licencias de código abierto. Más tarde, Steve Naroff fue también un colaborador principal al trabajo de Apple de construir la interfaz de Objective-C Clang.

El proyecto GNU comenzó a trabajar en su implementación de Cocoa como software libre, llamado GNUstep y basado en el estándar de OpenStep.[1] Dennis Glatting escribió el primer sistema en tiempo de ejecución de GNU Objective-C en 1992. El sistema GNU Objective-C, que ha sido usado desde 1993, es uno de los desarrollados por Kresten Krab Thorup cuando era un estudiante universitario en Dinamarca. Thorup también trabajó en NeXT desde 1993 hasta 1996.

Desarrollo de Apple y Swift

Tras adquirir NeXT en 1996, Apple empleó OpenStep en su nuevo sistema operativo, Mac OS X. Este incluía Objective-C y la herramienta de desarrollo basada en Objective-C de NeXT, Project Builder (que luego se ha expandido y ahora se conoce por Xcode), así como la herramienta de diseño de interfaz, Interface Builder. La mayoría de la actual Cocoa API de Apple está basada en objetos de interfaz de OneStep, y es el entorno de desarrollo de Objective-C más usado para desarrollo activo.

En la WWDC de 2014, Apple anunció planes para reemplazar a Objective-C en el desarrollo de Cocoa por el nuevo lenguaje Swift, que es llamado "Objective-C sin la C".

Other Languages
العربية: سي-الكائنية
azərbaycanca: Objective-C
български: Objective-C
català: Objective-C
čeština: Objective-C
Deutsch: Objective-C
English: Objective-C
Esperanto: Objective-C
français: Objective-C
galego: Objective-C
עברית: Objective-C
magyar: Objective-C
Հայերեն: Objective-C
italiano: Objective-C
日本語: Objective-C
ქართული: Objective-C
қазақша: Objective-C
Nederlands: Objective-C
norsk bokmål: Objective-C
polski: Objective-C
português: Objective-C
русский: Objective-C
Simple English: Objective-C
slovenčina: Objective-C
slovenščina: Objective-C
српски / srpski: Objective-C
svenska: Objective-C
тоҷикӣ: Objective-C
Türkçe: Objective-C
українська: Objective-C
中文: Objective-C