¿Qué es Objective-C?
Objective-C es, cómo C++, un lenguaje orientado a objetos que desciende de C. Esta descendencia hace que Objective-C sea compatible hacia atrás, haciendo esto que mucha de la sintaxis y características de C estén presentes en Objective-C:
- Sentencias de control de flujo (if, for, while...)
- Tipos de datos fundamentales, estructuras y punteros.
- Conversiones implícitas y explícitas entre tipos.
- El ámbito de las variables: Global, estáticas o locales.
- Las funciones y su sintaxis.
- Las directivas del preprocesador (añadiendo Objective-C las suyas, así como las llamadas directivas del compilador).
¿Y entonces en qué se diferencian C++ y Objective-C? Pues en muchísimas cosas, empezando por lo obvio: las influencias procedentes de las ideas de Smalltalk, lo cual hace de Objective-C un lenguaje muy limpio, pequeño y por ende, mucho más rápido y fácil de aprender que C++. Aun así, Objective-C es mucho menos usado que C++ (hablando en general, en el mundo Mac OS X no es así); esto puede ser porque, a diferencia de otros lenguajes de las GCC, Objective-C no ha sido estandarizado por ningún organismo internacional, sino que fue NeXSTEP, y ahora Apple con Mac OS X, quienes han contribuido a crear este lenguaje. De echo, NeXSTEP cedió su implementación de Objective-C a las GCC, por lo que se puede programar en Objective-C tanto en Linux como en Windows, claro está, que el número de librerías es limitado y sólo están las básicas (aunque se pueden acceder a las librerías C y C++ desde Objactive-C).
Después de la diferencia más obvia como es la sintaxis, si se tuviese que elegir una característica que diferencie a Objective-C de otros lenguajes (ya no sólo de C++), ésta sería su dinamismo, en el sentido de que Objective-C es un lenguaje marcadamente dinámico. Muchas de las decisiones que otros lenguajes toman en tiempo de compilación, Objective-C las toma en tiempo de ejecución. Ejemplos:
- En Objective-C, a diferencia de C++, los objetos siempre se crean en memoria dinámica.
- Los atributos de una clase no tienen por que estar tipificados estáticamente. Más adelante veremos cómo declarar atributos dinámicos, muy útiles para patrones de diseño como por ejemplo la delegación (muy usada, por cierto, en Cocoa).
- El punto anterior lleva a que la comprobación de la existencia de los métodos se lleve a cabo en tiempo de ejecución. ¿Esto que quiere decir? Pues que si por ejemplo llamásemos al método “imprimirHola” de nuestra clase “Saludar”, pero este no existe, el error nos saltaría durante la ejecución del programa y no durante la compilación.
Este dinamismo puede ser un arma de doble filo, por supuesto. Si por algún casual el método “imprimirHola” si existe, pero nos equivocamos al escribir y al llamarlo escribimos “ imprimiHola” (nos comemos la “r” final de imprimir) esto ocasionaría descubrir el error durante la ejecución del programa, algo que en programas de gran envergadura no nos podemos permitir. Bien, por este motivo, la dinámica de Obajective-C no es tal: durante la compilación del programa, en este caso, nos saltará un “warning” indicándonos que el método que estamos invocando podría no existir, pero el programa compilará y ejecutará sin problemas (si el método no es una rutina crítica para el funcionamiento del programa, claro).
ja estas en segundo lugar en san google, ponle objetive c y sales!
ResponderEliminar