Pregunta

He estado programando en C, C++, C# y algunos otros lenguajes durante muchos años, principalmente para Windows y Linux, pero también para plataformas integradas.Recientemente comencé a programar un iPhone como proyecto paralelo, por lo que estoy usando las plataformas Apple por primera vez desde mis días en Apple II.Me pregunto qué piensan otros desarrolladores que están llegando a Mac OSX, Xcode y iPhone SDK.Estas son mis impresiones, hasta el momento:

  • Mac OS X:Es muy confuso, tiendo a terminar con demasiadas ventanas abiertas y no sé dónde está.Por suerte existe la vista de pájaro, sin ella estaría perdido.Con el shell al menos están todas las cosas familiares, así que eso me ayuda mucho.

  • Código X:No se siente tan bien como VisualStudio o Eclipse, los dos entornos con los que estoy familiarizado.Creo que podría acostumbrarme pero me pregunto si Apple no estaría mejor con Eclipse.Antes de encontrar la configuración donde todas las ventanas están pegadas, lo odiaba, ahora puedo tolerarlo.

  • SDK de iPhone:extraño en verdad.Entiendo el deseo de Apple de controlar su entorno, pero hoy en día parece un poco sórdido y se están perdiendo mucho al destruir la buena voluntad de los desarrolladores.

  • C objetivo:Lo sé desde hace años pero ni siquiera le he echado un vistazo.La sintaxis es desagradable, pero en realidad estoy muy intrigado por el lenguaje.Creo que es una tercera etapa interesante entre C++ y C#, los cuales me gustan mucho.¿Existe alguna posibilidad de que Obj-C salga del entorno limitado de Mac debido al aumento de la popularidad de la tecnología de Apple?

Curioso por leer tus pensamientos,

Andrés

¿Fue útil?

Solución

Estoy en el mismo barco que tú (más o menos).Llevo 7 años desarrollando en C#, desde .NET 1.0.Durante las últimas dos semanas he estado aprendiendo por mi cuenta Cocoa y Objective-C.Aquí tenéis mis impresiones (nota por nota con las vuestras)

  • De acuerdo en que el desorden puede ser un problema.Tiendo a usar mucho Spaces cuando desarrollo en XCode (coloque XCode en un espacio, Interface Builder en otro espacio, Instruments en un tercer espacio).Si no tienes Leopard (y por lo tanto, no tienes espacios), usa Comando-H para ocultar tu ventana activa.Usar eso tiende a limpiar un poco las cosas (sin embargo, sería bueno si pudieras ordenar-h automáticamente en la ventana actual al cambiar de comando a otra aplicación).

  • Cada vez me gusta más XCode.Odio Visual Studio: lo encuentro inestable, lento y, bueno, un IDE bastante malo.Comparativamente, he descubierto que XCode es rápido, estable y me gusta cómo organiza y filtra sus archivos.No estoy muy al tanto de mis atajos de XCode, pero espero que haya una manera de cambiar rápidamente de una clase a otra (similar al atajo Ctrl +n en ReSharper).Intellisense podría ser mejor en cuanto a cómo se muestra al usuario, pero realmente me gusta cómo crea esencialmente una plantilla y puedes presionar Ctrl + / para saltar al siguiente argumento en un mensaje.

  • Odio la documentación en XCode.El sistema de ayuda apesta y por alguna razón nunca encuentra lo que estoy buscando.Termino buscando en Google todo lo que necesito saber...Espero que mejoren la documentación.Este es mi mayor problema en este momento.

  • Aún no he llegado a este punto, ya que estoy revisando el marco Cocoa completo para computadoras de escritorio Mac.Hasta ahora me está gustando mucho lo que veo.Una cosa que diré es que sería bueno si el SDK del iPhone permitiera la recolección de basura...

  • Objective-C: nunca lo he usado, esta es mi primera incursión en él.Al principio me sentí un poco desconcertado por la sintaxis y los corchetes de la mensajería, pero realmente me está gustando.Es muy rápido hojear un método y ver las llamadas de mensajes que realiza ese método.Cuanto más lo uso, más agradable se siente Objective-C...sin embargo, las plantillas/genéricos serían una adición bienvenida al lenguaje.

Considerándolo todo, mi incursión en el desarrollo de Mac ha sido agradable y estoy emocionado de empezar a trabajar (¡hoy mismo!¡sí!) en algunos proyectos reales de mac/iphone.

Otros consejos

Estoy de acuerdo con sus sentimientos.Pasar de las herramientas de desarrollo de Microsoft (y eclipse) a XCode es un poco duro.XCode simplemente se siente...inacabado en algunos aspectos.Ciertamente no tiene el brillo que espero de VS y Eclipse.

El SDK es similar, gran parte de él está mal documentado y hay muchos agujeros en los que sabes que algo debería estar, pero simplemente no lo es.Intentar controlar cuidadosamente la reproducción de archivos de audio/vídeo es un ejemplo.

Objective-C, sin embargo, es genial.Realmente me gusta el lenguaje, a pesar de sus peculiaridades e idiosincrasias (¿los mensajes nulos no son una excepción en tiempo de ejecución?¿En serio?) Una vez que tus ojos de C++ se acostumbran a la sintaxis, los mensajes anónimos escritos libremente terminan siendo muy divertidos para jugar (aunque algo peligrosos y propensos a RTE).

Tengo muchas ganas de lanzarme y empezar a desarrollar aplicaciones para iPhone también.Hice un poco de desarrollo para Motorola, Blackberry y Windows Mobile, los cuales fueron interesantes y fáciles de abordar con buena documentación, SDK de fácil acceso e instalación.Hasta ahora, creo que Apple está siendo un poco elitista en el hecho de que parece que su entorno de desarrollo sólo está disponible en una Mac.Tampoco me gustan mucho sus conceptos de licencia.Si realmente desea poder publicar aplicaciones, debe revisarlas y ellos tienen la última palabra sobre si puede o no o si se considera que su aplicación es aceptable para ejecutarse en su producto superior.Creo que están haciendo que sea más difícil para la comunidad de código abierto mantener y producir aplicaciones o para que el neófito del iPhone, como yo, incluso comience a escribir aplicaciones para los productos.Se dicen muchas cosas malas sobre Microsoft, pero debo decir que lanzan sus API y SDK mucho antes de que sus productos lleguen al mercado y realmente alientan a los programadores de todos los niveles a profundizar y participar en la escritura de aplicaciones para sus marcos y sistemas operativos.

He trabajado en algunas pequeñas aplicaciones para iPhone y me sorprende que no incluyan los componentes del marco que permiten a los desarrolladores acceder fácilmente a los servicios web SOAP.¿Alguien más que trabaja en un entorno de TI empresarial siente el dolor?

Personalmente creo que la documentación es muy buena en este punto.En cualquier clase de Objective C, puede hacer doble clic en la opción para abrir la documentación de ese término y si hay algún proyecto de ejemplo que utilice esa clase en particular que figura en la lista (al menos para muchas clases específicas de iPhone).

También considere activar Research Assistant cuando esté comenzando y active Code Sense (no crea que está activado de forma predeterminada).La combinación de XCode + Interface Builder es bastante poderosa cuando te acostumbras y, francamente, en algunas décadas nunca he usado un mejor creador de interfaces en términos de cómo funciona la integración con el código o la capacidad de diseñar interfaces que cambian de tamaño inteligentemente sin un montón de trabajo extra.

Soy nuevo en la programación de iPhone y también en XCode, después de muchos años de programación para muchas plataformas y mi impresión es bastante cercana a la tuya (con algunas diferencias):

  • Mac OS X:Cambié de Windows hace aproximadamente 2 años (como experimento) y me quedé :) - No creo que vuelva a cambiar.Tener una base Unix es genial y me encanta la llamativa GUI + Me gusta la simplicidad básica de la interfaz.Me tomó alrededor de 2 meses acostumbrarme, pero no me imagino volver atrás.Sin embargo, odio la distribución del teclado de la MacBook y algunas de las limitaciones del teclado de OSX.Es curioso cómo una empresa que está tan orgullosa de sus conocimientos sobre usabilidad puede tomar una serie de decisiones tan pésimas.Quizás los mejores ejemplos sean no tener un método abreviado de teclado en el menú contextual (clic derecho) y el hecho de que necesita dos teclas para realizar tareas como Inicio, Fin, Re Pág, etc.Mi principal consejo es dedicar tiempo a aprender tantos atajos de teclado como sea posible.También recomiendo instalar y usar las siguientes aplicaciones de terceros que mejoraron sustancialmente mi experiencia con Mac: Azogue, Buscador de ruta, 1contraseña, Cosas, Mate de texto, Texto Wrangler & Transmitir.

  • Código X:Estoy totalmente de acuerdo contigo.Creo que XCode es bastante primitivo.Lo comparo con IntelliJ IDEA con el que trabajo mucho y parece que Apple está estancado hace al menos 7 años:

    • La navegación del código es tan primitiva con demasiadas ventanas rebotando.
    • tienes que usar el mouse todo el tiempo
    • La creación de plantillas es muy limitada y se basa en conceptos macro ingenuos sin relación con el contexto o el alcance.
    • la refactorización se limita a unas pocas acciones simples
    • ni siquiera puedes realizar fácilmente tareas triviales como anular un método
    • Code Sense es bueno, pero podría haber sido mucho mejor si entendiera escribir...

    La gran ironía es que los desarrolladores serios de Mac Ni siquiera entiendo que tienen un problema....Están tan acostumbrados al lío con el que tienen que lidiar que no pueden imaginar un mundo mejor...En lugar de ayudarte, XCode sigue interponiéndose en tu camino.Se me ocurren docenas de ejemplos sobre cómo este entorno apesta, en comparación con los IDE de Java modernos (Eclipse, IntelliJ), pero creo que es una pérdida de tiempo: parece que Apple está demasiado orgulloso para aprender de los demás...lo cual es gracioso si consideramos el hecho de que los inventores de Java no tuvieron reparos en aprender de Objective-C.Mi único consejo (para mí también) es respirar profundamente cada vez que abras XCode y aprender todo lo posible de los expertos que están más acostumbrados a este entorno.

  • SDK de iPhone:es incluso peor que eso: consideramos trasladar nuestra aplicación móvil al iPhone hace un par de meses, pero decidimos no molestarnos porque nos preocupaba que Apple pudiera rechazarlo de la tienda de aplicaciones y no puedes saberlo de antemano (han rechazado una aplicación algo similar en el pasado debido a que está demasiado cerca de iTunes!)

  • Objeto-C:Encuentro Objective-C bastante agradable y después de unos días te acostumbras a la sintaxis de mensajería incómoda, pero extraño la recolección de basura...Tener que lidiar con asignaciones y lanzamientos de memoria se siente un poco como retroceder en el tiempo hasta mis primeros días de C/C++.Recién estoy empezando a aprender los matices de este idioma, pero hasta ahora me gusta lo que encontré.Hay bastantes consejos repartidos por la web sobre las mejores prácticas de Obj-C que no puede encontrar en los documentos oficiales y aprendí mucho de ellos (consulte, por ejemplo, la siguiente discusión aquí en stackoverflow)

También tengo experiencia en C# y he estado trabajando con el SDK de iPhone desde la versión beta 2.Estoy totalmente de acuerdo con cranley en que VS es un poco torpe en comparación con Xcode.Xcode es MUY diferente y totalmente extraño cuando empiezas a usarlo.También lo fue VS en el pasado.Una vez que superas la curva de aprendizaje, es una experiencia maravillosa.Las aplicaciones que estoy desarrollando usan el lado del servidor C# (servicio web) y odio absolutamente tener que cambiar a VS para escribir el código del servicio web desde Xcode.Obj-C también es bastante divertido de usar una vez que aprendes cómo funciona mejor:delegados (muy diferentes a los delegados de .NET), mensajes, categorías y todas las demás rarezas presentes.

Hice algo de programación Java y Flex antes de .NET y siempre odié los documentos .NET en comparación con los documentos Java.Simplemente no son suficientes.Personalmente, he encontrado que los documentos y el sistema de búsqueda de Xcodes son sorprendentes.Hay innumerables guías en PDF vinculadas desde los documentos que tienen toneladas de código de muestra.Piensa sobre esto:El SDK de iPhone ha estado fuera de la versión beta durante aproximadamente 2 meses.Los documentos muestran un nivel de madurez de muchos años.Y sí, es porque Obj-C existe desde hace más de un año y los marcos son similares.

En general, el mayor problema que he encontrado es que hay MUCHOS desarrolladores de .NET subiéndose al carro del iPhone e intentando usar Obj-C como si fuera C# o VB.No pueden leer los documentos básicos de Obj-C y mucho menos los documentos del iPhone y luego se frustran mucho y finalmente fallan.Los foros de discusión están llenos de este escenario.La programación del iPhone no es fácil.Aprender un nuevo idioma no es fácil.Se necesita tiempo y muchos intentos, fracasos e intentos.No es .NET, así que pierda esa mentalidad incluso antes de comenzar y las cosas serán maravillosas.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top