? He oído mencionar Objective-C pero nunca lo he usado. Tenía curiosidad por saber cuál era la opinión de todos en general y también en relación con C++. ¿Hay algún tipo de proyectos donde sería más útil o menos útil?¿Cuáles son las ventajas de usar Objective-C sobre C++
Respuesta
Para el desarrollo de Mac y iPhone, definitivamente es mejor. La última versión tiene un GC, así que si te gusta, probablemente te gustará más que C++.
Mi opinión es que la sintaxis de Objective-C es un poco "rara" al principio, especialmente si proviene de un fondo de C/C++ (como yo lo hice). Si planea escribir aplicaciones para Mac o iPhone, el desarrollo de Cocoa es el camino a seguir. Tuve la oportunidad de hacer algo de desarrollo en Mac durante aproximadamente un mes esta primavera y opté por escribirlo en C++ utilizando las bibliotecas de Qt ya que estaba bastante familiarizado con ellas y el tiempo era esencial.
¡Si tienes una Mac, pruébala! Hay MUCHA información sobre esto y hay algunas buenas herramientas para el desarrollo.
Para agregar a estas excelentes respuestas, quiero señalar que también hay Objective-C++ si se siente más cómodo con eso para empezar. –
Si está ejecutando Linux puede instalar GNUStep que proporciona una compatibilidad bastante buena con Cocoa. Esto puede ayudarlo a comenzar el desarrollo de Objective-C/Cocoa sin tener una Mac. Los mejores recursos para aprender Objective-C [en mi opinión] están con Apple.
http://developer.apple.com/referencelibrary/Cocoa/index.html
Al igual que muchos otros que acaba de comenzar mirando Obj-C debido a iPhone. He hecho un montón de C++ y C# y, por lo que puedo ver, Obj-C tiene un enfoque básicamente diferente al de OO, ya que agrega mensajes tipo Smalltalk a C. Al igual que C++, sigue siendo básicamente compatible con C, pero las extensiones de OO usted envía cualquier mensaje a cualquier objeto. En ese sentido, no está tipado estáticamente, como C++ y C#, donde las cosas que un objeto puede hacer están ligadas a la clase que es. En Obj-C puede enviar un mensaje a un objeto incluso si no lo admite. El objeto puede reenviarlo si no sabe qué hacer con él.
Lo realmente genial es que puede agregar interfaces (protocolos) en tiempo de ejecución y puede agregar sus propios controladores que interceptan y ocultan manejadores de mensajes para las clases existentes.
En general, hay mucha más flexibilidad en lo que respecta al manejo de mensajes, más parecido a lo que haría en Ruby o Smalltalk. Si es una buena idea tener este tipo de OO injertado en C o no, no puedo decir todavía, de alguna manera el enfoque de C++ se combina mejor con la idea original de C, pero por otro lado el enfoque Obj-C OO es más lo que les gusta a los puristas.
De "Some nice features of the Objective-C language":
- clases son objetos
- tipado dinámico y estático opcional escribir
- Categorías
- Envío de mensajes
- sintaxis del mensaje expresivo
- introspección
- Run-dinámico tiempo
- recolección de basura automática
- C en el interior
- C++ fluidez
- Simplicidad
- El acceso a las tecnologías de Apple
Es más dinámico que C++ y fuertemente influenciado de Smalltalk. No lo encuentro "mejor" que C++, por el contrario, pero algunas personas sí.
Parte de lo que hace Objective-C tan grande no es el idioma (aunque eso es un gran parte ot ella), que es el marco de cacao (o Cocoa Touch) que va junto con él (al menos para 99% de los usuarios de objc ;-)
En términos prácticos, solía ser un programador de C++ en los viejos días "clásicos" de Mac. Al cambiar a Objective-C, Cocoa y Mac OS X, descubrí que era mucho más productivo. Difícil decir exactamente cuánto más productivo, pero 50% a 100% se siente bien.
Bueno, si está codificando algunas plataformas como el iPhone, se requiere Objective-C. Objective-C también usa el tipeo dinámico (en tiempo de ejecución), que muchas personas prefieren sobre la estática (tiempo de compilación).
Las características OO del Objective C utilizan el tipado dinámico en lugar del tipado estático (en tiempo de compilación). Esa es la principal diferencia en los enfoques de los dos idiomas: si se trata de una ventaja o no depende de tu opinión sobre la tipificación estática frente a la dinámica.
WebKit fue originalmente un proyecto de C++ (khtml de KDE) que luego fue adaptado por Apple para ser más compatible con el entorno Cocoa y por lo tanto obtuvo su capa Objective-C.
puedo encontrar la sintaxis de Objective-C un poco más limpio que C++ 's aunque sé que estoy en la minoría aquí
Sí, yo diría que es mucho más limpio. No solo un poco Al igual que en, en realidad se puede analizar. –
- 1. ¿Cuáles son las ventajas de usar Qt?
- 2. ¿Cuáles son las ventajas de usar Ruby NArray sobre Array?
- 3. ¿Cuáles son las ventajas de usar SVN sobre CVS?
- 4. ¿Cuáles son las ventajas de usar Automapper?
- 5. Cuáles son las ventajas de C# sobre Python
- 6. ¿Cuáles son las ventajas de concurrent.futures sobre multiproceso en Python?
- 7. Cuáles son las ventajas de MVC3 sobre MVC2
- 8. ¿Cuáles son las ventajas de LePUS3 sobre UML?
- 9. ¿Cuáles son las ventajas de PyQt sobre PyGTK y viceversa?
- 10. ¿Cuáles son las ventajas y desventajas de usar esquemas XML?
- 11. ¿Cuáles son las ventajas de usar un errback?
- 12. ¿Cuáles son las ventajas de usar Spring Data neo4j sobre simplemente usar neo4j directamente?
- 13. ¿Cuáles son las ventajas prácticas del currying?
- 14. ¿Cuáles son las ventajas de Perforce?
- 15. Cuáles son las ventajas de VistaDB
- 16. ¿Qué es NSZone? ¿Cuáles son las ventajas de usar initWithZone :?
- 17. node.js - cuáles son las ventajas de usar jade
- 18. ¿Cuáles son las ventajas de usar Prolog en otros idiomas?
- 19. cuáles son las ventajas de usar plpgsql en postgresql
- 20. ¿Cuáles son las ventajas y desventajas de usar boost :: iterator_facade?
- 21. ¿Cuáles son las ventajas y desventajas de usar el GAC?
- 22. ¿Cuáles son las ventajas/desventajas de usar Maven?
- 23. ¿Cuáles son las ventajas y desventajas de usar OpenID?
- 24. ¿Cuáles son las ventajas de Lazy Evaluation?
- 25. ¿Cuáles son las ventajas de utilizar Rubinius
- 26. ¿Cuáles son las ventajas y desventajas de usar servicios sobre componentes?
- 27. ¿Cuáles son las ventajas de usar una solicitud GET sobre una solicitud POST?
- 28. ¿Cuáles son las ventajas de usar DBIx :: Connector sobre simplemente establecer mysql_auto_reconnect en 1?
- 29. ¿Cuáles son las ventajas de VS2008 sobre VS2005 para el desarrollo de C++?
- 30. ¿Cuáles son las ventajas de F # sobre C# para el desarrollo de aplicaciones empresariales?
Los muy suelta la unión de invocaciones de métodos e interfaces separadas hacen que para el código bastante estable, y que ejecutan los objetos en zonas separadas (espacios de direcciones de memoria) hace que las aplicaciones sean muy estables, dado que básicamente es C. –
"La última versión tiene un GC, así que si te gusta, probablemente te gustará más que C++". Tenga en cuenta que este es un argumento gratuito. Un GC no es necesariamente el Graal de un desarrollador C++ ... :-p ... – paercebal
Estoy de acuerdo, es por eso que dije, "así que si te gusta eso" –