2009-05-17 5 views
22

No sé Objective-C, pero para mí parece un lenguaje agradable. Pero el único contexto del que lo sé es todo lo de Apple. Pero Objective-C está incluso en la Colección de compiladores de GNU.¿Objective-C solo se usa para desarrollo en Mac OS/iPhone?

¿Hay algo que falta en los abiertos? ¿O ya existe una base más amplia para Objective-C? Me interesa si hay empresas que eligen Objective-C para desarrollar sus productos.

Respuesta

36

Creo que ObjC se ha aislado en el mundo de Apple a través de una peculiaridad de la historia y la naturaleza de los sistemas propietarios.

Primero, debe separar ObjC de Cocoa. ObjC es un lenguaje muy primitivo. Creo que es un lenguaje muy elegante, pero es extremadamente básico. Puede implementar ObjCv1 en un preprocesador C. C++ y ObjC se desarrollaron casi al mismo tiempo. C++ pone una gran cantidad de infraestructura en su lugar para llevar una sintaxis similar a C a lo que es básicamente un lenguaje completamente diferente. ObjC trajo una sintaxis tipo Smalltalk a C, con casi nada más. Incluso cosas como +alloc y -release no son elementos de lenguaje de ObjC. Son envoltorios bastante simples alrededor de malloc() y free(). * De pie por sí mismo, ObjC no es realmente tan interesante (elegante como creo que es). Esto es muy similar a la naturaleza de Smalltalk. Sin sus bibliotecas de objetos, no hay mucho que pueda hacer con eso. Con sus bibliotecas de objetos, es increíblemente poderoso.

NeXT proporcionó este marco completo sobre ObjC llamado NeXTSTEP. Debido a que la computadora NeXT no fue un éxito comercial generalizado, y NeXTSTEP era propietario, no muchas personas aprendieron el marco o el lenguaje subyacente. Cuando Apple lo compró, y lo transformó en Cocoa, siguió siendo un sistema patentado.

GNUStep está por ahí, pero nunca desarrollaron nada lo suficientemente interesante como para atraer a muchos desarrolladores (un importante navegador web o procesador de textos o similares). Y Cocoa ha avanzado mucho más que GNUStep en los últimos años. Es posible que con el aumento del interés en Cocoa debido al iPhone, ese GNUStep pueda revitalizarse y traer un buen marco de desarrollo multiplataforma, pero lo dudo.Las personas que tienen experiencia en C++ miran C# y ven una clara mejora. Cuando miran ObjC, ven muchos corchetes donde no los esperan. Para las personas criadas en el paradigma de los "métodos de llamada", el paradigma de Smalltalk de "pasar mensajes" es extraño e incluso un poco aterrador. Muchos desarrolladores asumen que necesitan un lenguaje fuertemente tipado para evitar errores y se sienten incómodos con un sistema que se basa principalmente en la disciplina del programador y una coherencia cuidadosa. Es mucho más fácil piratear algo que "simplemente funciona" en C# que en ObjC. ObjC realmente espera mucho más del desarrollador para comprender lo que está sucediendo y no confiar en el compilador para protegerlo de sus piratas informáticos.

Básicamente, la gente conocía C de Unix, y C++ tiene sentido en términos de C, y Java tiene sentido en términos de C++, y C# simplemente limpiaba Java. ObjC no es ninguno de estos. Es Smalltalk, y nadie aprende Smalltalk nunca más.

* Recientemente he chateado con el tipo que escribió +alloc sobre su historia, y podría oponerse a que lo llame una envoltura simple dada la inclusión de zonas. Entonces, para usted que conoce la diferencia, reemplace +alloc aquí con +new.

+1

Gracias por la información. Quiero aprenderlo porque es smalltalk que me encanta –

+3

Ah, entonces ya estás a medio camino del Cocoa Nature. Si nuestra industria recordara la mitad de las lecciones que aprendimos en Smalltalk, hoy tendríamos el doble de ventaja. Tengo un equipo lleno de recién egresados ​​graduados en Ciencias de la Computación de excelentes escuelas, y aún tengo que enseñar y volver a enseñar los conceptos básicos de Model-View-Controller. –

16

Bueno, también existe el marco GNUStep que algunas personas todavía desarrollan. Sin embargo, no sé cuán activa es esa comunidad.

Pero en su mayor parte Objective-C es ahora un lenguaje Apple, como lo ilustra el hecho de que la versión "2.0" del lenguaje se inició como parte de OSX 10.5 y parece haber sido un desarrollo puramente interno esfuerzo en Apple.

Editar: Apple, como probablemente sepa, tiene algo llamado el marco de trabajo Cocoa, que básicamente se refiere a toda la pila de bibliotecas para Objective-C, incluida la clase base común de NSObject. Cocoa es una continuación de la biblioteca NextStep, que GNUStep es la versión de código abierto de. Por lo tanto, encontrará muchas de las clases con prefijo NS en ambos lugares, pero Apple no se ha demorado en agregar nuevas clases o cambiarlas en Cocoa, por lo que la interoperabilidad en el nivel de GUI es realmente solo una posibilidad teórica.

+0

Me golpearon con GNUStep por 6 segundos! – Zifre

+0

No sé si todavía hay desarrollo GNUStep pero hace un tiempo encontré el sistema operativo etoile en la web que está activo. Mi pregunta solo tenía un significado diferente.Ajustaré la pregunta –

+1

Originalmente fue desarrollada por Brad Cox y Tom Love, aunque Wikipedia lo cita como Apple como desarrollador (http://en.wikipedia.org/wiki/Objective-C), ya que recibió una licencia de ellos originalmente por NeXT y luego adquiridos por Apple –

4

GNUstep. También hay Étoilé que es un sistema operativo construido con GNUstep.

Creo que a muchas personas les gusta C o C++ mejor, y si querían un lenguaje más moderno, usarían C# o Java.

+3

Creo que citar lo contrario. Puede hacer un desarrollo de nivel de sistema con objetivo-c y puede integrar una parte moderna en él. Para mí, parece realmente poderoso –

+1

¿Por qué crees que Etoile es un sistema operativo? Solo lo conozco como entorno de escritorio –

+0

@Norbert Hartl: es más un entorno de escritorio (como GNOME o KDE), pero la dirección web incluso dice que es un sistema operativo. – Zifre

1

Creo que la implementación de Apple está mejor respaldada y aún en desarrollo activo. Hay algunos otros lugares, como GNUStep, pero todavía parecen estar muy próximos al nivel NextStep/OpenStep. Desafortunadamente, ¡muchas cosas han pasado desde entonces!

6

GNUstep es en realidad mucho más activo de lo que mucha gente cree que es, y vale la pena vigilarlo. No es difícil crear aplicaciones que funcionan a través de GNUstep y Cacao (es decir, potencialmente en OSX, Windows, Linux, BSD ...)

Estos enlaces son definitivamente vale la pena ver para cualquier persona interesada en el tema:

http://www.gnu.org/software/gnustep/information/aboutGNUstep.html

http://etoileos.com/news/

http://www.nongnu.org/gap/

Luego está Cocotron, un proyecto de "código abierto que tiene como objetivo implementar una API multiplataforma de Objective-C similar a la descrita por la documentación de cacao de Apple Inc. ":

http://www.cocotron.org/

EDIT: Para un ejemplo de un producto multiplataforma comercial construido con GNUstep, echa un vistazo a Eggplant.

0

El equipo Mono está haciendo algo con el desarrollo de iPhone que permite que las aplicaciones de iPhone escriban en .NET y se compilen en forma cruzada con el compilador Mono .NET. Échale un vistazo al http://www.mono-project.com/Mono:Iphone

La última .NET Rocks podcast tiene Rory Blythe hablando de cosas que ha estado haciendo en el desarrollo del objetivo C y iPhone.

10

@Stephen: Estoy constantemente sorprendido de cómo la gente nunca lee nuestro sitio web o incluso verifica el progreso del proyecto antes de decir cosas como esta. :) GNUstep sigue de cerca a Cocoa ahora y somos mucho más que OpenStep en este punto. Si usted, u otros, quieren tener una opinión real sobre el tema, obtenga GNUstep de SVN, instálelo y pruébelo. La ponencia sobre algo de lo que no sabes nada (como lo demuestra tu respuesta aquí) no tiene sentido.

Greg C. GNUStep desarrollador jefe

Cuestiones relacionadas