Quale linguaggio di backend dovrei scegliere di imparare: Python, PHP o Ruby per sviluppare applicazioni mobili per i social media come Twitter?
Non sceglierei nessuno di questi linguaggi per questo scopo. Quando le persone scrivono messaggi si vuole aggiornare la loro UI di conseguenza. Quindi se seguite qualcuno e questa persona scrive qualcosa, ricevete una notifica che c'è un nuovo contenuto disponibile. Per questo scopo avete bisogno dei websockets. Sì, Rails 5 ha i websockets a bordo, ma dubito che Ruby sia abbastanza veloce per gestire una quantità maggiore di questi websockets. Anche PHP non è di gran lunga la mia prima scelta. Il linguaggio non è molto moderno. Se avete bisogno di configurare la vostra homepage, va bene, ma per qualsiasi altro scopo non lo prenderei nemmeno in considerazione. Per quanto riguarda Python non ho molta esperienza, ma Python si comporta più o meno come Ruby, quindi ci sono gli stessi svantaggi che ti aspettano.
Suggerisco di guardare uno di questi linguaggi più moderni:
- Elixir -> Basato sull'ecosistema Erlang (Erlang è il linguaggio in cui è stato scritto WhapsApp). La sintassi è abbastanza simile a quella di Ruby e molti sviluppatori di Ruby attualmente passano a Elixir poiché mantiene i vantaggi di Ruby senza averne gli svantaggi. Ed è uno dei linguaggi più scalabili che conosco. Caratteristiche speciali: i supervisori riavviano automaticamente gli attori in caso di guasto, il che si traduce in tolleranza ai guasti; scalabilità dovuta al sistema degli attori. Linguaggio molto pragmatico. Ti permette di fare le cose molto velocemente
- Scala -> Un altro linguaggio che ha la possibilità di usare il modello ad attori. A parte questo, con alcuni ulteriori strumenti (come Kafka e Akka Stream) si ottiene un'arma potente che è molto scalabile e anche tollerante ai guasti (forse non come Elixir, ma meglio di molti altri linguaggi): Meno pragmatico. Scala sembra a volte un po' accademico.
- Go -> Molto diverso dagli altri linguaggi poiché segue un paradigma diverso ma ha anche aspetti funzionali. Qualcosa come Twitter potrebbe essere realizzato utilizzando il sistema di canali e le funzioni di Go. Questo rende Go molto scalabile almeno su un singolo server. Quando si usano più server c'è un po' più da fare che con Scala o Elixir, ma anche questo sarà possibile. Il vantaggio di questo linguaggio è che è molto facile e semplice da imparare. Ma gli manca la caratteristica della tolleranza ai guasti. Questo deve essere ottenuto con strumenti di monitoraggio.
- Clojure -> Come Scala un linguaggio JVM basato sulla sintassi LISP. L'immutabilità è il default come in Elixir che rende il codice più robusto. Non so se ha un sistema di supervisione (è vostro compito scoprirlo), ma Clojure vi offrirà tutti gli strumenti di cui avete bisogno per creare una tale applicazione. I processi asincroni possono essere generati facilmente e sono molto più leggeri che in Java. Clojure potrebbe essere il linguaggio più semplice di questi quattro linguaggi. Anche se la sintassi sembra completamente diversa all'inizio, imparerete ad amarlo.
Una cosa da tenere a mente: Twitter è stato scritto in Scala, WhatsApp in Erlang (Elixir è una variante più moderna di Erlang). Il mio preferito sarebbe Elixir, ma questi due strumenti hanno già dimostrato di funzionare per questo scopo.
Articoli simili
- Quali elementi compongono un server backend quando si parla di un server backend che servirà un'API costruita sullo standard REST?
- Quale linguaggio di programmazione backend è il migliore da imparare nel 2019 e perché?
- Pensi che ci sarà una piattaforma di social media che può rivaleggiare con applicazioni come Twitter, Facebook, Instagram, ecc?
- Se voglio sviluppare applicazioni per Android e iOS, quale linguaggio di programmazione dovrei imparare?