Come posso imparare rapidamente una nuova lingua, dato che ne conosco molte altre? [chiuso]


14

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

In alcuni casi, tuttavia, potrebbe essere necessario aggiornarsi rapidamente per un lavoro o per lo sviluppo personale o anche per provare 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 focalizzarti quando inizi il freddo? Quali tipi di risorse trovi utili in questo processo?


6
Direi di farlo. La documentazione ufficiale e Google sono le uniche risorse di cui avrai bisogno.
Fosco,

@Rein Alcune delle risposte si sovrappongono, ma l'obiettivo di questa domanda è costruire una risposta canonica all'apprendimento di una lingua (qualsiasi lingua) nel modo più rapido ed efficiente possibile. L'altra domanda è una combinazione di raccomandazioni sui libri, risposte simili a quelle fornite qui e consigli generali sull'apprendimento non affrettato (leggere poco prima di andare a letto, leggere le specifiche della lingua, prendere settimane per acquisire familiarità a un livello base con alcuni diversi le lingue).

Non sono sicuro di quanto sia utile la domanda posta. Se conosco diversi linguaggi di programmazione, probabilmente ho imparato come imparare un nuovo linguaggio e probabilmente in modo efficiente. In caso contrario, come trarrò beneficio da questa domanda?
David Thornley,

1
@David Conosco una mezza dozzina di lingue, ma le ho imparate di solito dopo aver frequentato le lezioni o dopo diversi mesi di lavoro. Ma se devo imparare rapidamente una lingua per un nuovo lavoro, ciò non mi aiuta. Non dubito che le persone che hanno imparato diverse lingue abbiano trovato il modo di impararle rapidamente: sarebbe quello che spero contengano le risposte.

@Mark Trapp: Grazie, questo mi chiarisce le cose.
David Thornley,

Risposte:


18

Ho scoperto 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, in genere leggo alcuni capitoli di un libro di riferimento sulla sintassi, ma poi mi tuffo e creo qualcosa, piuttosto che leggere e leggere libro dopo libro.

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 lavoro è così preziosa, perché stai producendo un prodotto di lavoro per la maggior parte del tempo, anche se si tratta di una versione bozza - e quindi stai imparando facendo.

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

Più tardi, dopo aver creato un progetto dopo l'altro, un buon libro di consultazione ti insegnerà i dettagli che a questo punto puoi cogliere più facilmente.

Inoltre, i progetti iniziano generalmente più piccoli e crescono in complessità - dalla semplice app "Hello World" a un progetto piccolo e non molto utile, fino a un'app completa. In termini di aspetti della lingua su cui mi concentro, dipende dall'uso applicato della lingua: non imparo mai ogni API o framework per iniziare (come con .NET per esempio). Ci vorrebbe troppo tempo. Apprendo la sintassi principale, quindi mi ramifico da lì, ricercando ogni estensione secondo necessità. Con un linguaggio meno modulare, come CSS o XSLT, imparo semplicemente prima i costrutti più popolari e ne aggiungo altri secondo necessità.


Quando dici "fallo", ci sono aspetti specifici della lingua su cui ti concentri quando ti immergi per assicurarti di prenderlo nel modo più efficiente possibile? O continui semplicemente a fare progetti campione casuali fino a quando non "scatta"?

Bene, i progetti generalmente iniziano più piccoli e crescono in complessità - dalla semplice app "Hello World" a un progetto piccolo e non molto utile, fino a un'app completa. In termini di aspetti della lingua su cui mi concentro, dipende dall'uso applicato della lingua: non imparo mai ogni API o framework per iniziare (come con .NET per esempio). Ci vorrebbe troppo tempo. Apprendo la sintassi principale, quindi mi ramifico da lì, ricercando ogni estensione secondo necessità. Con un linguaggio meno modulare, come CSS o XSLT, imparo semplicemente prima i costrutti più popolari e ne aggiungo altri secondo necessità.
jqueryrocks,

2
puoi aggiungerlo di nuovo alla tua risposta? Questa è un'ottima informazione.

5

Questo funziona per me:

  1. Leggi a riguardo.
  2. Usalo
  3. GOTO 1.

Per la lettura a riguardo passo provo a scegliere "il" riferimento per la lingua. Ad esempio "Il linguaggio di programmazione C". Deve essere condensato, al punto, e sviluppare le tue conoscenze 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 sono esempi di codice all'interno del libro.

La prima cosa di cui hai bisogno è la sintassi. Senza sapere se è BEGIN o {o blocca il rientro o come si dichiarano le variabili, non è possibile scrivere nulla. L'autore di solito presenterà prima le parti più importanti o avrà un tutorial che copre l'uso di base della lingua. È difficile fornire linee guida più generali perché alcune lingue sono molto diverse da altre. La prossima cosa è avere un'idea generale della lingua, qual è la filosofia generale, come affrontare il problem solving nel contesto della lingua.

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

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


Puoi approfondire ciò che intendi per "leggere al riguardo"? Su cosa, in particolare, ti concentri quando inizi a leggere di una nuova lingua che vuoi imparare?

@Mark - guarda le mie modifiche ... È questo quello che stai cercando?
Guy Sirton,

5

Prendi un progetto del mondo reale

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

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

Se non vuoi rischiare ...

La chiave effettiva del punto precedente è risolvere i problemi del mondo reale ... ma lavoro meglio sotto stress (mi piace lo stress, penso che sia divertente e potrei essere danneggiato, quindi ...). In caso contrario, segui semplicemente un progetto open source che ti interessa e utilizza la lingua che desideri imparare e prova a contribuire. Se il tuo codice fa schifo, potresti ricevere un feedback a seconda della comunità.

È probabile che farai progressi studiando il codice.

Ottieni tutti i riferimenti che puoi

Ciò include diversi libri, documentazione ufficiale e tutti i riferimenti che puoi ottenere. Le conseguenze sono che, in questo modo, saprai come fare la stessa cosa in modi diversi.

Anche altre comunità, come forum, mailing list e qui, contano come riferimento.


Vorrei aggiungere "afferrare un difficile problema del mondo reale". Scegli qualcosa che richiede di approfondire il collo il primo giorno. Il mio primo giorno con C # stavo scoprendo come caricare dinamicamente le dll, usare la riflessione per ottenere le classi e da ciò un elenco di mehods. Ho imparato un sacco di giorni, non avevo mai usato alcuna tecnologia .net prima.
Bryan Oakley,

2

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

Crea una mappa di ciò che non conosci

Scopri in anticipo cosa devi imparare. Trova una panoramica o una fonte di documentazione generale che descriva la lingua in termini astratti. Da ciò, di solito è possibile ottenere una panoramica abbastanza completa di cosa parla la lingua. Usa quella panoramica per evidenziare aree che non conosci, ma che sono considerate fondamentali per la lingua. La ricorsione della coda è un concetto di cui hai bisogno per imparare a parlare davvero la lingua? Forse dovrai conoscere molto meglio la tua regex, poiché il linguaggio è specializzato nella manipolazione di stringhe. Oppure, forse dovrai davvero attivare la tua Algebra, poiché molti dei concetti nella mappa della lingua direttamente dai concetti algebrici.

Ottieni buone risorse per aiutarti a imparare ciò che non sai

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

Assicurati che le risorse non siano solo riferimenti: assicurati che includano test o esercizi per aiutarti a valutare se hai imparato correttamente un concetto. Leggere sulla ricorsione della coda è una cosa, mentre 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 è l'uso del linguaggio di programmazione. Assicurati di avere un obiettivo reale su cui puntare: costruire qualcosa è di solito la scelta migliore.


1

Identificare i paradigmi di programmazione

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

Identifica gli idiomi

Tutte le lingue hanno modi di dire. I modi di dire variano in dimensioni e portata da come strutturi il codice, fino a frammenti di codice particolari. Dovresti sempre provare a usare un linguaggio linguistico.

Scrivi il codice

Di solito scrivo un po 'di codice funzionale. Qualsiasi cosa, dai setacci Primes, alle app web giocattolo. I problemi che scelgo sono di solito specifici per ciò che intendo usare la lingua.


1

Immergiti !!

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

  • trova un progetto per animali domestici per guidarti,
  • e sul lato programma alcuni enigmi

Impara, esercitati, applica (fino a quando non sei soddisfatto)

I classici 99 Prolog Puzzles (qui, i 99 Puzzles in Scala ) o il Project Euler sono generalmente buoni posti in cui cercare piccoli puzzle da ri-implementare. Oppure aggrappati a StackOverflow e riscrivi alcune belle risposte nella tua lingua di destinazione, cercando di non riscrivere riga per riga ma qualcosa che catturi l'essenza della tua nuova lingua.

Impara con i rompicapo, leggi blog e 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 le tue nuove conoscenze e abilità trovate e guarda in quali dossi ti imbatti.

Parlando di comunità ...

Condividi ed esponiti. (Non troppo, però.)

Forse vuoi anche visitare un gruppo di utenti locali, trovare amici con cui codificare (per ottenere alcune critiche costruttive e non bloccarti in una mentalità specifica) e iscriverti a quel canale IRC o mailing list spaventoso in cui rilasciano strane parole su AST alberi e scrivere tirate filosofiche su come le monadi non sono monadi e come una volta che hai incontrato una strana ragazza non puoi tornare indietro .


0

So che sembra zoppo, ma inizia a scrivere qualcosa, anche se è sciocco, e usa un sacco di Google per le cose seguendo questo schema:

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

Se le parole sono comuni usare letterali citati.

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


0

Come suggerimento specifico per l'utilizzo della lingua:

Bug corretti

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

Questo processo tende ad essere più appagante rispetto alla scrittura di un altro programma giocattolo, ma molto più facile che iniziare da zero il proprio progetto completo. Ti esponi ad alcuni dei linguaggi linguistici nel loro contesto naturale e (con un po 'di fortuna) l'idea di qualcuno di come sia un buon codice.

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

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.