È mai troppo presto per imparare una nuova lingua? [chiuso]


11

Contesto personale: ho imparato il C ++ formalmente negli ultimi 6 mesi all'università. Prima di questo mi dilettavo in JavaScript per un anno. Ora sto pensando di imparare Python durante un mese di scuola.

Dividendo la mia attenzione all'inizio del processo di apprendimento, sto degradando l'efficienza del mio apprendimento? Devo trascorrere il mese libero continuando in C ++? O non è mai troppo presto per imparare una nuova lingua?


6
Se capisci la programmazione in generale, l'apprendimento di nuove lingue dovrebbe aiutarti a diventare un programmatore migliore. Se non conosci la programmazione e non hai compreso cose come il controllo del flusso, i tipi di dati, le funzioni / i metodi ecc., Aspetterei di imparare altre lingue.
The Muffin Man il

Sono abbastanza a mio agio in C ++ con tutto ciò che hai menzionato.
Anticipazione,

1
Metterò la tua domanda in prospettiva. Nei primi 6 mesi di università, ero già stato introdotto in 5 diversi linguaggi di programmazione. Assembly (dimentico l'esatta piattaforma Moto), C, C ++, Visual Basic 6 e Java. In seguito ho continuato a studiare Basic, C #, Visual Basic .NET, x86 Assembly. Dopo il college ho imparato almeno 5 linguaggi di programmazione aggiuntivi entro i primi 2 anni.
Ramhound,

2
Se puoi multitasking e priorità e avere un approccio disciplinato all'apprendimento, allora vai avanti e impara una seconda lingua. Di solito è meglio concentrarsi e padroneggiare la prima lingua. Tuttavia, è anche importante imparare vari paradigmi di programmazione. Leggi la sezione di programmazione dei seguenti collegamenti per vedere cosa intendo: Cosa dovrebbero sapere tutti i maggiori informatici e matrice delle competenze del programmatore
Anthony,

Risposte:


8

La mia esperienza con Python è limitata ad alcuni codici di riproduzione solo leggermente più complessi di Hello World, quindi questa non sarà una risposta molto approfondita per Python in particolare, ma posso dirti questo:

Le differenze tra le lingue sono nei dettagli come la sintassi e alcune specifiche della lingua saranno diverse (come i diversi modi in cui vengono gestiti gli errori, le capacità di I / O e il modo in cui i compilatori convertono il tuo input in qualcosa di eseguibile), ma C ++ e Python offrono entrambi lo stesso paradigmi, quindi la risoluzione dei problemi può essere fatta più o meno allo stesso modo con entrambe le lingue. Sia C ++ che Python sono imperativi e orientati agli oggetti, quindi probabilmente acquisirai Python abbastanza velocemente se ti senti a tuo agio con C ++ una volta che avrai acquisito padronanza della nuova sintassi usando le tecniche di risoluzione dei problemi che hai acquisito con C ++. Se vuoi, puoi usare Python anche per la programmazione funzionale, ma non ho mai toccato quella parte, quindi non posso dirti molto al riguardo.

È troppo presto? Non posso davvero raccontare dalla tua storia in un sì o no definitivo. Sei già abbastanza sicuro di scrivere applicazioni complete (GUI) con C ++? (cioè uso di librerie, funzionalità linguistiche più complesse come generici e / o modelli ecc.) Penso che apprendere un nuovo paradigma linguistico sia molto più difficile che apprendere una nuova lingua nella stessa famiglia di paradigmi. Quando esci nel nuovo territorio di paradigma, dovrai dedicare molto più tempo per avere una buona idea di come risolvere i problemi con quel paradigma. Tra i linguaggi OO ci sono differenze su come viene gestita l'ereditarietà e su come i dati vengono passati in memoria quando si passa un parametro / argomento a una funzione che influisce sulle prestazioni. Ma per iniziare questi sono di solito una preoccupazione minore all'inizio.

La mia ipotesi è che se sei abbastanza sicuro con C ++ per fare qualcosa di più del ciao mondo in modo elegante, sei ok per il lancio. L'apprendimento superficiale di molte lingue ti aiuterà a comprendere esempi di codice indipendentemente dalla lingua utilizzata, ma la creazione del tuo codice richiede una comprensione un po 'più approfondita di come funzionano le lingue e di come differiscono l'una dall'altra.

PS Quando voglio imparare ad usare superficialmente una nuova lingua, di solito cercherò le seguenti cose per avere un'idea della sintassi della lingua e dei meccanismi superficiali:

  • Ciao mondo (testo sullo schermo)
  • Ciao mondo scritto in un file (ti insegna le basi sull'I / O dei file per quella lingua, e molto spesso anche altri tipi di I / O)
  • Esecuzione di alcuni calcoli standard con basi diverse (10, esadecimale, ottale), sia in numero intero che in virgola mobile. (ti insegna su troncamento e notazione numerica)
  • Prova a utilizzare una libreria grafica per mostrare il mondo di Hello in una finestra di dialogo elegante. (ti insegna come usare le librerie e il codice esterno)

Le osservazioni conclusive nell'ultimo paragrafo sono eccellenti. Anche se non sono abbastanza per le applicazioni complete in C ++, apprezzo la tua argomentazione sull'ampliamento dell'ambito di ciò che conosco, anche se è solo superficiale.
Anticipazione,

6

Certamente.

Non ci sono dubbi, a volte è troppo presto per imparare un nuovo linguaggio di programmazione.

Il caso più semplice è se viene fuori un linguaggio el-puzzolente e prima che qualcuno sottolinei la sua inadeguatezza, imparando che si danneggia il cervello. Un paio che viene in mente includono BASIC, FORTH e APL.

Per un caso più complicato, uno dei grandi informatici ha descritto questo problema, che ha affermato brevemente che la pratica rende permanenti e ci sono molte discipline che dovrebbero essere apprese prima di imparare i linguaggi informatici in modo che la lingua non distorca la comprensione più fondamentale . Nelle sue parole:

Gli strumenti che utilizziamo hanno un'influenza profonda e subdola sulle nostre abitudini di pensiero, e quindi sulle nostre capacità di pensiero.

L'avversario del solo tuffo nella programmazione si chiama Edsger Dijkstra e ha avuto una carriera molto distinta. Gli è stato assegnato l'ACM Turing Award con la seguente citazione:

Per contributi fondamentali alla programmazione come sfida intellettuale alta; per eloquente insistenza e dimostrazione pratica che i programmi dovrebbero essere composti correttamente, non solo debuggati nella correttezza; per illuminare la percezione dei problemi alla base della progettazione del programma.

L'articolo in cui esplode l'apprendimento prematuro dei linguaggi di programmazione è:

"Sulla crudeltà di insegnare davvero l'informatica" http://www.cs.utexas.edu/users/EWD/ewd10xx/EWD1036.PDF

Inoltre, per favore non darmi fuoco, sono solo il messaggero.


"Ho iniziato con BASIC e sono stato sfregiato per tutta la vita" - questo tipo di confutare il tuo punto? Se tu fossi stato introdotto ad altri linguaggi di programmazione all'inizio, BASIC non avrebbe avuto un impatto così forte?
tdammers,

Immagino di aver bisogno di un'emoticon. Se aiuta, ho eliminato quella frase.
Sviluppatore:

3

È mai troppo presto per imparare una nuova lingua?

Direi di si. Se stai ancora avvolgendo la testa sul concetto stesso che il computer potrebbe effettivamente fare ciò che dici, l'apprendimento di una seconda lingua probabilmente ti confonderà.

Ma se hai superato il punto in cui ti rendi conto che il computer fa esattamente quello a cui gli dici, non importa quanto sia stupido, allora è probabile che tu abbia una comprensione abbastanza ragionevole della tua prima lingua che guardare un secondo (e un terzo) !) la lingua non rompe la tua attenzione.


2

Non puoi fare entrambe le cose ?? Farei un progetto in C ++ e imparerei bit di Python (solo perché è fantastico), potresti risolvere i problemi su ProjectEuler.net usando Python

In generale, penso che sia una cattiva idea imparare una lingua, lasciarla e iniziare a impararne una nuova. Uno dovrebbe essere flessibile lavorando con diversi paradigmi nelle prime fasi. Ma è proprio quello che penso.


ProjectEuler.net sembra fantastico! Grazie per la raccomandazione
Anticipazione

2

A un programmatore praticante direi senza riserve che imparare una nuova lingua non è quasi mai una cattiva idea. A uno studente universitario, vorrei sollecitare un po 'di cautela, a seconda di quali lezioni stanno arrivando. Il motivo è che in un esame scolastico spesso devi recitare i dettagli della lingua senza il beneficio di un ambiente di compilazione / esecuzione che evidenzierà facilmente i tuoi errori.

Soprattutto quando hai solo pochi mesi di esperienza, è molto facile confondere i dettagli nella tua mente. Se ti preoccupi dei tuoi voti e stai seguendo un corso con esami del genere, starei attento. Nel mondo reale, non è una preoccupazione.

modifica : inizialmente ho detto la sintassi, ma i dettagli non sintattici sono altrettanto importanti per i professori, e ce ne sono molti di più.


Se come studente non ricordi le differenze tra la sintassi tra le lingue, hai un problema. Non avrai sempre un compilatore per controllare la tua sintassi, ci sono alcune situazioni molto reali in questo campo, dove devi essere in grado di richiamare la sintassi sul posto.
Ramhound,

Non sto dicendo che è impossibile ricordare, solo che lo rende molto più difficile per un principiante. Le grandi differenze sintattiche sono abbastanza facili, ma i professori possono essere fastidiosamente pignoli su dettagli come append()vs. push_back()per un elenco, che è qualcosa che anche i programmatori esperti devono cercare se non hanno usato una certa funzione in una certa lingua per un po '. Essere in grado di richiamare la sintassi sul posto indubbiamente aiuta, ma per la stragrande maggioranza dei lavori non è mai necessario .
Karl Bielefeldt,
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.