¿Es mas fácil programar para iOS o para Android? [Opinión]

Realizar aplicaciones es lo mismo que aprender a montar en bicicleta. En un principio el aprendizaje es duro y lento. Hay que persistir y luchar al igual que todo en la vida. Una vez ya se tienen las bases y se entiende como es el entorno, el aprendizaje se vuelve algo continuo, autodidacta y sencillo. No voy a negarles que existen quienes tendrán facilidad y quienes encontraran mas dificultades para desarrollar aplicaciones. Sin embargo sin acudir a ningún filosofo, con esfuerzo todo se logra. Las dos principales plataformas móviles ofrecen un gran medio para involucrarse en estas por medio del desarrollo de aplicaciones móviles para la plataforma. Les relatare mis opiniones trabajando sobre ambas plataformas.

Durante los últimos 4 años he desarrollado aplicaciones para iOS. Desde que salió el iPod Touch de 1ra generación, vi una oportunidad enorme para crecer. Me enloquecí con el tema y en un principio sin conocer en que me estaba metiendo y sin experiencia alguna logre arrancar a tropiezos pero arrancar finalmente. Debo admitir que de principio a fin he sido un fanático de la manera en que Apple realiza sus trabajos. La principal critica es su falta de libertad ante el sistema operativo. Sin embargo cuando se mira desde la perspectiva del desarrollador les puedo decir con total confianza que es de las mejores cosas que tiene iOS. El paquete de desarrollo sobre el cual se programa esta tan bien montado que es prácticamente imposible encontrar puntos de quiebre ante los cuales equivocarnos.

El lenguaje principal sobre el que se trabaja es Objective-C (Lenguaje orientado a objetos). El Xcode es el entorno de programación, y sus derivados son el simulador e instruments entre otros. El programa parece intimidante a primera vista pero es muy agradable cuando se usa. Tiene tal cantidad de facilidades que es realmente muy sencillo hacer cambios sobre los aspectos que queramos. Su interfaz gráfica es agradable y su facilidad de uso es realmente de admirar. El lenguaje como tal, es robusto y a la vez muy expresivo. Una vez se entiende la dinámica se vuelve bastante agradable trabajar con el y su versatilidad se demuestra con la calidad de aplicaciones en el App Store. Por el lado negativo existen realmente pocas cosas que contar. La principal es su poco mercado. Y con esto me refiero a que este lenguaje es adoptado únicamente por la marca de la manzana. Sin embargo considerando la gran cantidad de dispositivos que vende Apple dudo mucho que esto sea un problema para alguien. El otro lado de la balanza nos muestra su nivel de complejidad. Al estar basado en C y C++, quienes conozcan estos lenguajes tendrán facilidad para aprender Obj-C. A su vez quienes conozcan Lenguajes Orientados a Objetos poseerán mas facilidad en ciertas áreas. Digo ciertas debido a que la sintaxis cambia bastante en todos sus sentidos pero la idea de fondo es la misma.

El caso de Android es un poco mas complejo. Como toda plataforma reconocida abierta, su segmentación es uno de los muchos problemas difíciles de solucionar. Android posee muchas versiones y dado que cada empresa puede modificar el sistema operativo a su gusto, el desarrollar para esta plataforma requiere un poco mas de tiempo y un poco mas de ingenio en muchas cuestiones. Los ingenieros de Google una vez adquirieron Android se pusieron a trabajar en conjunto para desarrollar el SDK mas estable posible. Para esto se escogió utilizar la plataforma de desarrollo de Eclipse. Esta herramienta es famosa dentro del mundo de la programación y es conocida por su gran versatilidad y su facilidad de uso. Es multiplataforma (a diferencia del Xcode que es único para mac) y permite manejar bastantes lenguajes de programación. La estructura principal de Android es JAVA, y su ADT (Android Developer Tools) cuenta con una versión modificada de eclipse, y simuladores dedicados para múltiples versiones de celulares ambientados con este sistema operativo móvil.

A su vez se trabaja con diferentes tipos de archivos de manera frecuente. No solo hablamos de JAVA sino también un manejo extenso de XML y sus derivados. Entre sus aspectos positivos se encuentra sobretodo la capacidad de poder desarrollar aplicaciones para múltiples móviles con una gran facilidad para acceder al sistema. No es cerrado y por consiguiente no existe una gran cantidad de restricciones en cuanto a manejo del celular se refiere. Por el lado negativo se encuentra el tener que realizar mucho mas código, tener que descartar diferentes móviles debido a temas de rendimiento y configuraciones, la segmentación del mercado y sobretodo lo inestable que es trabajar con el simulador de Android. En esto ultimo deseo hacer énfasis y es debido a lo complicado que es trabajar con un simulador que no solo toma años en cargar sino que también genera errores que en un dispositivo real no encontraremos nunca. Si hay algo en lo que Google debe trabajar es en otorgar una manera mas estable y confiable de poder probar los desarrollos sin necesidad de un dispositivo real conectado al computador.

Aun cuando cada quien tenga su propia opinión, por el momento la mía es que iOS le lleva bastante ventaja a Google en términos de estabilidad y facilidades de desarrollo. Sin embargo el que Android permita adentrarse mas en el sistema es algo que llamara la atención de mas de uno. Sin mas ni menos espero sus comentarios al respecto