Domanda

Sono un programmatore esperto C ++ con una conoscenza media Python. Le ragioni che ho studiato Python, in primo luogo sono stati:

  • per ottenere una prospettiva diversa sulla programmazione (statica e dinamica, interpretato vs compilato, ecc.)
  • per aumentare l'ampiezza dei progetti che posso lavorare su (Python mi permette di fare sviluppo web, sviluppare per telefoni Symbian o busso script di amministrazione del sistema rapido)
  • per completare le mie capacità C ++.

Credo che Python è grande e credo che ho raggiunto gli obiettivi di cui sopra. Io continuerò ad usarlo per piccoli progetti, script e sviluppo web.

dubito che posso usarlo per medie e grandi progetti però. Mentre la tipizzazione dinamica è conveniente, permette una certa classe di insetti che trovo inquietante. Unit testing e rilascio di fibre può alleviare questo problema, ma tipizzazione statica elimina completamente.

Dopo aver esaminato alcuni linguaggi di programmazione, penso che alla Scala si presenta come un buon candidato: Mi piace il tipo di inferenza e funziona sulla JVM quindi dovrebbe essere disponibile ovunque la JVM è disponibile. Posso anche imparare di più sulla programmazione funzionale, quando lo si utilizza.

Ma ... ho anche qualche dubbio, e questo è dove spero che la comunità Stack Overflow può aiutare:

  • Portabilità: Linux e Windows, almeno spero. Che dire di telefoni cellulari, è possibile ottenere l'esecuzione lì?
  • compatibilità C ++: posso mescolare il codice C ++ con Scala? (JNI?)
  • Programmazione paradigma: Non mi sento a mio agio con il passaggio alla programmazione funzionale (FP) in questo momento. Posso usare orientato agli oggetti e procedurale con una certa FP in un primo momento e poi cambiare le proporzioni, come ho imparato?
  • Strumento catena di maturità: qual è la tua esperienza con IDE e debugger? Sto usando Eclipse in questo momento e sembra OK.
  • Velocità d'apprendimento: considerare la mia esperienza, quanto velocemente pensi che io possa raggiungere un livello praticabile con Scala
  • Distribuzione: esattamente come si distribuisce un programma di Scala? Si tratta di un vaso, è un eseguibile?

Infine, ciò che pensi che sono alcune delle svantaggi Scalas?

È stato utile?

Soluzione

  • Portabilità: Linux e Windows, almeno spero. Che dire di telefoni cellulari, qualcuno riesce a ottenerlo a correre lì?

Sì. C'è un po 'di movimento in merito a Scala su Android. Per quanto riguarda J2ME, ho visto qualcosa in questo senso, ma non molto. V'è un certo codice di pertinenza J2ME sul repository del codice sorgente. Io non sono sicuro di come praticabile lo è, ma sembra a me che non c'è molta richiesta per questo.

Sarò anche ricordare che v'è / era una piscina in Scala-Lang sulle piattaforme di destinazione desiderate e J2ME era uno di loro, molto basso sul totem.

  • compatibilità C ++: posso mescolare il codice C ++ con Scala? (JNI?)

Così come si può mescolare C ++ con Java, per qualunque cosa che vale la pena. Se non avete alcuna esperienza con questo, si può solo leggere le risorse Java, come qualsiasi cosa in loro sarà applicabile con Scala senza modifiche (a parte sintassi Scala).

  • Programmazione paradigma: Non mi sento a mio agio con il passaggio a FP in questo momento. Posso usare OO e procedurale con una certa FP in un primo momento e quindi modificare le proporzioni, come ho imparato?

Sicuramente, sì. Scala va fuori di esso di modo per assicurarsi che non è necessario programmare in uno stile funzionale. Questa è la critica principale di Scala da gente funzionali, come un dato di fatto:. Alcuni non considerano un linguaggio funzionale a meno che non costringe il programmatore di scrivere in stile funzionale

In ogni caso, si può andare a destra a fare cose a modo tuo. La mia scommessa, però, è che si prende in mano le abitudini funzionali senza nemmeno rendersene conto sono funzionali.

Forse si può guardare il matrici serie nel mio blog a scrivere un classe Matrix. Anche se sembra codice standard OO, è, infatti, molto funzionale.

  • Strumento catena di maturità: qual è la tua esperienza con IDE e debugger? Sto usando Eclipse in questo momento e sembra ok.

IDEA (IntelliJ), NetBeans e Eclipse tutti hanno un buon supporto per Scala. Sembra IDEA è il migliore, e NetBeans / Eclipse mantenere rana-saltare l'un l'altro, anche se NetBeans è stato certamente più stabile di Eclipse di ritardo. D'altra parte, il supporto su Eclipse sta prendendo un percorso molto promettente che dovrebbe produrre risultati nei prossimi 6 mesi o giù di lì - è solo che si tratta di un percorso urto. : -)

Alcuni segni interessanti di Scala utensili per questi ambienti è il fatto che il plugin Eclipse per lo sviluppo usa AOP per unire più perfettamente con l'intero IDE, che il plugin NetBeans è stato completamente riscritto in Scala, e che c'è un Power Pack Scala su IDEA che supporta, tra le altre cose, traducendo il codice Java in codice Scala.

La gente di Emacs hanno strumenti completi per Scala pure, e un sacco di editori più piccoli hanno il supporto per troppo. Sono molto confortevoli, con il supporto di jEdit per i piccoli programmi e script, per esempio.

C'è anche un buon supporto Maven - infatti, il modo standard per installare Ascensore è quello di installare Maven, e poi costruire un archetipo di sollevamento. Che tirerà in una versione Scala appropriata. C'è un obiettivo scala:cc che farà ricompilazione innescata pure.

A proposito di ricompilazione, né Maven, e in particolare non Ant fanno un buon lavoro ad individuare ciò che deve essere ricompilato. Da quel problema sorto SBT (tool di creazione semplice), scritto in Scala, che risolve questo problema attraverso l'utilizzo di plug-in Scala compilatore. SBT utilizza lo stesso layout del progetto di Maven, così come repository Maven / Ivy, ma configurazioni di progetto sono fatto in codice Scala al posto di XML -. Con il supporto per i file di configurazione Maven / Ivy e

  • Velocità d'apprendimento: considerando la mia esperienza, quanto velocemente pensi che io possa raggiungere unlivello praticabile con Scala?

Molto veloce. Come un linguaggio puramente OO, Scala presenta già alcune caratteristiche, paragonabili a alcune cose che è presente in C ++, ma non Java, anche se lavorano in modo differente. A questo proposito, una volta che ti rendi conto che tali caratteristiche sono per loro e si riferiscono a cose C ++, sarete molto più avanti di programmatori Java, come avrete già sapete che cosa fare con loro.

  • Distribuzione: esattamente come si distribuisce un programma di Scala? Si tratta di un vaso, è un eseguibile?

La stessa cosa di Java. È possibile distribuire JAR, WAR, o qualsiasi altro degli obiettivi di Java, perché il compilatore Scala generare file di classe. In realtà, si utilizza vaso di Java per generare file JAR di una Scala dai file di classe, e gli obiettivi di Maven per file WAR edilizia supporto di sollevamento.

C'è un'alternativa per i file di script, però. Si può chiamare "scala" per eseguire Scala codice sorgente direttamente, simile a uno script Perl di Shell. Può anche essere fatto su Windows. Tuttavia, anche con l'uso di un demone di compilazione per accelerare l'esecuzione, avviare i tempi sono abbastanza lento che un uso efficace di Scala in un ambiente di scripting pesante ha bisogno di qualcosa di simile a Nailgun .

Per quanto riguarda gli svantaggi della Scala, un'occhiata alla mia risposta (e altri di) in questo Stack Overflow questione.

Altri suggerimenti

Scala è un linguaggio in evoluzione vale la pena di investire in, soprattutto se si proviene da mondo Java. Scala è ampiamente coperto a Artima . Vedere questo articolo da Bill Venners e anche leggere su Twitter e Scal a

.

Per quanto riguarda le vostre domande:

  • Java può funzionare ovunque ci sia una JVM. Nessuna fortuna con i telefoni cellulari però. Avete bisogno di una JRE piena, non il sottoinsieme che è disponibile qui.
  • Questo è possibile con JNI. Se qualcosa è possibile con Java, allora è possibile con Scala. Scala può chiamare classi Java.
  • La programmazione funzionale è un punto di forza di Scala - si ha bisogno di imparare. Tuttavia si potrebbe anche iniziare ad usarlo senza prendere pieno vantaggio di esso e il tuo lavoro con esso.
  • C'è un plug-in di Eclipse. Non è meglio, ma si farà il lavoro. Maggiori dettagli qui .
  • Se si ha esperienza, direi veramente veloce. Vi consiglio di trovare un libro per cominciare.
  • faq ingresso per la distribuzione.
  

Programmazione paradigma: Non mi sento a mio agio con il passaggio a FP in questo momento. Posso usare OO e procedurale con una certa FP in un primo momento e quindi modificare le proporzioni, come ho imparato?

Scala ha il pieno supporto per la programmazione imperativa, la scrittura di programmi senza elementi FP in esso è un gioco da ragazzi (tuttavia, FP è utile e vale la pena di apprendimento in ogni caso).

  

Velocità d'apprendimento: considerando la mia esperienza, quanto velocemente pensi che io possa raggiungere un livello praticabile con Scala

?

rapidamente. V'è una serie di caratteristiche interessanti a Scala che potrebbero essere non familiare a persone provenienti da un C ++, ambiente Java, come ad esempio alcune delle caratteristiche del sistema di digitazione. Alcuni sostengono che il fatto che ci sia molto da imparare a Scala prima di sapere tutto questo è un problema con la lingua; Non sono d'accordo. La presenza di coloro funzione è un vantaggio della lingua. Le caratteristiche più siamo meglio è. Dopo tutto, non c'è bisogno di usarli tutti in una volta, proprio come non c'è bisogno di comprare tutto ciò che viene venduto nel negozio.

  

Velocità d'apprendimento: considerando la mia esperienza, quanto velocemente pensi che io possa raggiungere un livello praticabile con Scala

?

Ho anche vengo da un C ++ sfondo, una cosa che ho notato è che dal momento che sarà scrivere molto meno codice rispetto a C ++ per un compito simile, il tuo apprendimento sarà accelerato come si sarà fare di più nello stesso periodo di tempo . Questo è stato lo stesso fenomeno che ho vissuto con Ruby.

In realtà - se fossi in te - mi piacerebbe studio paradigmi di programmazione, invece di lingue. Naturalmente devi studiare un linguaggio ad esempio per studiare il paradigma. Conoscere gli svantaggi e vantaggi di diversi paradigmi consente di visualizzare i vostri problemi da un lato diverso e si fa un programmatore migliore (anche nelle lingue che già conosci).

La ripresa di una lingua di un paradigma già noto è un compito facile relativly se necessario. Dal momento che Scala è FP (almeno lei ha citato) e C ++ / Python è OOP, è un buon linguaggio per te, direi.

È necessario registrarsi per questo corso dal Creatore di Scala se stesso.

https://www.coursera.org/course/progfun

James Strachan (produttiva Java sviluppatore open source, per chi non è nel loop) ha un interessante discussione di Scala qui , e perché si sente che è una progressione da Java (il langauge, non è la piattaforma).

Scala sembra che sta guadagnando un sacco di trazione. Non credo che sia un fuoco di paglia, ed è attualmente sulla mia lista di lingue per apprendere (in parte per l'aspetto funzionale)

Ecco un prove aneddotiche riguardo apprendibilità di Scala.

Nella nostra azienda, abbiamo ottenuto diversi stagisti da U.Waterloo. Gli era stato detto di scrivere a Scala; mai visto prima.

Sono venuti a Scala e sollevare notevolmente veloce; ora stanno producendo codice Scala; essa potrebbe non essere perfetto, ma nessuno è perfetto.

Quindi, il fatto che un manager non sa Scala potrebbe non essere il miglior argomento quando si decide sull'adozione.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top