Imparare la Scala, sentirsi scoraggiati [chiuso]


9

Vengo da un background Java e sto provando ad imparare la Scala. Al momento mi sento abbastanza sopraffatto, sembra che ci sia molto altro da imparare con Scala, tanti modi diversi di fare la stessa cosa.

Mi chiedevo se qualcuno avesse qualche consiglio su da dove cominciare e quanto tempo impiegassero a sentirsi ragionevolmente competenti nella lingua?

Anche piccole cose come la comprensione del loop sembrano davvero potenti, ma è solo un altro pezzo di sintassi che devi ricordare!


Scala è per la maggior parte un linguaggio complesso quindi non scoraggiarti! Aneddoticamente sono un programmatore Haskell abbastanza competente e ho pensato che Scala fosse molto più complessa :) Il modo migliore che ho trovato per imparare qualcosa è alternare un libro e un progetto. Per Scala suggerirei un compilatore e i libri delle scale ma a ciascuno il loro
Daniel Gratzer,

Grazie per l'incoraggiamento! Qual è il libro delle scale?
jcm

lettura consigliata: da dove iniziare?
moscerino

Ho provato Scala alcuni anni fa da una prospettiva Java e non l'ho capito. Di recente, ho iniziato un corso su coursera.org sulla programmazione funzionale a Scala. È un approccio abbastanza radicalmente diverso che il mio background Java non ha interferito. Invece sto (ri) imparando a pensare in strutture di dati immutabili, ragionamenti su algoritmi, teoria degli insiemi, teoria dei tipi e tutte le altre cose divertenti che non riesco a mettere in pratica in un vero lavoro. Non ti preoccupare; c'è ancora reale utilità di Scala nel mondo reale.
BobDalgleish,

2
Scala è un nuovo grande ecosistema da raccogliere (il linguaggio principale in sé non è così grande, ma principalmente librerie e concetti). Se attacchi la parte più superficiale delle cose per un po 'e raccogli un concetto alla volta, le cose inizieranno davvero a fondersi. Le cose che sembrano bizzarre sintassi speciali cotte di solito si trasformano in una categoria più generica di cose che possono essere astratte in tutto il linguaggio. Ma ci vuole sicuramente un po 'di gioco e lettura per capire quali sono queste cose.
KChaloux,

Risposte:


11

Sono stato dove sei, e ho quasi rinunciato un paio di volte. Sebbene non sia affatto un esperto sviluppatore di Scala, sento di avere una solida conoscenza del linguaggio, sicuramente abbastanza da aver avvelenato a fondo il mio rapporto con Java.

La prima cosa che ho fatto è stata passare qualche settimana giocando, leggendo vari blog e introduzioni alla lingua. È stato un errore, non ho imparato (o almeno capito) molto di utile, e mi sono sentito completamente fuori dalle mie profondità.

La seconda cosa è stata passare un po 'di tempo a risolvere problemi tecnicamente semplici ma che mi hanno costretto a esplorare aspetti specifici della sintassi Scala da solo:

Anche se questo non mi ha trasformato in un esperto durante la notte, mi ha dato abbastanza familiarità con la lingua da non sembrare più così impossibile.

Con quella spinta di fiducia, ho finalmente fatto quello che avrei dovuto iniziare: ottenere la programmazione alla Scala di Martin Odersky e cercare di leggere un intero capitolo ogni paio di giorni. È un libro ben scritto e completo, e se hai già un solido background di programmazione, non dovrebbe rivelarsi troppo scoraggiante. Non è necessario rendere la tua prima lettura troppo dolorosa: salta le parti contrassegnate come facoltative, assicurati di comprendere i concetti ma non impantanarti nei dettagli (in particolare, sento che i capitoli sulle raccolte sono eccessivi e possono essere scremato). Sapere che esiste un concetto e dove leggere una spiegazione esauriente di come funziona è di grandissimo aiuto.

Un'alternativa alla lettura del libro è frequentare la lezione di Coursera: è molto meno completa, ma copre la maggior parte dei punti cruciali ed è suddivisa in unità logiche e gestibili. D'altra parte, non so se sia possibile accedere alle lezioni una volta completata la lezione, e ho anche scoperto che ero molto meno impegnato ad ascoltare qualcuno (anche qualcuno ovviamente intelligente e ben informato come Martin Ordesky) di durante la lettura di un libro.

Un altro problema con Scala è la quantità di vocabolario che devi ingerire - per nome parametri? per-la comprensione? chiusura? Se ti senti sopraffatto da questo, ho scoperto che una buona miscela del Glossario della Scala e ricerche mirate di overflow dello stack mi hanno aiutato molto (cercare le risposte di Daniel Sobral e Travis Brown). In effetti, sono arrivato al punto di creare un mazzo Anki con il glossario e ritengo che sia stato di grande aiuto.

Infine, questo è probabilmente ovvio, ma codice, codice, codice. Trova un progetto secondario su cui puoi lavorare, anche se è qualcosa di banale. Quello che ho fatto è stato scrivere un crawler Amazon molto semplice che mi avrebbe inviato un tweet ogni volta che un autore a cui ero interessato a pubblicare un nuovo libro. Ci è voluto più tempo di quanto probabilmente avrebbe dovuto, ma è stato allora che mi sono innamorato della lingua.

Se vai così lontano, probabilmente non avrai bisogno di ulteriore aiuto, ma un buon suggerimento, una volta che avrai imparato la lingua, è quello di approfondire i concetti sottostanti. Hai familiarità con OOP, prova a leggere sulla programmazione funzionale - posso dire con assoluta certezza che ti lascerà a bocca aperta. La programmazione funzionale in Scala dovrebbe essere rilasciata presto (ish), ma l'edizione con accesso anticipato è già eccellente. Un'altra risposta suggerisce la programmazione funzionale per gli sviluppatori Java , che non ho familiarità ma che sono propenso a ritenere buona (quando un libro di O'Reilly non valeva almeno la pena di scremare?).

Spero che questo non sia diventato troppo lungo e ovvio, e onestamente ti auguro il meglio. Scala ha i suoi difetti, ma è un linguaggio meraviglioso e porterà il tuo cervello in direzioni che non sapevi che esistessero. E cercherò il tuo "Learning Haskell, sentendoti scoraggiato" tra un anno :)


3

Scala è un modo molto diverso di pensare a Java, quindi non scoraggiarti! Probabilmente inizierei con la Programmazione funzionale per gli sviluppatori Java in modo che tu possa entrare nel modo di pensare funzionale.

C'è un gruppo di utenti Java e / o Scala nelle vicinanze? È sempre più facile imparare una nuova lingua con un collega.

Buona fortuna e continua a perseverare !.


Inoltre, consiglierei di dare un'occhiata ai quadri di Scala o ai toolkit riguardanti le aree di tuo interesse. Nella mia esperienza avere un progetto su cui ti piace lavorare semplifica le cose. Dai un'occhiata a Lift or Play Framework, ad esempio quando sei interessato allo sviluppo Web o Akka se le applicazioni simultanee o distribuite fanno al caso tuo.
juwi,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.