objective-c - logo - objective c tutorial español
¿Por qué Objective-C no es muy popular fuera de la comunidad de Apple? (5)
Sé que la comunidad de Apple, incluidos los desarrolladores de Mac y iPhone, utiliza principalmente Objective-C para su lenguaje de desarrollo. Pero parece que no muchas personas usan Objective-C fuera de la comunidad de Apple, como en el mundo de Windows o Linux.
¿Cuáles son las posibles razones por las que Objective-C no es particularmente popular fuera de la comunidad de Apple?
Desde el principio, creo que C ++ es más antiguo que Objective-C, y no solo por esta razón tiene una base de usuarios mucho más grande. Donde quiera que haya venido OC, C ++ ya estaba allí :)
Además, C ++ tiene más características. Muchas personas están impresionadas por muchas características. Y ha tenido más investigación y desarrollo vertidos en él ... y así sucesivamente. Esencialmente, el impulso.
Esta es una pregunta complicada; pero en breve Creo que la respuesta probablemente se encuentra en la edad de los sistemas operativos y sus raíces.
- UNIX es C, así que eso es.
- Linux se concibe como un clon directo de Unix, (Muy bien, esto es un poco inexacto, pero lo suficientemente cerca para esta discusión) y como tal, está más o menos escrito en C.
Windows es un sistema operativo antiguo ; y uno que se construye apilando hack sobre hacking que se remonta hasta Windows 3.1. C ++ está muy favorecido, y en .NET, C #.
Esta nueva afluencia, por supuesto, se basa en cualquier agenda que Microsoft tenga con esa plataforma.
Mac OS X; por otro lado, es un sistema operativo (comparativamente) joven, y sus partes nuevas (aunque todavía son bastante antiguas, se heredan de NeXT y todo eso) se basan en Objective-C porque "¡Hey! ¿Por qué no?".
Como la compatibilidad hacia atrás no estaba entre la lista de prioridades con Mac OS X 10.0; La caja de herramientas basada en C / C ++ y Carbon obtuvieron el extremo corto del stick, y todo el sistema operativo se hizo más o menos como una versión reskinned de NeXTStep.
El problema con Obj-C es que el poder del lenguaje proviene principalmente de los marcos considerables, el nivel generalmente alto de integración en el sistema, etc. Es casi imposible obtener un buen jive como ese sin una ruptura total con la compatibilidad con versiones anteriores y, como tal, nunca tendría una oportunidad en ninguna plataforma que no se atreviera a hacerlo. Apple, con una base de usuarios pequeña (en ese momento) y dedicada, se atrevió a hacer esto, y alcanzó el oro.
Microsoft ahora está intentando, pero están, en mi humilde opinión, fallando. ("¿¡¿Falla ?! .NET ?! ¿CÓMO TE ATREVISTAS?": Con 4 revisiones importantes en aproximadamente 8 años, están creciendo más que la maduración; lo que puede ser una buena cosa, si pueden darle la vuelta).
Editar: hay algunos proyectos que intentan portar OpenStep a Linux, pero son un poco torpes y difíciles de usar; también hay proyectos más pequeños en NS / OS-me gusta con dominios de problemas más pequeños, pero es un trabajo cuesta arriba.
Otra forma de pensar acerca de esta pregunta podría ser: ¿por qué C ++, en lugar de Objective-C, se convirtió en la "C orientada a objetos"?
Aprendí C ++ en 1991, y recuerdo que C ++ parecía ser lo mejor, mientras que Objective-C era este pequeño y extraño lenguaje que nadie (aparte de NeXT) quería usar. He estado tratando de recordar por qué, y creo que se reduce a 4 cosas (5, si incluyes a C ++ con AT&T detrás):
- Características: C ++ tenía, incluso entonces, un conjunto de características mucho más rico que Objective-C.
- Sintaxis: la sintaxis de Objective-C es un cambio mucho mayor desde C que es C ++.
- Rendimiento: Stroustrup se enfocó en hacer que las funciones de C ++ se puedan mapear fácilmente a C, de modo que (¡en teoría!) No haya una penalización en el rendimiento al usar C ++. Y con el uso juicioso de la palabra clave "en línea", incluso podría obtener un mejor rendimiento con C ++ que con C. Incluso ahora, no hay forma de utilizar Objective-C en un proyecto en el que el rendimiento era crítico.
- Estilo: La moda relativamente fuerte y estática era la moda (por buenas razones).
Por lo tanto, en comparación con Objective-C, C ++ a principios de los años 90 le brindó más funciones con menos penalizaciones de rendimiento, con una sintaxis que era a la vez moderna y más familiar que la de Objective-C.
Recientemente estuve en una librería leyendo Masterminds of Programming, donde los creadores de lenguajes de programación hablan de sus creaciones. Hubo un capítulo sobre Objective-C en el que se preguntó a Tom Love (uno de los creadores de Objective-C, junto con Brad Cox) por qué C ++ había llegado tan lejos, mientras que Objective-C no:
¿Por qué crees que C ++ se usó con más frecuencia que Objective-C?
Tom: Tenía el apodo de AT&T detrás.
¿Solo eso?
Tom: Creo que sí.
¿Qué opinas sobre Objective-C hoy?
Tom: Todavía existe. ¿Qué hay sobre eso?
Objective-C no es más que una capa delgada (un poco más espesa con 2.0 ) de azúcar sintáctica para transmitir mensajes sobre el estándar C. Incluso la orientación de objeto más básica es proporcionada por la biblioteca de tiempo de ejecución, que fue propietaria durante mucho tiempo. La inercia es un factor importante en el uso del lenguaje.
Brilla especialmente en las GUI , pero los únicos kits de herramientas que lo soportan son los de Apple y el GNUStep en su mayor parte desconocido y de fácil acceso .
Si bien hay algo de valor para Objective-C fuera de las GUI , y creo que la gente usaría las extensiones si se importaran a C , incluso en el código del sistema, hay pocas razones para elegirlas sobre alternativas, cuando se pretende que una parte de su sistema no sea suficiente. trabajar con ello