Learning Scala, sentirsi scoraggiato [chiuso]

9

Vengo da uno sfondo Java e sto provando ad imparare Scala. Al momento mi sento piuttosto sopraffatto, sembra esserci molto di più da imparare con Scala, tanti modi diversi di fare la stessa cosa.

Mi stavo chiedendo se qualcuno ha qualche consiglio su dove iniziare e quanto tempo ci è voluto per sentirsi ragionevolmente competenti nella lingua?

Anche le piccole cose come la comprensione del ciclo sembrano davvero potenti, ma è solo un'altra parte della sintassi che devi ricordare!

    
posta jcm 02.02.2014 - 06:14
fonte

2 risposte

11

Sono stato dove sei, e ho quasi rinunciato un paio di volte. Sebbene non sia affatto uno sviluppatore esperto di Scala, sento di avere ora una solida padronanza della lingua, certamente sufficiente per avvelenare completamente la mia relazione con Java.

La prima cosa che ho fatto è stata passare qualche settimana a giocare, a leggere vari blog e introduzioni alla lingua. È stato un errore, non ho imparato (o almeno capisco) molto di utile e mi sono sentito completamente fuori dalla mia profondità.

La seconda cosa era passare un po 'di tempo a risolvere problemi tecnicamente semplici, ma mi ha costretto a esplorare da solo aspetti specifici della sintassi di Scala:

Anche se questo non mi ha trasformato in un esperto durante la notte, mi ha dato abbastanza familiarità con il linguaggio che non mi sembrava più così impossibile.

Con quell'accelerazione di fiducia, ho finalmente fatto ciò che avrei dovuto iniziare: ottieni Programmazione in Scala di Martin Odersky e tentare di leggere un intero capitolo ogni due giorni. È un libro ben scritto e completo e, se hai già un background di programmazione sonora, non dovresti dimostrarlo troppo scoraggiante. Non è necessario rendere la prima lettura troppo dolorosa: salta le parti contrassegnate come facoltative, assicurati di aver compreso i concetti ma non impantanarti nei dettagli (in particolare, ritengo che i capitoli sulle raccolte siano eccessivi e possano essere scremato). Sapere che esiste un concetto e dove leggere una spiegazione esauriente di come funziona è un aiuto tremendo.

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

Un altro problema con Scala è la quantità di vocabolario che devi assimilare ai parametri del nome? per-la comprensione? chiusura? Se ti senti sopraffatto da questo, ho trovato che una buona combinazione del glossario di Scala e le ricerche mirate di overflow dello stack mi hanno aiutato molto (cercare 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 parallelo su cui puoi lavorare, anche se è qualcosa di banale. Quello che ho fatto è stato scrivere un crawler Amazon molto semplice che mi avrebbe mandato un tweet ogni volta che un autore mi interessava pubblicare un nuovo libro. Ci è voluto più tempo di quanto probabilmente avrebbe dovuto, ma questo è quando mi sono innamorato della lingua.

Se arrivi così lontano, probabilmente non avrai bisogno di ulteriore aiuto, ma un buon suggerimento, una volta arrivato a comprendere 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 la prima edizione di accesso è già eccellente. Un'altra risposta suggerisce Programmazione funzionale per sviluppatori Java , che non conosco, ma sono incline a credere che sia buona ( quando un libro di O'Reilly non vale almeno la schiumatura?)

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

    
risposta data 03.02.2014 - 10:02
fonte
3

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

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

Buona fortuna e continua a perseverare!

    
risposta data 02.02.2014 - 11:08
fonte

Leggi altre domande sui tag