Come faccio a riprendere rapidamente una nuova lingua, dato che ne conosco molti altri? [chiuso]

14

Un tipo di domanda che continua a venire su Programmers.SE è come imparare una lingua specifica, dato che conosci molti altri (di solito attraverso molta esperienza o istruzione).

In alcuni casi, tuttavia, potrebbe essere necessario ottenere rapidamente la velocità per un lavoro, o per lo sviluppo personale, o anche per controllare una nuova piattaforma calda.

Nella tua esperienza, quali strategie generali hai usato per imparare rapidamente una nuova lingua? Ci sono aspetti specifici di una lingua su cui cerchi di concentrarti quando si inizia a fare freddo? Quali tipi di risorse trovi utili in questo processo?

    
posta 6 revsuser8 20.11.2011 - 12:10
fonte

8 risposte

18

Ho trovato che il modo migliore per imparare una nuova lingua è fare, non solo leggere. E così, quando voglio (o ho bisogno) di imparare una nuova lingua, generalmente leggo alcuni capitoli di un libro di riferimento sulla sintassi, ma poi mi immergo e creo qualcosa, piuttosto che leggere e leggere libri e libri.

Ho scoperto che quando sorgono problemi e domande, si trovano risposte (spesso su Internet). Penso anche che questo sia il motivo per cui la formazione sul posto di lavoro è così preziosa, perché produci un prodotto di lavoro il più delle volte, anche se si tratta di una versione bozza - e quindi stai imparando facendo.

Incoraggio le persone a pensare a ciò che le interessa e ad immergersi direttamente nella scrittura del codice o nella creazione di moduli, ecc.

In seguito, dopo aver creato un progetto dopo l'altro, un buon libro di riferimento ti insegnerà i dettagli più raffinati che a questo punto puoi facilmente cogliere.

Inoltre, i progetti in genere iniziano più piccoli e diventano più complessi - dalla semplice app "Hello World" a un progetto piccolo e poco utile, in poi a un'app completa. Per quanto riguarda gli aspetti della lingua su cui mi concentro, dipende dall'uso applicato della lingua - Non ho mai imparato ogni API o framework per iniziare (come con .NET per esempio). Ciò richiederebbe troppo tempo. Apprendo la sintassi di base, quindi si diramano da lì, ricercando ogni estensione secondo necessità. Con un linguaggio meno modulare, come CSS o XSLT, imparo semplicemente i costrutti più popolari e ne aggiungo altri se necessario.

    
risposta data 21.05.2011 - 21:51
fonte
5

Questo funziona per me:

  1. Leggi informazioni.
  2. Usalo.
  3. GOTO 1.

Per il read about it passo provo a scegliere "il" riferimento per la lingua. Per esempio. "Il linguaggio di programmazione C". Deve essere condensato, al punto, e costruire la tua conoscenza in modo incrementale. Poi l'ho letto da copertina a copertina. Sono un lettore veloce e non mi dilungo in questa prima lettura. Quindi tornerò indietro e farò riferimento a punti specifici mentre sto cercando di usare la lingua. Quello su cui probabilmente passerò più tempo è esempi di codice all'interno del libro.

La prima cosa di cui hai bisogno è la sintassi. Senza sapere se è BEGIN o {o blocchi il rientro, o come dichiari le variabili, non puoi scrivere nulla. L'autore di solito introdurrà le parti più importanti prima o avrà un tutorial che copre l'uso di base della lingua. È difficile dare linee guida più generali perché alcune lingue sono molto diverse da altre. La prossima cosa è avere una sensazione generale per il linguaggio, qual è la filosofia generale, come ti avvicini alla risoluzione dei problemi nel contesto del linguaggio.

Un'altra cosa da tenere a mente è il concetto "usalo o perdilo". Se non hai usato una lingua in un po 'di tempo, ti ci vorrà un po' di tempo per tornare alla velocità (anche se quel tempo si accorcia con l'esperienza). Una volta ottenuta la sintassi della lingua, dovrai conoscere le librerie ecc.

Quindi è un processo iterativo. Andando più a fondo ad ogni iterazione. Infinito. Anche dopo aver usato una lingua per 20 anni c'è ancora qualcosa da imparare.

    
risposta data 21.05.2011 - 22:44
fonte
5

Prendi un progetto del mondo reale

Per come la vedo io, è più facile imparare qualcosa quando in realtà hai bisogno di per impararlo. Per me è stato con javascript, dove ho rischiato accettando un grande progetto con un periodo di due mesi. Sono stato io ogni giorno e ogni notte a cercare di ottenere risultati per questo progetto freelance, e per 1 mese e mezzo il progetto è stato fatto.

Ho anche accidentalmente imparato qualche SQL lì, poi ho finito di impararlo al college, e indovina un po ', ho avuto anche un momento più facile.

Se non vuoi rischiare ...

La vera chiave del punto precedente è di risolvere i problemi del mondo reale ... ma lavoro meglio sotto stress (mi piace lo stress, penso che sia divertente e potrei essere danneggiato, quindi ...). Se non lo fai, vai solo dopo un progetto open source che ti interessa e usa la lingua che vuoi imparare e prova a contribuire. Se il tuo codice fa schifo, potresti ricevere feedback in base alla community.

È probabile che farai progressi solo studiando il codice.

Ottieni tutti i riferimenti che puoi

Questo include diversi libri, documentazione ufficiale e tutto il riferimento che puoi ottenere. Ciò significa che in questo modo saprai come fare la stessa cosa in modi diversi.

Altre community, come forum, mailing list e qui, contano anche come riferimento.

    
risposta data 22.05.2011 - 05:10
fonte
2

Ci sono molti modi per imparare una nuova lingua, ma non tutti sono ugualmente efficienti. Ho trovato che queste tre linee guida funzionano meglio per me:

Crea una mappa di ciò che non sai

Scopri in anticipo cosa devi imparare. Trova una panoramica o una fonte di documentazione generale che descriva la lingua in termini astratti. Da ciò, in genere è possibile ottenere una panoramica abbastanza completa di ciò che la lingua è. Utilizza questa panoramica per evidenziare le aree che non conosci, ma che sono considerate essenziali per la lingua. La ricorsione in coda è un concetto che devi imparare per ottenere il vero grok? Forse avrai bisogno di conoscere la tua regex molto meglio, dal momento che il linguaggio è specializzato nella manipolazione delle stringhe. O forse dovresti davvero avere la tua Algebra, dal momento che molti dei concetti nella mappa mappano direttamente dai concetti algebrici.

Ottieni risorse utili per aiutarti a scoprire ciò che non sai

Potresti voler ottenere un buon riferimento sulle formule algebriche, o forse vuoi semplicemente comprare " Javascript, le parti buone ". Per alcune curve di apprendimento, questo lavoro è già stato parzialmente realizzato. Se stai cercando di imparare C # da uno sfondo Java (e viceversa), c'è una litania di post di blog e siti web che tracciano le differenze e contengono riferimenti / risorse per aiutarti a imparare.

Assicurati che le risorse non siano solo referenze: assicurati che includano test o esercizi per aiutarti a valutare se hai imparato correttamente un concetto. Leggere la ricorsione in coda è una cosa, bensì il modo in cui è implementato nella tua lingua preferita è un'altra.

Costruisci qualcosa di reale

È quasi impossibile fare qualsiasi tipo di apprendimento reale senza un obiettivo tangibile in mente. Questo è particolarmente vero per le arti applicate - che è ciò che è l'uso del linguaggio di programmazione. Assicurati di avere un obiettivo reale a cui mirare: la costruzione di qualcosa di solito è la scelta migliore.

    
risposta data 21.05.2011 - 22:14
fonte
1

Identifica i paradigmi di programmazione

Di solito identifico quali sono i paradigmi principali per la lingua. Penso ai problemi in modo diverso a seconda del paradigma.

Identifica gli idiomi

Tutte le lingue hanno idiomi. Gli idiomi variano in dimensioni e portata dal modo in cui strutturate il codice, fino a frammenti di codice particolari. Dovresti sempre provare e usare un linguaggio idiomatico.

Scrivi codice

Di solito scrivo un codice funzionale. Niente da un Siemp che per giocare a giochi web. I problemi che scelgo sono solitamente specifici per ciò che intendo usare per il linguaggio.

    
risposta data 22.05.2011 - 06:25
fonte
1

Immergiti subito !!

Considerando che sai già come programmare e conoscere diverse lingue, eccetto se quella lingua introduce un cambiamento di paradigma molto profondo, direi (contemporaneamente):

  • trova un progetto pet per guidarti,
  • e sul lato programma alcuni puzzle

Impara, pratica, applica (fino a quando è soddisfatto)

I classici 99 Prolog Puzzles (qui, 99 puzzle in Scala ) o Project Euler di solito sono buoni posti in cui cercare piccoli enigmi da ri-implementare. Oppure cerca in agguato StackOverflow e riscrivi alcune belle risposte nella lingua di destinazione, cercando di non eseguire una riscrittura riga per riga, ma qualcosa che catturi l'essenza della tua nuova lingua.

Impara con i puzzle, leggi i blog e i saggi a lato per ottenere una comprensione più approfondita della lingua e avere un'idea degli strumenti e delle guerre sante della tua nuova comunità e scrivi il tuo progetto di prova per applicare la tua nuova conoscenza e abilità e vedere quali ostacoli si incontrano.

Parlando di comunità ...

Condividi ed esponi te stesso. (Non troppo, però.)

Forse vuoi anche visitare un gruppo di utenti locali, trovare amici con cui codificarti (per ottenere critiche costruttive e non chiuderti in una mentalità specifica), e iscriverti a quel canale IRC o elenco di posta spaventoso dove lasciano strani parole sugli alberi AST e scrivi tirate filosofiche su come le monadi non sono monadi e come una volta Ho incontrato una ragazza strana che non puoi tornare indietro .

    
risposta data 23.05.2011 - 22:06
fonte
0

So che questo suona zoppo, ma inizia a scrivere qualcosa, anche se è sciocco, e usa molte cose Google seguendo questo schema:

come faccio [qualcosa da una lingua] in [un'altra lingua]

Se le parole sono di uso comune, citazioni letterali.

È una domanda abbastanza comune che praticamente le uniche volte in cui non trovo più una risposta è quando trovo una pagina che spiega perché non può essere eseguita.

    
risposta data 23.05.2011 - 21:54
fonte
0

Come suggerimento specifico per l'uso della lingua:

Correzione bug

  1. Trova un interessante progetto open source nella lingua di destinazione, preferibilmente uno con un bug tracker pubblico, uno sviluppo moderatamente attivo e una suite di test decente.
  2. Scegli un bug da correggere, preferibilmente uno che ti infastidisce quando usi effettivamente il programma.
  3. Scopri perché il programma mostra il comportamento del buggy.
  4. Scrivi test e codice per risolvere il problema.
  5. Invia una patch a monte.
  6. Rivedi la tua patch fino a quando gli sviluppatori a monte non sono felici.
  7. Torna al passaggio 1 o 2.

Questo processo tende ad essere più soddisfacente rispetto alla scrittura di un altro programma giocattolo, ma molto più facile che iniziare da zero il tuo intero progetto. Ti esponi ad alcuni degli idiomi linguistici nel loro contesto naturale e (con un po 'di fortuna) l'idea di qualcuno su quale sia il codice buono.

D'altra parte, può anche essere estremamente frustrante, in particolare se scegli un bug sgradevole, o se gli sviluppatori rifiutano la tua patch senza spiegare correttamente il perché.

    
risposta data 26.09.2011 - 19:32
fonte

Leggi altre domande sui tag