Se devi ricostruire Pandora da zero, quale stack tecnologico sceglieresti? [chiuso]

6

Requisiti:

  • molte esperienze utente diverse: sito web, dispositivi mobili, ecc.
  • gestione utenti, registrazione, ruoli
  • una grande quantità di metadati musicali
  • ricerca del genoma che trova la musica più vicina
  • API RESTful pubblica e privata per tutte le funzioni
  • massiccia scala di servizio lato server
posta dblock 29.12.2010 - 03:32
fonte

5 risposte

13

Codice di codici di Amazon è scritto in C ++. Google sta usando C ++, Python, Java. La rete di overflow dello stack sta usando .Net. Wikipedia sta usando PHP. Facebook era abituato a lavorare con PHP, ora hanno lanciato la propria lingua.

Il grande software non riguarda la tecnologia, riguarda le persone. Devi scegliere lo strumento adatto al tuo gruppo di lavoro (perché Pandora non è un progetto solista, dovrai almeno due persone per aiutarti).

    
risposta data 29.12.2010 - 15:05
fonte
2

La prima cosa che hai elencato è la più importante: "molte diverse esperienze utente: sito web, mobile, ecc." Questo suggerisce che vorrai supportare stack di tecnologia multipli (iPhone, Android, Web, ecc.). Dato che questo è il caso, ti consigliamo di scrivere cose che possano facilmente interagire tra loro attraverso standard ben compresi. Prendi in considerazione tecnologie architettoniche come REST e prova a separare in modo ottimale il tuo storage back-end dalla tua macchina di elaborazione, dai tuoi server Web front-end e dai dispositivi mobili.

Esamina le piattaforme per scoprire quali sono le tecnologie migliori su di esse, quindi scegli quelle in cui hai più flessibilità (come i server web) in seguito. Infine, considera la scala del tuo progetto. Alcune lingue ti faranno risparmiare tempo nella scrittura e nel debug, ma ti uccideranno in termini di prestazioni, specialmente per progetti su larga scala. Puoi trovare molte storie su come la distribuzione su larga scala di Python e Ruby on Rails abbia avuto prestazioni schiaccianti.

    
risposta data 31.12.2010 - 23:35
fonte
1

Sono un ragazzo di Java. Vorrei scegliere Java.

In che cosa inserisci il codice? Quale linguaggio ti rende più produttivo?

Java è eccezionale perché:

  • Ci sono molti sviluppatori con grandi capacità Java
  • Gli strumenti Java sono per lo più gratuiti e qualità fantastica
  • La sua piattaforma incrociata. Linux è economico per i server (e avrete bisogno di molti server). Java funziona molto bene su Linux, ma puoi svilupparlo su Windows, Linux, OSX ecc.
  • Puoi integrarlo con praticamente tutto, REST, database, NOSQL ecc.
  • La JVM è una delle meraviglie moderne del mondo. Hotspot è sorprendente nel tuning code e affronta lingue alternative, Groovy, Scala, Clojure ecc.
  • Spring ha ottime librerie per aiutarti a gestire gli aspetti relativi alla sicurezza e ai social network
  • Ho menzionato gli strumenti;)
risposta data 29.12.2010 - 19:01
fonte
1

Guido van Rossum è che scrive sulla storia di Python . Mi ha colpito il fatto che dietro Python e altri linguaggi di programmazione su cui van Rossum ha lavorato era l'intenzione di avere un linguaggio personalizzato per il problema in questione. Certo, lavorava per un istituto di ricerca con una vasta esperienza nella progettazione e nella compilazione di linguaggi di programmazione.

Dopo aver letto la maggior parte del blog, sono tornato al compito in questione, che aggiunge alcune nuove funzionalità a un programma che ho iniziato a scrivere più di dieci anni fa. Essendo stato lontano dal codice per un lungo periodo, ho dovuto studiarlo per sapere come affrontare al meglio il nuovo compito, ed ecco! La maggior parte di ciò che fa il nucleo del codice è di aggirare la rigidità di Delphi Pascal per creare un ambiente in cui estensibilità, ereditarietà degli attributi e annullamento illimitato sia facile da fare! Ho creato il mio linguaggio di programmazione simile a Python senza sapere che lo stavo facendo. Con il senno di poi (tutto è più chiaro con il senno di poi), sarebbe stato meglio incorporare Python nel nucleo, oppure andare avanti e implementare un linguaggio personalizzato.

Ma quello era allora. Oggi, le lingue tradizionali hanno un'enorme quantità di supporto da tutti i tipi di librerie e strumenti di alta qualità, qualcosa di molto difficile da avere con la tua lingua.

La storia raccontata, il mio suggerimento è di usare Python per questi motivi pragmatici:

  1. La lingua è piacevole e comoda da programmare. La curva di apprendimento è delicata e non interferisce con i linguaggi aziendali / burocratici / di comitato (scusate Java e C ++).
  2. Se non riesci a trovare ciò che ti serve nelle librerie standard o di terze parti, probabilmente non lo vuoi.
  3. Python semplifica il ricorso a un altro linguaggio di programmazione quando decidi che è ciò di cui hai bisogno.
  4. Python è una base straordinaria per creare un linguaggio specifico del dominio (cioè la tua lingua) senza rinunciare a strumenti e librerie moderne (dai un'occhiata a ciò che Pyparsing ha dimostrato essere possibile in Python) .
risposta data 04.01.2011 - 23:03
fonte
1

Per una massiccia scalabilità e una buona concorrenza guarderei ad Erlang. È un linguaggio funzionale che è stato costruito per il biz Telecom in cui la tolleranza ai guasti è un obiettivo importante.

Usando un linguaggio funzionale come Erlang puoi anche dimenticare circa il 95% dei problemi di concorrenza che possono verificarsi in java.

    
risposta data 14.02.2011 - 11:28
fonte