Migrazione da Python a Scala quando un sacco di lavoro è già stato fatto in Python?

6

Io e il mio amico stiamo sviluppando un'applicazione web in Python + Flask + PostgreSQL. Ci stiamo lavorando da qualche mese e abbiamo sviluppato molti schemi / casi d'uso specifici per Python + Flask + PostgreSQL. Ora, all'improvviso, pensiamo di passare a un altro database NoSQL (Neo4j) perché in qualche modo si adatta meglio a quello che sarà il nucleo della nostra web-app. Python supporta Neo4j tramite binding / rest api binding, ma usa una tecnologia JPype, che è piuttosto non mantenuta, per usare il minimo .

Quindi, questa domanda sull'uso di Scala è sorto oggi. La nostra sarà un'applicazione next-to-realtime, quindi non possiamo permetterci di avere il lag / overhead di avere passaggi intermedi delle richieste Python- > Java (il server standalone Neo4j è basato su embedded Neo4j). Quindi, mentre sono favorevole a spendere un mese o due e ad imparare Scala / Lift, è a favore di portare avanti con Python e fare il porting su Scala ogni volta che si presenta la necessità, anche se sappiamo che i collegamenti Python + saranno un po 'più lenti rispetto al supporto nativo di Neo4j per Java.

Negli ultimi mesi, avevamo già lavorato molto su Python + Flask + PostgreSQL. Se portiamo su Scala, avremo bisogno di portarlo tutto su Scala.

Sarebbe saggio port-port? Ci sono esperienze personali o consigli da parte di tutti voi? O è solo un'ottica prematura?

P.S .: Sono consapevole della curva di apprendimento di Scala / Lift.

    
posta c0da 15.03.2012 - 21:10
fonte

2 risposte

5

Ovviamente non otterrai una risposta definitiva qui, perché dipende molto dal tuo caso specifico e, in particolare, da chi sta lavorando al progetto. Non sono sicuro di cosa intendi guadagnare, ma sembra che tu debba buttare via un sacco di lavoro.

Scala è un pò più buzzword-compliant al giorno d'oggi, ma Python non è nemmeno un problema quando si parla di programmazione funzionale. Tuttavia, tutto dipende dalle specifiche del carico di lavoro.

Ricorda solo il consiglio di Knuth sull'ottimizzazione prematura; è un ragazzo piuttosto intelligente. Direi che se hai remoto vicino alla fine, allora non cambiare. È molto più importante ottenere codice funzionante il più rapidamente possibile che "fare bene" la prima volta. Perché semplicemente non sai cosa avresti fatto male fino a quando non potrai testarlo.

Quindi, una volta che sai quali sono i tuoi punti di strozzatura, progetta qualcosa che risponda alle tue reali preoccupazioni.

    
risposta data 16.03.2012 - 08:15
fonte
1

Un'altra opzione, se non usi molte funzionalità di Python 2.6+ potrebbe essere usare Jython . Poiché questo ha come target la stessa JVM di Scala, dovrebbe consentire un'integrazione più stretta e più efficiente.

Forniamo una console Jython all'interno della nostra applicazione Eclipse in modo che gli utenti possano scrivere i propri script che hanno pieno accesso alla potenza del nostro back-end Java. Possiamo usare le classi Jython e Java in modo intercambiabile e spostarci senza interruzioni. Trovo che sia un ambiente davvero flessibile su cui lavorare.

L'unico vero svantaggio è che Jython è bloccato in Python 2.5, quindi le successive innovazioni nella lingua non sono ancora disponibili.

    
risposta data 16.03.2012 - 14:17
fonte

Leggi altre domande sui tag