Objective-C Lenguaje de programacion - Lenguajes De Programación

Breaking

Flickr Photos

BANNER 728X90

lunes, 30 de abril de 2018

Objective-C Lenguaje de programacion

Objective-C



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.
Este lenguaje extiende al clásico lenguaje de programación C, añadiéndole capacidades de programación orientada a objetos y sobre todo intentando atajar los problemas de reusabilidad que tenía éste. Su desarrollo se inició en 1981 (¡hace más de 30 años!) por parte de dos programadores entusiastas de la empresa ITT, que luego fundaron su propia empresa para comercializarlo.

Se popularizó a finales de la década de los '80 cuando lo licenció un pequeña empresa llamada NEXT, fundada por Steve Jobs tras haber sido expulsado de Apple. Cuando Apple compró NEXT unos años después (en 1996) y Jobs volvió triunfante a su casa, sus sistemas formaron la base de la nueva Apple, y con ellos el lenguaje Objective-C, que nos persigue hasta hoy.

Objective-C es un lenguaje bastante árido y con muchas diferencias frente a lenguajes de propósito más general como C# o Java. Por eso muchos programadores que se meten en la programación para Mac o para iPhone/iPad encuentran su principal barrera en comprender bien y utilizar Objective-C.
Una de las primeras cosas que llaman la atención es que Objective-C es un lenguaje compilado. pero también es al mismo tiempo un lenguaje enlazado . Esto quiere decir básicamente que el resultado del compilador no es el programa final sino que existe una segunda fase que lleva a cabo el enlazador (linker en inglés).

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.

Objetos

La unidad base de la actividad en todos los lenguajes orientados a objetos es el objeto – una entidad que asocia los datos con las operaciones que pueden ser hechas con esos datos. Objective-C provee un tipo de datos diferenciado, id, definido como un puntero a los datos de un objeto que permite trabajar con objetos. Un objeto puede ser declarado en el código de esta manera: id anObject; Para todas las construcciones orientadas a objetos de Objective-C, incluyendo los valores de retorno de los métodos, id, reemplaza el tipo de datos int, de C, como el tipo de datos de retorno por defecto.

Escritura dinámica


El tipo id es completamente ilimitado. Este tipo de datos dice muy poco acerca del objeto, indicando únicamente que el objeto es una entidad del sistema que puede responder a determinados mensajes y ser consultado para su comportamiento. Este tipo de comportamiento, conocido como “escritura dinámica”, permite al sistema encontrar la clase a la cual pertenece el objeto y determinar los mensajes necesarios para las llamadas de los métodos.

Escritura estática

Objective-C soporta la escritura estática, en la cual se declara una variable, usando un puntero a su tipo de clase, y no id, por ejemplo: NSObject *object; Esta declaración activará algún grado de chequeo de tiempo de compilación para generar advertencias (warnings), cuando no hay concordancia con un tipo de datos, y además cuando se usan métodos no implementados por una clase.