A che punto posso dire di aver "imparato" una lingua?

67

Nei miei pochi anni di programmazione, mi sono divertito con tutto, da Ruby a C ++. Ho fatto di tutto, dall'apprendimento della sintassi di base (Ruby) al completamento di diversi progetti importanti (per me) che estendevano le mie capacità con la lingua. Data questa varietà (e il fatto che imparare veramente una lingua non si ferma mai), quando posso dire di conoscere (o aver imparato) una lingua?

    
posta SomeKittens 29.06.2012 - 16:05
fonte

9 risposte

70

A che punto puoi dire che hai "imparato" una lingua come l'inglese o il francese? Penso che la maggior parte delle persone accetterebbe che tu abbia imparato una lingua quando puoi usarla per comunicare . Non devi conoscere ogni parola o capire ogni idioma, ma dovresti conoscere la maggior parte del sottogruppo (piuttosto piccolo) della lingua che le persone usano nella conversazione quotidiana. Avendo "imparato" una lingua in tale misura, puoi continuare a saperne di più mentre usi la lingua ogni giorno e ti esponi sempre di più. Quando morirai, non saprai ancora tutto quello che c'è da sapere sulla lingua, ma nessuno dirà che non hai mai "imparato" la lingua.

Quindi, penso, con i linguaggi del computer. Puoi dire di "conoscere" un linguaggio come C ++ o Ruby quando puoi scrivere programmi utili in esso. Se hai bisogno di quantificare il grado in cui conosci la lingua, usa gli stessi termini che usare per una lingua umana. Dì "Conosco un po ' C ++" o "I know conversational C ++" o "I'm fluent in C ++" per indicare che sai quanto basta per racimolare, abbastanza per fare cose utili, o che sei un esperto, rispettivamente.

    
risposta data 29.06.2012 - 16:34
fonte
25

Dipende da chi sta chiedendo

La persona che chiede propably ha una certa idea di quale livello di abilità ci si aspetta da qualcuno che dice di aver "imparato una lingua".

Fondamentalmente, ho incontrato due scale archetipiche, con le quali le persone giudicano la risposta alla domanda "hai imparato X?"

Per la maggior parte dei nerd è una domanda trabocchetto per eliminare i poser Questo è già dimostrato dalle altre risposte alla tua domanda;). Se dici di averlo imparato, fallisci nel vedere lo scopo del compito, che è implicitamente "la perfezione", e, molto peggio: fallisci nell'umiltà.

Per la maggior parte dei capi, "l'hai imparato", se riesci a risolvere i loro problemi , un criterio spesso soddisfatto se il tuo codice viene compilato. Rispondere alla sua domanda in modo umile porterà a affidare l'incarico a un posatore che potrebbe anche essere un parente.

Quindi, qual è il tuo pubblico?

    
risposta data 29.06.2012 - 17:31
fonte
17

Penso che le persone si stiano concentrando sulla finalità della parola "imparato" essendo perfetta, significa che hai finito di studiare. E come tutti hanno notato, i linguaggi di programmazione sono entità viventi proprio come le lingue parlate. Ad esempio, qualcuno che aveva una padronanza completa di C # 2 avrebbe guardato C # 3 con LINQ, Lambdas, var keyword, inizializzatori di oggetti / raccolte e metodi di estensione e ha scoperto che molto è cambiato rispetto a quanto appreso per la versione precedente. Lo stesso sta accadendo con C # 4 con await , async parole chiave e altri nuovi costrutti di linguaggio.

E stiamo solo parlando di sintassi qui. Dimentichiamo che la maggior parte delle lingue sono abbinate a un quadro . C # ha il framework .NET, Java ha il proprio framework, così come Ruby, C ++, PHP e PERL. Pensa alla struttura di una lingua come il vocabolario e il linguaggio stesso è solo sintassi. Conoscere la lingua significa saper pronunciare una frase nella lingua. Conoscere il quadro significa che puoi esprimerti bene nella lingua. Infine, una volta che conosci la sintassi e il vocabolario, devi imparare gli idiomi in modo da scrivere codice come "madrelingua".

Direi che ci sono diversi livelli di apprendimento.

  1. Hello World (puoi scrivere i programmi più rudimentali.)
  2. Competente (puoi scrivere programmi di base ma devi consultare regolarmente la guida online)
  3. Fluent (puoi scrivere programmi avanzati con qualche riferimento necessario)
  4. Madrelingua (puoi scrivere programmi avanzati con una guida online minima, il tuo codice è indistinguibile dal codice di un altro madrelingua).
risposta data 29.06.2012 - 17:16
fonte
7

Raramente puoi dire di aver imparato una lingua. Ciò implica che hai finito di imparare a riguardo, che è ... sciocco.

Dire di sapere che una lingua va bene quando puoi scrivere un codice che non stravolga gli idiomi nella lingua (magari dopo una settimana di decomposizione della conoscenza) senza fare riferimento a riferimenti di sintassi.

    
risposta data 29.06.2012 - 16:32
fonte
3

Questo è più di un fattore basato sull'opinione pubblica. In tutti i termini tecnici "Impara" significherebbe avere una conoscenza completa di, come in te ci si aspetterebbe di conoscere TUTTO della lingua.

Tuttavia, nel mondo della programmazione credo che si tratti di più se si può programmare fluentemente nella lingua per completare un obiettivo / compito. Probabilmente significa anche se sei a tuo agio con la lingua. Certo, potresti andare là fuori e prendere una laurea dopo anni e anni di college, ma è solo per farsi notare? Definisci quando puoi dire di aver imparato una lingua.

    
risposta data 29.06.2012 - 16:17
fonte
2

Quando inizi a notare i suoi difetti. Una volta che inizi a imparare una lingua, di solito sei ancora impegnato a imparare a fare cose o sei molto coinvolto in esso per notare dove fallisce (ovviamente, a meno che tu non inizi a impararlo da un punto di vista negativo solo per vedere quanto peggio è paragonabile alla tua lingua preferita finora). Direi che non conosci veramente una lingua finché non sei consapevole delle aree in cui non riesce.

    
risposta data 01.07.2012 - 01:40
fonte
2

La mia risposta personale è quando

  1. Conosco le basi per scrivere un semplice programma a livello di produzione.
  2. Ho trascorso almeno 3 ore consecutive a risolvere un problema che sembrava semplice ma  non era.

Da lì in poi, non lo chiamerei apprendimento, ma padronanza.

    
risposta data 29.06.2012 - 17:12
fonte
1

Nel punto in cui la tua applicazione o componente può leggere la posta, vale a dire legge di Zawinski , che afferma:

“Every program attempts to expand until it can read mail. Those programs which cannot so expand are replaced by ones which can.” Coined by Jamie Zawinski (who called it the “Law of Software Envelopment”) to express his belief that all truly useful programs experience pressure to evolve into toolkits and application platforms (the mailer thing, he says, is just a side effect of that).

Questo è stato aggiornato quando l'RSS è diventato popolare per "... può leggere i feed RSS" e probabilmente potrebbe essere aggiornato in questi giorni per "... può leggere i feed di Twitter". ; -)

    
risposta data 01.07.2012 - 15:05
fonte
0

Penso che tu abbia imparato una lingua quando non la vedi. Non vedi i cicli e gli accessi ai dati, ma il flusso di lavoro dell'algoritmo.

Non giochi trucchi con il passaggio dei parametri e l'elaborazione degli array, i macro magici. Non pensi al tuo codice come a un materiale di marketing personale da mostrare ai tuoi amici e insegnanti, ma per esprimere la tua comprensione di un problema e la tua volontà per il computer il modo più leggibile.

Hai delle abitudini che ti aiutano a evitare molti errori semplicemente seguendoli, ad esempio: usa {} blocchi di codice e () nelle espressioni anche se sei assolutamente sicuro che "sarà solo una riga" o "Io non sono pazzo e conosci l'ordine di precedenza degli operatori ".

Smetti di contare quante classi, pattern e API framework conosci. Questo è ciò che intellisense, i riferimenti e le esercitazioni, e il Google è per. Ma quando guardi un problema, sai immediatamente quali parti possono essere suddivise e con quali strumenti e algoritmi risolverli.

Cosa fai funziona , è elegante e piccolo . Ti piace programmare e trovare facilmente i tuoi bug. Sì, i maestri creano bug anche perché sono umani, ma li trovano rapidamente perché la loro struttura di codice li conduce nel posto giusto.

E finalmente realizza: hai imparato a pensare, analizzare e risolvere i problemi; rispetto a loro, la lingua attuale è secondaria, solo la casella corrente di regole e strumenti.

    
risposta data 13.07.2012 - 23:37
fonte

Leggi altre domande sui tag