Que língua backend devo escolher para aprender: Python, PHP, ou Ruby para desenvolver aplicativos de mídias sociais móveis como Twitter?
Eu não escolheria nenhuma destas linguagens para este propósito. Quando as pessoas escrevem mensagens, você vai querer atualizar sua interface de usuário de acordo. Então se você seguir alguém e essa pessoa escrever algo, você receberá uma notificação de que há um novo conteúdo disponível. Para este propósito, você precisa de websockets. Sim, Rails 5 tem websockets a bordo, mas eu duvido que Ruby seja rápido o suficiente para lidar com uma quantidade maior destes websockets. O PHP também não é de longe a minha primeira escolha. A linguagem não é muito moderna. Se você precisa configurar sua página inicial, tudo bem, mas para qualquer outro propósito eu nem mesmo levaria isso em consideração. Em relação ao Python não tenho muita experiência, mas o Python comporta-se como o Ruby, por isso há as mesmas desvantagens à sua espera.
Eu sugeriria que olhasse para uma destas linguagens mais modernas:
- Elixir -> Baseado no Ecosistema Erlang (Erlang é a linguagem em que o WhapsApp foi escrito). A sintaxe é muito parecida com a do Ruby e muitos programadores Ruby actualmente mudam para o Elixir uma vez que mantém as vantagens do Ruby sem ter as desvantagens. E é uma das linguagens mais escaláveis que eu conheço. Características especiais: supervisores reiniciam automaticamente os actores em caso de falha o que resulta em tolerância a falhas; escalabilidade devido ao sistema de actores. Linguagem muito pragmática. Permite que você faça as coisas muito rápido>li>Scala -> Outra linguagem tendo oportunidades de usar o modelo de ator. Além disso, com algumas ferramentas adicionais (como Kafka e Akka Stream) você obtém uma arma poderosa que é muito escalável e também tolerante a falhas (talvez não igualmente ao Elixir, mas melhor que a maioria das outras linguagens): Menos pragmático. Scala parece às vezes um pouco acadêmico.
- Go -> Muito diferente das outras linguagens já que segue um paradigma diferente, mas também tem aspectos funcionais. Algo como o twitter poderia ser alcançado usando o sistema de canais e ir funcs. Isto torna o Go muito escalável pelo menos em um único servidor. Ao usar múltiplos servidores há um pouco mais a fazer do que com Scala ou Elixir, mas também isso será possível. A vantagem dessa linguagem é que ela é muito fácil e simples de aprender. Mas falta-lhe o recurso de tolerância a falhas. Isto precisa ser alcançado com ferramentas de monitoramento.>li>Clojure -> Como Scala uma linguagem JVM baseada na sintaxe LISP. A imutabilidade é o padrão como no Elixir, o que torna o código mais robusto. Eu não sei se ele tem um sistema de supervisão (sua tarefa de descobrir), mas o Clojure irá lhe oferecer todo o ferramental necessário para criar tal aplicação. Processos assíncronos podem ser facilmente reproduzidos e são muito mais leves do que, por exemplo, em Java. Clojure pode ser a linguagem mais simples destas quatro linguagens. Mesmo que a sintaxe pareça completamente diferente no início você aprenderá a amá-la.
Uma coisa a ter em mente: O Twitter foi escrito em Scala, WhatsApp em Erlang (Elixir é uma variante mais moderna do Erlang). O meu favorito seria o Elixir, mas estas duas ferramentas já estão comprovadamente a funcionar para tal fim.
Artigos semelhantes
- Mídias Sociais: O que são algumas aplicações pouco conhecidas de redes sociais com características ou funcionalidades incomuns?
- Que elementos compõem um servidor backend quando se fala de um servidor backend que servirá uma API construída sobre o padrão REST?
- Por que os introvertidos são mais abertos nas mídias sociais?
- O que são algumas das mídias sociais inúteis?