2009-07-29 13 views
26

¿Por qué Apple decidió usar Objective-C para el iPhone SDK y no para C++?¿Por qué Apple usa el objetivo C?

Me parece extraño que no hubieran elegido un lenguaje más popular que Objective-C. ¿Es porque quería tener algo único en su aplicación que de otro modo no sería de uso general?

+1

Cuando le preguntaste a Apple, ¿qué dijeron? –

+6

Se usa en el iPhone porque es el lenguaje de programación estándar para MacOSX. – skaffman

+1

Votación para cerrar fuera del tema o demasiado amplia. –

Respuesta

46

de Apple se fusionó con NeXT en los años 90 y Mac OS X fue hecha desde el sistema operativo de NeXT, NeXTSTEP. Objective-C era el idioma oficial de los marcos de aplicaciones de NeXTSTEP, que se convirtió en Mac OS X's Cocoa. Mac OS X luego se adaptó al iPhone OS, y Cocoa se convirtió en Cocoa Touch. Objective-C se ha mantenido bastante bien a lo largo del camino, y muchas de las características de Cocoa serían difíciles de traducir a C++.

Así que esencialmente, todo viene de NeXT.

+3

Algo de historia. Lea la página 1 de http://www.amazon.com/gp/reader/0321503619/ref=sib_dp_ptu#reader-link – epatel

+0

Dead on. Tenga en cuenta que se intentó unir Cocoa a Java, pero las características dinámicas simplemente no se traducen bien, y CocoaJava quedó obsoleto en 10.4 y desaparecerá en 10.6+. La migración a C++ enfrentaría problemas similares, y lo único que realmente "resolvería" es que el desarrollador esté familiarizado con el lenguaje de programación. C++ es un lenguaje muy complejo, y aunque Objective-C no es perfecto, tiene muchas ventajas propias y se compara favorablemente con C++ y otros lenguajes OO en muchos aspectos. –

+0

Creo que un puente Cocoa-C++ en realidad sería más difícil que Cocoa-Java. La propia Java fue fuertemente influenciada por Objective-C, por lo que hay más similitudes allí que entre dos lenguajes completamente sin relación como C++ y Objective-C. – Chuck

3

Se debe a que Objective C ha sido el lenguaje de facto para Mac OS X antes de Mac OS X. Cuando Jobs dejó Apple para configurar NeXT, el lenguaje Objective C se desarrolló como un lenguaje específico que no era C++ y evitó muchas de sus trampas. Por lo tanto, tiene sentido que cualquier equipo portátil o de consumo (incluido Apple TV) utilice Objective C como su principal lenguaje de desarrollo, y que baje a la capa C subyacente cuando sea necesario para problemas de rendimiento o de interfaz.

+9

Objective-C estuvo mucho antes que NeXT. Simplemente lo hicieron popular. –

1

Tenga en cuenta que Objective-C no es un idioma nuevo. Ha existido desde 1986, mucho antes que Java o C#.

Ha sido un uso general desde NeXT, muchas aplicaciones en el mundo real que lo utilizan.

18

Objetivo C comenzó su vida en 1983, creo, creado por Brad Cox y Tom Love. La idea de Objective-C era tomar la pureza y el control de bajo nivel de C y fusionar eso con características reales orientadas a objetos que permitirían a las empresas personalizar las bibliotecas del sistema que podrían comunicarse con la capa OOP de Obj-C. Esencialmente, funcionó. Obj-C es un superconjunto estricto de C, a diferencia de C++, que es la mayor parte de C, pero con muchas diferencias.

Cuando Steve Jobs fundó NeXT Computer (1985), trajo algunos de sus antiguos equipos de Apple y otros. Sus mejores programadores estaban interesados ​​en usar un lenguaje que se expandió en C con los mismos beneficios de velocidad y control del sistema. Eligieron Objective-C. NeXT finalmente escribió muchas bibliotecas y métodos para el lenguaje base. Todo comienza con NS para Next Step. Este era el nombre del sistema operativo NeXT. En 1989, el sistema operativo Next Step se consideraba muy superior a MS Windows o Mac OS, y muchas empresas de informática querían licenciarlo mal. Jobs simplemente no quería ir en esa dirección.

Una vez que Apple se preparó y trajo a Steve Jobs al redil (1996), la infusión de Next Step OS en el nuevo Mac OS X fue realmente la clave para que Apple reviva su software y su estrategia de programación.

Mientras que C++ sigue siendo un excelente y poderoso lenguaje, creo que Objective C tiene menos defectos (solo mi opinión), y el continuo trabajo de Apple en las bibliotecas Cocoa ha hecho que el lenguaje Obj-C sea una potencia verdaderamente moderna con C bases. ¿Es mejor que Java? No es seguro. Pero para lo que está diseñado principalmente (Mac OS, iOS) es asombrosamente bueno, aunque un poco demasiado detallado.

La mayor crítica de Obj-C es el estilo sintáctico, pero cualquier programador que realmente aprenda el idioma aprenderá rápidamente de su increíble potencia y se adapta perfectamente a todas las cosas Mac, iPhone, iPad.

¿Alguna otra plataforma finalmente adoptará Obj-C? no estoy seguro, pero dudoso. Pero las bibliotecas de Cocoa son realmente maravillosas.