2009-05-12 6 views
8

No tengo una Mac ni un iPhone. Sin embargo, el concepto de tomar C y hacerlo más dinámico hacia la idea de Smalltalk, Python o Ruby es realmente atractivo para mí. Me gustaría empezar en C objetivaObjetivo de aprendizaje C sin Mac

es objetiva C sólo un superconjunto de la sintaxis de C o es realmente como C. Al igual que en, puede ser compilado con gcc, etc ..?

Hago la mayor parte de mi programación en Ruby. El objetivo C parece mucho más indulgente que C. Puedes escribir extensiones nativas para Ruby en C. ¿Puedes escribir extensiones nativas para Ruby en Objective C?

¿Cómo puedo comenzar con Objective C fuera de ser propietario de una Mac/iPhone y tener XCode?

+3

¿Por qué es etiquetados rubí? – MickaelFM

+0

¿Has tenido éxito en tus planes de una extensión de ruby ​​escrita en Objective-C? Desarrollé una extensión de ruby ​​en Objective-c, también. Ahora tengo un problema con las nuevas excepciones object-c (@ throw/@ catch ...). Cuando los uso, mi núcleo Ruby se vuelca en la primera aparición de una excepción. Estoy usando el gnu-runtime y el código core-dumping está dentro de él: objc_exception_throw (...) { ... /* Algún tipo de error de desenrollado. */ abortar(); } –

Respuesta

6

Wikipedia dice

Hoy en día se utiliza principalmente en Mac OS X y iPhone OS de Apple, dos entornos basa en, aunque no compatible con el estándar OpenStep, y es el idioma principal Usó para Apple's Cocoa API aunque fue originalmente utilizado como el idioma principal en el sistema operativo NeXTSTEP de NeXT. Genérico Los programas Objective-C que no hacen uso de estas bibliotecas también pueden ser compilados para cualquier sistema compatible con gcc, que incluye un compilador Objective-C .

Objective-C hoy se utiliza a menudo en tándem con una biblioteca fijo de objetos estándar (a menudo conocido como un "kit" o "marco"), tales como el cacao o GNUstep.

Quizás deba obtener una versión de Linux si está ejecutando principalmente Windows y obtiene GNUStep ejecutándose.

1

Hay una diferencia entre Objective-C de la lengua, y los marcos que Apple ha construido encima. Esos marcos consisten en un grupo de objetos que puede usar en su código y son especialmente útiles si está apuntando a la Mac o al iPhone. Hay algunos objetos similares para partes de él en GNUStep, pero no es un reemplazo completo para la biblioteca Cocoa/etc y especialmente no cubre nada relacionado con el iPhone.

GNUStep y el lenguaje Objective-C (a través de gcc) están disponibles para muchas plataformas, y puede escribir sus propios programas que utilizan objetos Objective-C e interactuar con cualquier apéndice C de Objective-C.

Objective-C es un superconjunto de C y, por lo tanto, no es más indulgente que C, pero podría decirse que es más indulgente que C++ (casi un superconjunto de C). También puede mezclar Objective-C y C++ con GCC, pero eso se complica un poco, especialmente con respecto al manejo de excepciones.

Para empezar y jugar con el lenguaje, GNUStep y GCC serían una buena forma de hacerlo.

+0

Estoy bastante seguro de que Objective-C es un superconjunto estricto de C, a diferencia de C++ que tiene algunas (pero no muchas) rupturas limpias de C. –

+0

Objective-C es un superconjunto completo de C, no casi un superconjunto. –

+0

Ok, lo siento (estoy más familiarizado con C++ que con Obj-C). Voy a corregir el texto, en cualquier caso desde una perspectiva práctica, ambos son un superconjunto de C. –

3

apple contribuyó el objetivo c cambia de nuevo a gcc (no es que tengan mucha opción, ya que es GPL). Entonces, donde sea que pueda configurar gcc, puede configurar un compilador objetivo-c.

Más allá de eso, el entorno Gnustep puede darle un poco del sabor del entorno OpenStep/NextStep original.

0

No veo ningún motivo convincente por el que no pueda usar Objective C para las extensiones nativas de ruby, excepto que no beneficiará mucho. Aún tendrá que usar las llamadas Ci Api de nivel inferior, ya que, por lo que yo sé, no hay ningún rubí para las vinculaciones objetivo-c. Además, Objective C viene con una biblioteca bastante importante de clases de utilidad que, si bien son útiles, no justificarán fácilmente su tamaño y peso en el contexto de una extensión de ruby.

+1

¿Qué biblioteca sustancial de clases de utilidad? Objective-C viene con prácticamente nada. – Chuck