¿Qué lenguaje de programación debo aprender para comenzar a codificar una aplicación como Instagram o WhatsApp?

Esto sonará controvertido, pero creo que los lenguajes de programación son irrelevantes para cualquier tarea de programación.

La clave es hacer las cosas rápidamente y luego poder iterar en su aplicación en función de los comentarios de sus usuarios. Por lo tanto, elija cualquier idioma que haga el trabajo, sea súper bueno y eficiente en él, y no salte al próximo nuevo lenguaje brillante.

También daría el mismo consejo para los marcos. Elija uno decente, manténgalo y aprenda sus limitaciones. De hecho, lleva tiempo aprender las limitaciones de un marco y cómo sortearlas, así que no cambie los marcos a menos que desee aprender nuevas limitaciones y perder un tiempo precioso.

Aquí está mi ejemplo personal. Hace unos años, comenzamos a trabajar en una plataforma llamada Minsh para crear aplicaciones de mensajería dedicadas para grupos. Elegimos Cordova y Angular como tecnologías de front-end. Esa fue la mejor opción en ese momento. Tomó algunos esfuerzos serios para aprender sus limitaciones y encontrar formas de solucionarlas. Recientemente, aparecieron nuevas tecnologías como ReactNative o NativeScript. Se ven geniales y brillantes. Sin embargo, puede estar seguro de que algunas de sus limitaciones están ocultas. Como nos hemos vuelto súper eficientes y productivos con nuestras elecciones anteriores, no sirve de nada cambiar. Además, ninguno de nuestros clientes nos preguntó qué lenguaje de programación usamos.

Aquí hay otro ejemplo. ¿Sabías que el súper exitoso juego de Minecraft está escrito en Java? Esta es una opción muy sorprendente, pero a ninguno de sus usuarios les importa. El autor del juego eligió este lenguaje porque simplemente se sintió más productivo con él. Este es el ejemplo perfecto de lo que es posible lograr cuando dominas tus herramientas.

Elija un lenguaje de programación decente, manténgalo durante años y podrá crear lo que se le ocurra.

Para comenzar rápidamente a crear su aplicación, puede aprender C # que le permitirá construir el lado del cliente y el lado del servidor de su aplicación.

  1. Con Xamarin , puede construir de forma nativa su aplicación móvil iOS , Android y Windows en C # sin tener que aprender diferentes lenguajes de programación para cada plataforma separada (Java para Android y Objective-c / Swift para iOS). Asumiendo que está comenzando su proyecto solo o con un equipo relativamente pequeño, esto le permitirá crear una aplicación móvil nativa en las principales plataformas actualmente en el mercado sin tener que preocuparse por aprender varios idiomas para cada plataforma. También puede tener un equipo que mantenga su código para cada plataforma, en lugar de tener diferentes equipos que mantengan el código para diferentes idiomas.
  2. Puede usar la API web o WCF para comunicarse con su back-end para enviar y recuperar mensajes. Ambas tecnologías, dependiendo de si desea usar REST o SOAP, pueden usar C #.
  3. Puede usar cualquier tecnología de base de datos para almacenar sus datos; base de datos relacional (SQL Server, MySQL, Oracle, etc.) o NoSQL. Con Entity Framework Code First, puede crear su diseño de base de datos (para bases de datos relacionales no seguras sobre NoSQL) en su código C #.
  4. Finalmente, puede alojar su solución en Microsoft Azure y escalar según sea necesario.

El mensaje principal es centrarse en un idioma que le permitirá cumplir todos los requisitos principales para su aplicación sin comprometer la calidad. Con C #, puede construir su lado del cliente de forma nativa para todas las plataformas principales (Android, iOS y Windows) y también construir su back-end en el mismo idioma.

Este enfoque garantiza que no necesite dominar diferentes idiomas cuando ejecute inicialmente su idea; ahorrando así mucho tiempo para garantizar que alcance sus objetivos lo antes posible y también reduce su costo inicial ya que puede comenzar por sí mismo y hacer crecer lentamente su equipo sin la necesidad de tener diferentes profesionales especializados para diferentes funciones.

Tenga en cuenta que algunas de las herramientas mencionadas anteriormente son herramientas pagas. Aunque son ediciones comunitarias para algunos de ellos. Por lo tanto, asegúrese de incorporar los costos en su plan de negocios y realizar un análisis integral de costo-beneficio antes de continuar con el enfoque.

Espero que esto te ayude a comenzar con tu idea.

Choque de clanes resulta ser un videojuego de estrategia que se ejecuta en sus dispositivos Android e iOS, por lo que si desea un lenguaje de programación para crear un género similar de juegos o cualquier cosa que se ejecute en un teléfono inteligente Android o iOs, necesitará lo siguiente:

  1. Lenguaje de programación Java y Android : para construir cualquier aplicación o juego de Android, primero comienza a aprender Java, que es el idioma en el que están escritas las aplicaciones de Android. Si bien es cierto que hay muchas capas en las que se escribe la pila de Android, Java es la parte que los desarrolladores usan para comunicarse con el sistema operativo, crear GUI y hacer llamadas RESTFul API a servidores de back-end. También necesita un buen conocimiento de XML, que será útil cuando comience a diseñar páginas en Android.
  2. Objetivo-C o Swift : La comunidad de iOS usa swift para crear aplicaciones y juegos para iPhone. Si bien no estoy seguro de cómo se ve Swift, sé que Objective-C es un hermano del lenguaje de programación C que Apple creó para ayudar a los desarrolladores a crear aplicaciones en su plataforma. Se requiere un conocimiento de C ya que tienes que lidiar con cosas como punteros. Swift ha desplazado a Objective-c, por lo que deberías comprobarlo.
  3. Xamarin : utiliza el lenguaje de programación C # para crear aplicaciones nativas de Android iOS y Windows. Por lo tanto, se necesita un conocimiento de C #

Actualización : como señaló Daniel Super, deberías echar un vistazo a los motores de juego, la mayoría de los juegos se hacen usando motores de juego escritos en lenguajes de bajo nivel como C ++

Sigue pirateando …

El servidor de Instagram está completamente escrito en Python y usa Django como su marco web. Puede aprender Python y sus marcos RESTFUL como Django y Flask para desarrollar servidores para aplicaciones de redes sociales como Instagram y Quora.

Whatsapp maneja más tráfico en tiempo real que cualquier aplicación de redes sociales. Está escrito en Erlang y PHP. Erlang puede ser un poco difícil de aprender si recién comienza a codificar.

Node.js: una base de código único para aplicaciones web en tiempo real.

Node.js (escrito en C ++) le permite escribir JavaScript tanto en el servidor como en el cliente, lo que facilita el envío de datos entre el servidor y el cliente para sincronizar los datos automáticamente. Meteor.js, un marco de aplicación web creado sobre Node.js ejecuta la misma base de código tanto en el cliente como en el servidor. Los cambios de datos en el servidor se reflejan inmediatamente en el cliente y la página web que muestra estos datos se actualiza automáticamente. React.js, una biblioteca JS del lado del cliente para implementar interfaces de usuario rápidas también puede renderizar en un servidor Node.js.

Las bibliotecas JS de código abierto mencionadas anteriormente tienen un nivel bastante alto y si confía en ellas lo suficiente como para ejecutar su lógica de negocios, confíe fielmente en sus desempeños (es poco lo que puede hacer con el ajuste del rendimiento si no conoce un nivel bajo lenguaje como C ++) y luego digo que aprendes JavaScript.

Publicación que recomendaría aprender:

Python , solo para ampliar tu horizonte y ¡oye! Independientemente de lo que digan, Python es un lenguaje bastante poderoso e impresionante para ser su carrera de codificación.

Cualquier lenguaje de bajo nivel como C, C ++ o Java (si realmente le importa un comino el rendimiento de su aplicación).

Para aplicaciones móviles:

Navegador : JavaScript (Angular, React, Meteor, Backbone, Ember)

Android : Java. También puedes usar C ++.

iOS : rápido

Si bien las respuestas que le dicen que ignore los idiomas hacen algunos buenos puntos, olvidan que es casi imposible comenzar a aprender estas cosas sin sumergirse en los lenguajes de programación reales. Todos comienzan con idiomas, y hay una buena razón para eso.

Aquí hay algunas posibilidades prácticas que le permitirían crear una aplicación con características similares a WhatsApp, por el momento ignorando la magnitud del backend de estas aplicaciones:

-Aprende javascript y Meteor. Meteor es un marco autónomo que le dará a su aplicación una sensación en tiempo real, haciendo mucho trabajo duro por usted. Javascript es un lenguaje increíblemente valioso para saber en este momento.

-Aprenda Angular, Ionic, Nodejs, y tal vez use StrongLoop o Express. Una vez más, es una pila de JavaScript, y puede crear todo tipo de aplicaciones con ella.

-Aprenda las plataformas de aplicaciones telefónicas tradicionales (Objective C para iOS, Java para Android) y aprenda a escribir servicios de back-end para su aplicación iOS / Android con la que hablar (que puede escribir en prácticamente cualquier idioma, aunque algunos idiomas / marcos sí lo hacen es significativamente más fácil. C #, Java, Python, Ruby, Javascript, PHP: casi todos los 20 idiomas principales se pueden ejecutar en un servidor.

No se trata de aprender un idioma en particular. Los principiantes siempre están obsesionados con los idiomas. Los idiomas no importan.

Lo que necesita aprender para crear una aplicación móvil como Instagram o Whatsapp es cómo implementar una aplicación cliente en el dispositivo móvil y un servicio web de back-end con el que el cliente se comunica. La parte del backend, que se puede escribir básicamente en cualquier lenguaje de programación, no es algo trivial, … especialmente si desea escalar a muchos usuarios. La implementación de un backend implica conocer mucho sobre muchos dominios de ingeniería de software: servidores web, administración de sistemas, programación de bases de datos, ajuste de bases de datos, formatos de transmisión de objetos de datos, equilibrio de carga, interfaz con API de terceros, interfaz con plataformas de nube de terceros, etc.

Si hace esta pregunta, no está listo para pensar en hacerlo. Dado esto, sugeriría aprender a escribir la parte del cliente que se ejecuta en el dispositivo móvil, lo que haría en Objective C / Swift para iOS o Java para Android, y luego usar un BaaS (Backend como servicio) para el backend, como Kinvey o Parse.

El éxito de What’s App es realmente interesante.

En el fondo, es una aplicación de mensajería.

Y no hay nada realmente nuevo sobre las aplicaciones de mensajería.

Ha habido aplicaciones de mensajería desde los albores de internet. Después del correo electrónico, el chat en vivo o el modo de conversación, fue una de las primeras cosas en desarrollarse.

Luego vino ICQ, y aplicaciones como AOL Messenger, chat de Microsoft, Lotus Same Time, Google talk, Skype, Apple lo hicieron dos veces: primero iChat y luego iMessage. De hecho, Microsoft lo ha hecho cuatro veces, al menos, con Messenger, Communicator, Commander, Lync, e incluso compraron Skype.

Cada uno es ligeramente diferente, pero es esencialmente un cliente de chat que se ejecuta en su computadora y un servidor al que se conectan los clientes. Y alguna forma de identificarte a ti mismo. A veces, el servidor es público y cualquiera puede crear una cuenta y conectarse a él. A veces, el servidor es privado, dentro de una organización, y solo las personas autorizadas pueden conectarse para chatear entre ellos. Algunos permiten el chat grupal, mientras que muchos solo permiten uno a uno, pero la tecnología es esencialmente la misma. Skype es probablemente uno de los pocos verdaderamente innovadores desde el punto de vista tecnológico. No usan un servidor central. Es de igual a igual. E hicieron voz y video desde el principio.

Pero WhatsApp fue innovador en términos de la oferta. Con la llegada de los teléfonos inteligentes, se posicionaron como un reemplazo para los mensajes de texto SMS. Y, como tal, solo crearon una aplicación de teléfono (solo iPhone, al principio), no una aplicación de escritorio hasta hace muy poco. No le exigieron que creara una cuenta con un nombre de usuario o correo electrónico. Simplemente usaron su número de teléfono. A diferencia de otras aplicaciones de mensajería, solo puede usar ese número desde un dispositivo. No puede iniciar sesión en varios dispositivos al mismo tiempo. Estas son todas las restricciones. Todo esto hace que la aplicación o el servicio sean menos útiles, no más. Y sin embargo, al hacerlo, al ser lo más simple posible pero no más simple, se convirtieron en un reemplazo perfecto de SMS. Solo necesita saber el número de teléfono de alguien y puede enviarle un mensaje. Sin nombre de usuario o correo electrónico, o buscando por nombre y ubicación. El uso de datos, por los cuales la mayoría de las personas paga una tarifa plana, no cobra tarifas exorbitantes por mensaje. Especialmente cuando se trata de compartir fotos, en comparación con la parodia que es MMS.

Poder crear grupos por invitación es una gran atracción, y la transferencia a Android les permitió estar disponibles en dispositivos de bajo costo, por lo que en realidad es más barato tener un teléfono inteligente y usar WhatsApp que tener un teléfono tonto con SMS.

El punto es que el idioma no importa. De hecho, la tecnología no importa. La propuesta innovadora del cliente es lo que importa.

Asi que. Una vez dicho esto, para crear una aplicación para iPhone, necesitará usar Objective-C o Swift, con Cocoa (muchas personas se obsesionan con el idioma, pero la ventaja real de cualquier idioma está en los marcos y las bibliotecas). Para Android, deberá usar Java.

Para el servidor, podría usar casi cualquier cosa. Twitter y Facebook fueron escritos en Ruby y Python. Muchas aplicaciones empresariales a gran escala se escriben utilizando Java o .Net y C #. node.js es JavaScript y tiene E / S sin bloqueo, lo que puede ser útil para un servidor de aplicaciones de chat. Lo que pasa con el desarrollo del servidor para una aplicación como WhatsApp es que tiene que escalar. En lugar del lenguaje de desarrollo, el factor decisivo debería ser, qué marco le permitirá construir servidores redundantes de un solo propósito a medida que aumenta el volumen

El idioma no importa, elige el que mejor se adapte a tu plataforma.

Personalmente, probablemente vaya a Xamarin (C #) o JavaFX (Java), da mucha capacidad multiplataforma.

Instagram es en realidad un programa muy simple:

  1. Tome una foto, la API de su teléfono lo hará por usted.
  2. Aplica un efecto, dependiendo de lo que elijas, C #, Java, Swift / UIKit, la API podría hacerlo por ti.
  3. Cargue la foto en un servidor, nuevamente, las API HTTP están disponibles en todas las plataformas modernas, lo hará por usted.

Acepte la carga en el servidor, ejecute un servidor como Apache o nginx, y Google cómo aceptar la carga de un archivo POST. Eso es practicamente todo.

Gran pregunta En primer lugar, necesitas aprender tecnologías, no solo un idioma. Debe decidir en qué entorno se ejecutará su aplicación: ¿iOS y / o Android? Estas plataformas utilizan tecnologías y lenguajes completamente diferentes. Cada tecnología viene con su propio conjunto de bibliotecas, que proporcionan una interfaz entre la lógica o su aplicación y dispositivos externos como pantallas, dispositivos de entrada, internet, etc.

Androide

Necesita Android Studio, que puede descargar de forma gratuita, pero requiere una cantidad extremadamente grande de espacio en disco. Entonces puedes programar en Java. Una vez más, no basta con aprender Java, solo necesita aprender IDE y bibliotecas diseñadas por Google para aplicaciones de Android.

iOS

Para iOS, debe aprender la última versión del lenguaje de programación Swift, que actualmente es Swift 3. Si desea escribir una aplicación para iOS, necesita una Mac. Luego puede instalar Xcode desde la tienda de Apple de forma gratuita. Ahora, nuevamente, necesita aprender las bibliotecas IDE (Xcode) y Swift.

Idiomas universales

Existen tecnologías que le permiten crear aplicaciones independientes del dispositivo. Por lo general, no funcionan tan bien como los nativos y tienen muchas limitaciones, pero le permiten desarrollar prototipos más rápido. Por ejemplo, PhoneGap y Xamarin. PhoneGap se basa en tecnologías web y requiere dominio de JavaScript, Angular, html, css, etc. Xamarin se basa en C # y ahora forma parte de Microsoft Visual Studio.

Backend

No olvides que la mayoría de las aplicaciones tienen un backend. En el caso de Facebook o Instagram, el front-end es solo una punta del iceberg. De hecho, diría que es menos que una punta del iceberg. Si va a atender a unos cientos de clientes más o menos, entonces podría usar proveedores en la nube como Amazon Web Services, Microsoft Azure u otros. Creo que incluso Apple usa AWS para almacenar sus datos de clientes. La forma en que usa su fondo depende completamente de cómo diseña su aplicación. Es posible que tenga un backend que realice muchas tareas de procesamiento para encontrar contenido, relacionar usuarios con anunciantes, etc. Facebook usa muchos de estos algoritmos. Alternativamente, puede almacenar datos en Google Firebase si no necesita un procesamiento de datos de fondo extenso y solo necesita almacenar documentos e intercambiar mensajes entre usuarios.

Eso es solo una introducción. Si quieres seguir este camino, debes pasar mucho tiempo estudiando.

Hablaré sobre las tecnologías específicas que necesita aprender, pero aquí está el panorama general.

La mayoría de los servicios de software de hoy en día usan una arquitectura de servidor de cliente ligero.

Esto implica la arquitectura e implementación del cliente (en este caso, la aplicación móvil) y el servidor de fondo que procesará las solicitudes de los clientes.

El enfoque principal de esta arquitectura es que sus clientes se ven bien, pero (Android, iOS, Windows Mobile y aplicaciones web) son bastante tontos y realmente solo solicitan Crear, Recuperar, Actualizar o Destruir información que el servidor cumple en función de aportes apropiados del cliente.

El gran beneficio de esta arquitectura es que toda la lógica de su negocio reside en el lado del servidor, y su código de cliente y servidor está suficientemente separado para ser manejable a largo plazo. Si necesita cambiar alguna lógica de negocios (por ejemplo, agregar una nueva funcionalidad o eliminar una antigua), solo necesita hacer ese cambio una vez, en el lado del servidor y ofrecerlo a múltiples clientes como lo desee.

Otro beneficio es que puede agregar clientes según sea necesario y solo tiene que escribir el código del cliente para cuando decida agregar su aplicación a múltiples plataformas (Android, iOS, Windows Mobile, X_From_The_Future, etc.).

Por lo tanto, para responder a su pregunta, debe ser capaz de manejar esas operaciones CRUD básicas (cuyos detalles dependen de lo que realmente está tratando de hacer) en el lado del servidor.

Existen múltiples tecnologías que puede usar para implementar el lado del servidor. Actualmente estoy usando Node.js para mi aplicación de Android, porque requiere datos en tiempo real y es rápido y fácil de trabajar (al menos por ahora).

Puede evaluar Java, Python, Ruby, JavaScript y sus respectivos marcos como posibles tecnologías de backend e ir desde allí. Esto realmente depende de su experiencia o familiaridad con un idioma.

Sin embargo, no pierdas demasiado tiempo evaluando cuáles usar. Simplemente elige uno y comienza, o nunca llegarás a ningún lado. Por ejemplo, la gente se queja de problemas de escala con Ruby-on-Rails, pero Twitter llegó a más de 100 millones de usuarios antes de que tuvieran estos problemas, por lo que es probable que no enfrente problemas de escala (a menos que su aplicación explote, en cuyo caso, puede contratar personas que resuelven problemas de escala).

En el lado del cliente, Android requiere conocimiento de Java, iOS requiere conocimiento de Objective-C y / o Swift, y Windows Mobile requiere conocimiento de C #.

Para empezar, solo me enfocaría en un cliente, implementaría, probaría y lanzaría su aplicación allí y crearía más clientes más adelante si lo desea.

Cada una de esas plataformas tiene una excelente documentación oficial en sus respectivos sitios web con tutoriales de muestra para crear aplicaciones simples.

Espero que esto sea suficiente para que comiences 🙂

Con antecedentes rápidos, trabajo para una empresa de desarrollo móvil a medida que se especializa en plataformas de mensajería instantánea, he estado trabajando en productos de chat durante más de 4 años.

Voy a responder su pregunta en dos partes, siendo la segunda parte el principal factor contribuyente de la respuesta:

  • ¿Qué lenguaje de programación tengo que aprender?

Puedes elegir aprender muchos idiomas diferentes para programar un chat instantáneo. Si desea lanzar en Apple, tendrá que aprender Objective-C (Swift), lanzar en Android, luego deberá aprender Java, lanzar en la web y luego deberá aprender PHP, etc. Esta parte de la respuesta es vaga como Whatsapp e Instagram tienen aplicaciones en múltiples plataformas. Dependiendo de la escala de su aplicación, también podría aprender XMPP: esto es lo que Whatsapp usó antes de que desarrollaran sus propios backends personalizados.

  • ¿Qué necesito saber para crear una aplicación de chat?

Esta es la parte real de la pregunta y la mayoría de las respuestas anteriores e inferiores ignoran un punto importante. Programar una aplicación de chat es DIFÍCIL . La interfaz de usuario es complicada, el código del servidor es complicado, básicamente para crear un chat necesita tener habilidades de codificación expertas y una muy buena comprensión de cómo funciona un chat. He estado trabajando en el chat por más de 4 años y no creo que pueda codificar uno desde cero en menos de 3 meses.

Es fácil lanzar los lenguajes de programación y decir aprender esto, aprender eso. Incluso si ha aprendido el idioma, crear el chat seguirá siendo la parte más difícil del proceso.

Veo muchas preguntas sobre Quora preguntando cómo desarrollar una aplicación de chat desde cero, crear un chat instantáneo parece ser un derecho de paso para muchos desarrolladores: “Quiero chatear en mi aplicación, así que tendré que crearla yo mismo “ .

La respuesta fácil a su pregunta es esta:

Usted necesita $ 15- $ 30k para pagarle a alguien para que lo codifique o de 3 a 6 meses para trabajar a tiempo completo y codificarlo usted mismo. Si necesita aprender los lenguajes de programación primero, esta vez probablemente sea de más de 1 año.

¿Cómo puedo implementar el chat en mi aplicación?

Si te tomas en serio el desarrollo de una aplicación de chat, esta es la pregunta que debes hacerte. Si fueras a construir una casa, ¿primero harías los ladrillos tú mismo?

Hay muchas plataformas de chat diferentes disponibles en Internet. ChatSDK, Layer, QuickBlox, Pusher, Pubnub, etc. Cada uno de ellos proporcionará una API de chat para agregar rápidamente el chat a su aplicación. Hay muchas ventajas de usar uno de estos:

  • Costo: la mayoría de estas API serán gratuitas. Esto significa que ahorra una gran cantidad de tiempo al no codificar desde cero.
  • Soporte: Ir con un producto significa que tiene soporte completo para ayudarlo cuando se atasca.
  • Documentación: Esto hará que la integración sea más rápida.
  • Calidad: su chat será mucho mejor que su chat, ya que se ha desarrollado durante años. Un mejor chat aumentará la calidad de su aplicación.
  • Idiomas: el uso de una API significa que solo necesitará aprender el idioma de desarrollo de la aplicación y no todos los idiomas del lado del servidor también.

También recomendaría revisar estos componentes de chat de código abierto en Github. Nuestra compañía ha lanzado chats compatibles con iOS y Android en una licencia MIT, lo que significa que puede descargar y usar el código de chat sin obligación para nosotros.

No puedes hacer una aplicación como watsapp aprendiendo un lenguaje de programación. Debe tener experiencia en todo lo que se va a utilizar. No se trata solo de programar. Necesitará una interacción optimizada del servidor cliente y eso también en tiempo real. Debe conocer diferentes protocolos de red y transporte, seguridad, diseño y eso para las 3 plataformas, es decir, Android, iOS y Windows.

Watsapp utiliza el protocolo xmpp para la mensajería en tiempo real y el lenguaje de programación que utilizan es Erlang, que tiene una curva de aprendizaje pronunciada.

Aprender un idioma llevará meses si no tienes ningún conocimiento previo. Si desea construir algo, puede comenzar con Java, ya que es relativamente fácil y puede comenzar a construir aplicaciones básicas en Android. También debe iniciar la base de datos.

Comience con poco, aprenda java, cree algunas aplicaciones básicas y luego pase a aplicaciones más grandes. La mejor de las suertes.

Tecnología para hacer una aplicación como WhatsApp

El lado del servidor de WhatsApp está escrito en lenguaje Erlang , ya que es sostenible y capaz de manejar grandes cantidades de datos. Aunque otros, como PHP o Java , también podrían ser buenas opciones. La funcionalidad de tales aplicaciones de chat se ha puesto a disposición gracias a la tecnología React Native.

La pila tecnológica de WhatsApp también incluye la versión personalizada de XMPP (mensajería extensible y protocolo de presencia). Un número de teléfono para iniciar sesión en la cuenta de usuario, con contraseña aleatoria para el primer inicio de sesión. Luego, la aplicación escanea el libro de contactos y crea una lista de contactos para uso en la aplicación.

Con respecto a otras herramientas y tecnologías:

  • FreeBSD como sistema operativo de la aplicación,
  • Mnesia como la base de datos
  • YAWS como servidor web (también de Erlang)
  • Obective-C / Java / C # para desarrollo nativo

Tenga en cuenta que los desarrolladores también pueden usar otras herramientas que, a su vez, podrían afectar el costo de hacer una aplicación como WhatsApp también.

Si está considerando el precio para ese tipo de trabajo, le sugiero que lea este artículo:

¿Cuánto cuesta hacer una aplicación como WhatsApp?

Personalmente, lo encontré útil, espero que tú también lo hagas.

Buena suerte !

Como muchas de las otras respuestas han dicho, realmente no se trata de qué idiomas usa o qué idioma es el mejor. Si está buscando codificar un clon de WhatsApp o Instagram, deberá trabajar con tecnologías tanto front-end como back-end. Más importante aún, necesitará poder hacer que estos lenguajes / marcos funcionen juntos.

En lugar de centrarse en los idiomas específicos que necesita saber, le recomendaría que se concentre en las habilidades “blandas” que necesita para un proyecto como este (es decir, pensar en un nivel más macro para planificar y ejecutar un proyecto). Para programadores novatos , a menudo hay una brecha entre aprender y conocer un idioma específico y poder dar un paso atrás y ver la imagen más grande del proyecto.

Con este fin, Codementor lanzó recientemente una nueva clase basada en proyectos que lo llevará a construir un clon de WhatsApp (como una aplicación web) usando React. Estas son las tecnologías que se utilizarán:

Front-end: React, Flux, ES6, LocalStorage, HTML5, API, etc.
Back-end: Node.js, Redis y WebSockets, JSON Web Tokens, etc.

Nuestro enfoque para este curso es realmente ayudar a nuestros estudiantes a aprender cómo se usan juntos diferentes idiomas y marcos. Los estudiantes también aprenderán cómo pensar al crear una aplicación en React y cómo implementarla.

Divulgación completa: ¡trabajo en Codementor como Community Manager!

No voy a decir que no hay programación en Choque de clanes, pero apuesto a que ninguno de ellos fue particularmente difícil.

Es probable que haya más esfuerzo en la obra de arte.

Mucho más en el diseño del juego, el equilibrio y la psicología / economía de las micro transacciones (porque, ¡duh, eso es literalmente donde está el dinero!).

Más también entró en el marketing.

Si quieres un gran éxito de taquilla como ese estudia economía y psicología, crea muchos prototipos de juegos de lápiz y papel. Contrata artistas y programadores.

Si ya eres bueno en programación, hazlo en economía y psicología. Contratar artistas. Probablemente contrate más programadores para reducir el tiempo de comercialización.

Si su objetivo final es una aplicación para iPhone, siga este curso: Desarrollo de aplicaciones iOS 7 para iPhone y iPad – Curso gratuito de Stanford en iTunes U (o una versión más reciente). Esto le dará los conceptos básicos de iPhone UX / UI, Objective-C y el entorno de programación básico. Una vez que termine el curso (o mientras lo está tomando), comience a trabajar en la aplicación de inmediato. A medida que avanza, se encontrará con problemas; Busque soluciones en línea. Los algoritmos y las estructuras de datos de los libros de texto son totalmente inútiles en este tipo de aplicación; estos problemas ya están resueltos y ya tiene bibliotecas que pueden hacer estas cosas por usted. Para usar el aprendizaje automático (el tipo de IA del que probablemente estás hablando), necesitas una tonelada de datos, y para tener una tonelada de datos necesitas usuarios, y para tener usuarios necesitas una aplicación que funcione. Entonces es un paso a la vez.

Como sugieren muchas de las respuestas: olvide el idioma (s) … al menos por el momento. Son solo las herramientas que usarías para implementar las cosas que necesitarás para diseñar. No le darán ninguna respuesta, de la misma manera que aprender a usar una sierra eléctrica no le mostrará cómo construir una mesa.

Mucho más importante son los conceptos que necesitará para que esto funcione.

  1. Necesitaría algún tipo de almacenamiento de datos, la mayoría de los cuales tendría que diseñar para utilizar un motor de almacenamiento más generalizado (no intente construir su propio motor, sino que elija uno que se adapte mejor a su situación). Lo más probable es que sea alguna forma de DBMS, ya sea que un mapa relacional (es decir, SQL) o un mapa de valores clave (es decir, NO-SQL) dependa de lo que desea almacenar y de cómo lo consultará. En ambos campamentos hay muchas alternativas: cada una puede influir en al menos algunos de los idiomas que puede utilizar más adelante.
  2. Necesitará algún tipo de servidor de gobierno en el que todas las reglas de su negocio estén “programadas”. Esto interactuará muy estrechamente con el almacenamiento, por lo que se ve muy afectado por él. Sin embargo, también debe poder enviar respuestas puntualmente a las solicitudes de los clientes, por lo que deberá mirar algo que sea óptimo y que sea lo suficientemente económico como para no tener una situación de experiencia de usuario muy lenta o servidores que fallan una vez que su sitio se convierte popular. No significa necesariamente que necesite programar utilizando un nivel extremadamente bajo, en su lugar es posible que desee distribuir la carga de trabajo (es decir, el equilibrio de carga). Aunque esto es muy específico de la situación, ninguna respuesta puede resolverlo. Efectivamente, esta parte constituye una gran parte de muchos dominios de diseño CS diferentes, desde la organización de datos, pasando por el modelado de decisiones, el control de acceso, la seguridad y el cifrado (además de la capa anterior), hasta el rendimiento de la red y la comunicación asíncrona.
  3. Diseño de aplicaciones web / móviles, es decir, los programas “cliente” que ven los datos del servidor. Lo organiza en algo que el usuario verá e interactuará. De nuevo, esto depende de muchos factores … sí HTML + CSS + JS para las páginas web, pero ¿qué marcos, etc., vas a utilizar? ¿Está volviendo a mostrar una nueva página cada vez que el usuario publica alguna entrada (es decir, la forma de más de 10 años) o simplemente va a actualizar la información modificada? Lo mismo ocurre con la aplicación móvil con opciones adicionales en herramientas, bibliotecas de interfaz de usuario, idiomas, etc.

Solo después de que pueda indicar claramente una respuesta cercana a la finalizada para cada uno de ellos, comenzará a buscar idiomas. No antes, de lo contrario su diseño probablemente fallará, en el mejor de los casos estará regido por algunas cosas esotéricas que el conjunto de lenguaje / herramienta que eligió impondrá en su diseño (haciéndolo menos que adecuado en comparación con su visión original).

En primer lugar, Snapchat e Instagram son servicios, lo que significa que crean aplicaciones en los teléfonos, pero también tienen una gran infraestructura, un montón de computadoras, dispositivos de almacenamiento y otros equipos que necesitan para funcionar. La mayor parte de la lógica en la aplicación se ejecuta en una computadora en red.

Por lo tanto, para hacer una aplicación de iOS, debe conocer Swift u Objective C, aunque conocer ambos es una gran ventaja y no un gran paso. Necesita conocer muchos patrones de diseño, subprocesos o programación de múltiples CPU, debe conocer la comunicación de red como el dorso de su mano. Necesitas ser un buen programador. Debes ser bastante bueno con las matemáticas y saber una o dos cosas sobre las imágenes, encontrar objetos en imágenes, como ojos, boca y demás, y filtros, aunque no son difíciles per se, es muy difícil hacer que las nuevas imágenes se vean borrosas y anticuado, así que necesitas saber lo que quieres …

Para crear el cliente Android necesario, necesita conocer Java en lugar de Swift y Objective C, necesita saber todo lo demás que el desarrollador de iOS sabe.

Para hacer el backend, necesita conocer un lenguaje de servidor, como Java, Ruby, Python o PHP, por nombrar algunos. Debe dominar el diseño de la base de datos y tienen sus propios patrones, debe aprender a consultar y acceder a los derechos para que las personas adecuadas puedan ver mis imágenes. Y para escalar a millones de usuarios, debe saber mucho sobre el almacenamiento en caché, los discos ram, los almacenes de valores clave y podría seguir y seguir.

Para hacer un servicio de este tipo, debes saber un montón de cosas. Cuando está comenzando, es bastante fácil imaginarse que está haciendo un nuevo servicio de este tipo. La programación es muy iterativa, es decir, obtienes algo que funciona, luego acumulas detalles y más detalles. Podrías pasar años en cada función. Esta es la razón por la que necesita muchos programadores, ya que tratar de hacer esto solo o en una pequeña fiesta, toma mucho tiempo. Este es un elefante enorme, y solo puedes hacer una cosa muy pequeña todos los días.

No te estoy desanimando, solo dejo salir los hechos.

Comience más pequeño. Crea pequeñas aplicaciones, toneladas de ellas. No tienen que ser lanzados a la tienda de aplicaciones, solo hazlos. Poco a poco ganas confianza y experiencia.

No intentes hacer un elefante como tu primer proyecto. Tomó mucho dinero, trabajo y horas hombre para hacer estos servicios. No son demasiado complicados, solo hay tanto código que necesita hacer.

Crear una aplicación como Whatsapp te llevaría unos meses. Crear una aplicación como Whatsapp que pueda ejecutarse para 100,000,000 de usuarios sin ningún problema le llevará varios años de conocimiento profundo de la informática y los sistemas distribuidos.
Digo años porque cada vez que construyes algo nuevo, descubrirás un nuevo obstáculo. Son los obstáculos (errores) los que te hacen un ingeniero de software perfecto. Falla fuerte y falla rápido.
El lenguaje no requiere muchos cerebros. (Puedes aprender C / C ++ / Java en 48 horas o menos si estás lo suficientemente animado)

No te empapes solo en la parte del idioma. Hay cosas mucho más grandes que eso 🙂 ¡Buena suerte!

Puede usar una gran cantidad de idiomas, probablemente todos buenos y todos malos de muchas maneras.

Sin embargo, hoy comenzaría solo con JavaScript, o mejor aún con TypeScript. Puede usarlo para cosas de back-end con Node.js, en la aplicación con Apache Cordova en todas las plataformas, y obviamente en la web.

Esto significa que probablemente reutilizará algo de código, pero seguramente reutilizará todo el resto: conocimiento, herramientas y cadenas de herramientas, estructura de proyectos, etc., cosas que a menudo, especialmente cuando comienza desde cero en algo totalmente nuevo para usted y están solos, le quitan mucho tiempo … más tiempo que “escribir el código” en cualquier idioma que use.

Coloque una base de datos SQL o NoSql (después de comprender la diferencia), alojada si puede, o elija algo como Firebase; use su IDE favorito, que va desde VSCode, WebStorm o Eclipse (todos son compatibles con Javascript, Typecript, Node.js y la mayoría de las cosas web); use Grunt o Gulp, Npm y Bower, Ionic o Bootstrap … puede encontrar muchas plantillas de proyectos ya hechas en GitHub. Use Elastic Beanstalk para una fácil implementación y escalado.

Actualmente estoy usando esta pila para desarrollar aplicaciones más pequeñas, cuando estoy solo o casi solo trabajando en ellas.

Ir políglota (usando diferentes idiomas / plataformas / pilas que son específicos para una tarea determinada) es muy bueno cuando tienes claras ventajas, pero si estás comenzando con un “espectáculo de un solo hombre”, trata de concentrarte en una pequeña pila que puedas manejar (and master) instead of wasting your energy learning and re-learning the same stuff again on different platforms.

As a side node, WhatsApp can probably be coded by a smart guy in matters of days (if not hours), in any language .. is not the code that makes an app into billions, even less the language you use.