¿Cuál es el mejor idioma para escribir una aplicación móvil?

Asumiré que no eres un programador o un principiante, porque esta no sería una pregunta que alguien con poca experiencia haría. En consecuencia, haré todo lo posible para desglosar las cosas para que comprenda los diferentes componentes de una aplicación móvil y las opciones que tiene.

Como la mayoría de los sitios web modernos, las aplicaciones móviles suelen tener dos partes: un backend y un frontend.

Backend (lado del servidor)

El backend también se denomina “lado del servidor” porque vive en un servidor en algún lugar (en la nube, tal vez). La aplicación móvil se comunica con el servidor para enviar y recuperar datos, como información de cuenta de usuario, mensajes o notificaciones, noticias, tabla de clasificación … básicamente cualquier cosa que sea dinámica (puede cambiar). Estos datos se almacenan en una base de datos y se transportan entre el backend y el frontend a través de API.

A menudo, escuchará a los desarrolladores móviles decir algo como “la API está escrita en Ruby”, lo que significa que la parte del servidor que se comunica con la base de datos Y el lado del cliente (la parte en el dispositivo del usuario) están escritos en ese idioma. Hay varios marcos web (y sus lenguajes asociados) que son adecuados para esta función, incluidos Ruby on Rails, Django, .NET, Spring, Node, etc. La decisión que tome aquí es complicada e incorpora factores tales como qué tan rápido necesita construirse, cuántos usuarios y, simplemente, ¿cuál es la preferencia de su programador?

Además de la API, los backends pueden incluir muchas más partes de trabajo; dependiendo de su complejidad y escala. A medida que un sistema (y el equipo de ingeniería) crece en complejidad, es posible que admita múltiples idiomas para tareas especializadas. Dado que la pregunta es estrictamente sobre cómo escribir una aplicación móvil, no seguiré ese camino. Sin embargo, mencionaré que algunas aplicaciones no necesitan su propio servidor porque tienen contenido estático (contenido que no cambia) o aprovechan los servicios web existentes (API de terceros), como el Game Center de Apple.

Frontend (lado del cliente)

Lo que nos lleva a la aplicación frontend o del lado del cliente. Esta es la parte en la que la mayoría de la gente piensa cuando piensa en crear una aplicación móvil: la aplicación en sí . Decidir en qué idioma escribir el lado del cliente es una decisión mucho más directa, en mi opinión. Con respecto a los lenguajes de programación, su primera tarea es decidir si desea una aplicación “nativa” o una aplicación “híbrida”.

Nativo
Una llamada aplicación nativa está construida para una plataforma específica, ya sea iOS, Android, Windows o Blackberry. Cada plataforma tiene su propio SDK (“kit de desarrollo de software”) que es compatible con uno o dos idiomas. En el caso de Android, las aplicaciones nativas están escritas en Java. Windows admite C # y Visual Basic. Las aplicaciones de iOS han sido tradicionalmente Objective-C, pero ahora admiten el nuevo lenguaje Swift de Apple.

No puedo hablar con plataformas Windows o Blackberry, pero si estás pensando en trabajar en iOS, la elección entre Obj-C y Swift puede ser difícil si eres un principiante. Esto se debe a que habrá muchos recursos (artículos, subprocesos de desbordamiento de pila y bibliotecas) que usan ejemplos de Objective-C. Sin embargo, se supone que Swift es más fácil de aprender. Además de aprender, esta opción también depende de cuánto tiempo atrás desee que su aplicación sea compatible …

Web o híbrido
Hay muchas razones para no desarrollar una aplicación nativa. Por lo general, es muy costoso (en tiempo y / o dinero), especialmente si necesita admitir más de una plataforma. Aquí es donde entra en juego el atractivo de las aplicaciones “híbridas”. Las aplicaciones híbridas se escriben predominantemente con lenguajes web conocidos (HTML, CSS y JavaScript) y se empaquetan como una aplicación con una herramienta especial como Cordova. El marco de trabajo de Cordova permite a las personas que conocen estos idiomas frontend web crear aplicaciones que incluso pueden acceder a las funciones del dispositivo, como la lista de contactos, la cámara, los SMS, etc. La mejor parte es que puede escribir la aplicación del lado del cliente una vez y Cordova hace que funcione en todos los dispositivos

Sin embargo, hay serios inconvenientes para este enfoque. En particular, el impacto que tiene en la experiencia del usuario. Las aplicaciones híbridas tienden a sentirse lentas o no responden a los usuarios, y son una pobre sustitución de una aplicación nativa bien hecha. Además, las interfaces creadas de esta manera ignoran las diferencias en la convención de IU entre plataformas, lo que significa que su aplicación de Android puede parecer “iOS-y” para los usuarios y viceversa.

Hemos experimentado mucho con la creación de aplicaciones híbridas, e incluso hemos aprendido cómo optimizar su rendimiento. Sin embargo, la tecnología todavía se encuentra en un lugar donde tenemos una fuerte preferencia por construir de forma nativa si el presupuesto lo permite.

DO#
Xamarin tiene una excelente infraestructura que le permite desarrollar aplicaciones multiplataforma (todas compiladas en código nativo) para Android, iOS y Windows Phone.
En serio, sé que suena extraño, pero C # es la mejor opción que encontré.

Respuesta no programada: ninguna.

Xcode / Swift / Objective C para iPhone y JAVA para Android. Hay programas que portan código entre los dos, pero creo que aún requieren muchos ajustes.