Come posso assicurarmi di imparare davvero a programmare piuttosto che imparare semplicemente i dettagli di una lingua? [chiuso]


82

Ho sentito spesso che un vero programmatore può facilmente imparare qualsiasi lingua in una settimana. Le lingue sono solo strumenti per portare a termine le cose, mi hanno detto. La programmazione è la massima abilità che deve essere appresa e padroneggiata.

Come posso assicurarmi di imparare davvero a programmare piuttosto che imparare semplicemente i dettagli di una lingua? E come posso sviluppare competenze di programmazione che possono essere applicate a tutte le lingue anziché a una sola?


25
Prova ad imparare un'altra lingua. Cerca di risolvere i problemi che sai già come risolvere nella tua prima lingua nella tua nuova lingua. Non sarà facile all'inizio. Ma saprai che stai imparando una volta che risolvere i vecchi problemi in un modo nuovo diventa notevolmente più semplice (nota: questo potrebbe richiedere un po 'di tempo).
FrustratedWithFormsDesigner,

42
Inoltre, le persone che affermano di essere in grado di imparare una lingua in una settimana devono definire cosa significano quando dicono "Impara". "What do you mean you're not an expert in LanguageX?!? I can learn a language in a Week!". 1 settimana dopo:"See, I've learnt the language, and here's a Hello World example I copied from Wikipedia to prove it!"
JohnL

9
È necessario porre una domanda. Costruisci la tua logica in sintassi o usi un modello mentale più veloce ed efficiente? Trovo che i programmatori alle prime armi tendano a pensare usando la sintassi.
ChaosPandion,

10
@PaulR: Non mi ci sono volute 10.000 ore per imparare ad andare in bicicletta. O nuotare, del resto.
Robert Harvey,

7
@PaulR Il proverbio dice che ci vogliono 10k ore per padroneggiare un'abilità, non semplicemente per "impararla"
Tobias Kienzler,

Risposte:


96

Non preoccuparti di incontrare qualche ridicolo concetto di "abilità" così comunemente sentito in affermazioni come:

  • Tutti i linguaggi di programmazione sono sostanzialmente gli stessi.
  • Dopo aver imparato bene una lingua, puoi scegliere qualsiasi altra lingua in modo rapido e semplice.
  • Le lingue sono solo strumenti, c'è un po 'di magia del cervello che rende davvero il software.

Queste dichiarazioni sono tutte basate su una premessa errata e tradiscono la mancanza di esperienza in uno spettro più ampio di linguaggi di programmazione. Sono dichiarazioni molto comuni e fortemente credute da una grande fascia di programmatori, non lo contesterò, ma contesterò la loro precisione.

Ciò è dimostrato semplicemente: trascorri una settimana (o in realtà qualsiasi periodo di tempo superiore a un paio di giorni) cercando di imparare i fondamenti di Haskell , Prolog o Agda . Presto inizierai a sentire la vecchia canzone di Sesame Street che ti viene in mente "Una di queste cose non è come le altre ...".

A quanto pare, esiste un'intera serie di linguaggi di programmazione, tecniche e approcci che sono così estranei a ciò che il 95% di noi fa o ha mai fatto. Molti sono completamente inconsapevoli dell'esistenza di uno qualsiasi di questi altri concetti, il che va bene e questi concetti non sono necessari per essere un programmatore impiegato e persino efficace.

Ma il fatto rimane: queste tecniche e questi approcci esistono, sono buoni per molte cose diverse e possono essere molto utili, ma non sono proprio come quello a cui sei abituato e le persone non possono semplicemente prenderli con un pomeriggio di violinismo.

Inoltre, direi che la maggior parte dei casi in cui le persone affermano di avere o di poter imparare cose complesse come i linguaggi di programmazione così in fretta come una settimana, soffrono di un po 'di Dunning Kruger Effect , Wikipedia (sottolineatura mia):

L'effetto Dunning-Kruger è un pregiudizio cognitivo in cui individui non qualificati soffrono di superiorità illusoria, erroneamente valutando la loro capacità molto più alta della media. Questo pregiudizio è attribuito a un'incapacità metacognitiva dei non qualificati di riconoscere i loro errori.

Vorrei riferire le persone a questa visione più esperta sul concetto di imparare a programmare di Peter Norvig: impara a programmare in dieci anni .

I ricercatori (Bloom (1985), Bryan & Harter (1899), Hayes (1989), Simmon & Chase (1973)) hanno dimostrato che occorrono circa dieci anni per sviluppare competenze in una vasta gamma di settori, tra cui il gioco degli scacchi, la musica composizione, operazione telegrafica, pittura, pianoforte, nuoto, tennis e ricerca in neuropsicologia e topologia. La chiave è la pratica deliberativa: non solo farlo ancora e ancora, ma sfidare te stesso con un compito che è appena al di là delle tue attuali capacità, provarlo, analizzare le tue prestazioni mentre e dopo averlo fatto, e correggere eventuali errori. Quindi ripeti. E ripeti ancora.


Sicuramente, esiste una serie di principi generali che renderanno tutte le lingue facili da imparare!

Forse, ma direi che questo insieme di principi è così ampio che quasi sempre ci saranno lingue fuori dalla portata di una settimana. Man mano che aggiungi nuovi concetti all'elenco che ti è familiare e a tuo agio, questo elenco di lingue al di fuori della tua portata immediata potrebbe ridursi, ma faccio fatica a credere che sparirà mai. L'elenco di approcci informatici concettuali alle cose è così ampio che è sconcertante, dalle lingue concatenative alle lingue basate su vettori alle lingue specializzate in AI o metaprogrammazione ( o lingue che esistono interamente per supportare espressioni regolari ).

Dopo dieci anni sarai in grado di programmare in generale. Ciò significa che puoi scrivere un codice abbastanza decente in alcune lingue o stili di lingue. Quindi dopo 10 anni sei pronto per iniziare ad affrontare questi innumerevoli concetti trasversali per il resto della tua vita, e a meno di essere Edsger W. Dijkstra , Donald Knuth o John D. Carmack , non riuscirai a raggiungere tutti di loro.


11
Enh. C'è una differenza tra "conoscere" una lingua ed essere abbastanza abile da scoprire e correggere un bug minore in una. Un buon programmatore può fare quest'ultimo abbastanza rapidamente, anche in lingue arcaiche.
Telastyn,

5
@ CharlesE.Grant Penso che tu sopravvaluti ciò che la maggioranza impara al college, anche quanto tempo ci vuole per diventare anche semi-competenti in una lingua come Haskell o Prolog. Direi che un ingegnere esperto del settore, senza esperienza di programmazione funzionale, impiegherebbe molto più di una settimana per risolvere il suo primo bug in un programma Haskell.
Jimmy Hoffa,

11
Direi ancora che l'insieme di concetti fondamentali è piuttosto compatto. Una volta che hai capito il termine riscrittura , hai uno strumento per definire il calcolo lambda, il calcolo SK, la macchina di Turing, l'algoritmo Markov, ecc. Un piccolo numero di idee veramente fondamentali può coprire la maggior parte dell'informatica. Ma, naturalmente, è necessaria esperienza per poter vedere i modelli semplici in cose apparentemente complesse.
SK-logic,

4
Direi che non è tanto l'effetto Dunning-Kruger, quanto semplicemente supporre che "linguaggio di programmazione" = "linguaggio di programmazione in stile c". Dopo aver appreso una discreta quantità di c ++, una discreta quantità di C # e alcune macchie di perl e python, mi aspetto di poter diventare abbastanza fluente in Java, PHP, ecc. In una settimana. Non necessariamente esperto, ma almeno abbastanza fluente. Ho fatto Raccolgo javascript in pochi giorni. A quel punto, si tratta principalmente di imparare le differenze tra loro. Nota: la lingua più popolare del mondo reale è simile al c. Lo stesso non sarebbe necessariamente vero, diciamo, per Prolog.
neminem,

2
@WayneWerner Seriamente, la differenza tra le lingue Haskell o Prolog e algol è molto più che sintassi, stai solo perpetuando il mito. Fai il mio test sopra: trascorri una settimana cercando di imparare Haskell e vedi come funziona per te. Onestamente, sarà un bene per te, molto da imparare da farlo.
Jimmy Hoffa,

51

... come posso sviluppare competenze di programmazione che possono essere applicate a tutte le lingue anziché a una sola?

La chiave di questa domanda è di trascendere la lingua e pensare non nella lingua in cui stai codificando.

WAT?

Programmatori poliglotta esperti pensano nell'albero di sintassi astratto (AST) del proprio modello mentale del linguaggio. Non si pensa "Ho bisogno di un ciclo for qui", ma piuttosto "Ho bisogno di fare il loop su qualcosa" e si traduce in quello nel modo appropriato, o while, o iteratore o ricorsione per quella lingua.

Questo è simile a quello che si vede nell'apprendimento di una lingua parlata. Le persone che parlano fluentemente molte lingue pensano il significato e viene fuori in una determinata lingua.

Si può vedere qualche indizio di questo AST nella coppia di video di eyetrack Comprensione del codice con Eye Tracking e Eye-Tracking Code Experiment (Principiante) in cui vengono osservati i movimenti dell'occhio di un principiante e programmatore esperto. Si può vedere il programmatore esperto 'compilare' il codice nel loro modello mentale ed 'eseguirlo' nella loro testa, mentre il principiante deve scorrere la parola chiave codice per parola chiave.

Pertanto, la chiave della questione dello sviluppo delle capacità di programmazione da applicare a tutte le lingue è quella di apprendere più lingue in modo da poter prendere le distanze dall'avere il modello mentale di una lingua e sviluppare la capacità di generare l'AST per un problema da soli in una lingua principale che viene quindi tradotta in una determinata lingua.

Una volta che si ha questa capacità di usare l'AST nella testa, imparare un'altra lingua all'interno di una scuola di pensiero simile (andare a Befunge è un po 'un salto da Java, ma non tanto da Forth ) diventa molto più facile - è "solo" tradurre l'AST in una nuova lingua che è molto più facile il 3 °, 4 ° e 5 ° tempo (ecc ...).


C'è un articolo classico, I veri programmatori non usano Pascal . Parte di questa legge:

... il programmatore reale determinato può scrivere programmi Fortran in qualsiasi lingua

Ci sono anche bit per i quali non puoi semplicemente usare l'AST mentale: devi anche pensare nella lingua. Questo richiede un po 'di tempo per essere realizzato (sono ancora accusato di scrivere il codice Perl in Python e il mio primo codice Lisp è stato rivisto dicendo "Questo è un ottimo programma C.").

Per questo, devo sottolineare un articolo pubblicato da ACM, How Not to Write Fortran in Any Language . Il terzo paragrafo dell'articolo (che non contiene le virgolette iniziali) affronta direttamente la domanda attuale:

Esistono caratteristiche di buona codifica che trascendono tutti i linguaggi di programmazione generici. Puoi applicare un buon design e uno stile trasparente in quasi tutti i codici, se ti applichi ad esso. Solo perché un linguaggio di programmazione ti consente di scrivere un codice errato non significa che devi farlo. E un linguaggio di programmazione che è stato progettato per promuovere il buon stile e il design può ancora essere usato per scrivere codice terribile se il programmatore è sufficientemente creativo. Puoi annegare in una vasca da bagno con un centimetro di acqua e puoi facilmente scrivere un programma completamente illeggibile e non mantenibile in una lingua senza goto o numeri di riga, con gestione delle eccezioni e tipi generici e raccolta dei rifiuti. Sia che tu stia scrivendo Fortran o Java, C ++ o Smalltalk, puoi (e dovresti) scegliere di scrivere un buon codice anziché un cattivo codice.

Non è sufficiente avere l'AST - è necessario avere l'AST che si può tradurre in altre lingue. Avere un AST Fortran in testa e scrivere il codice Fortran in Java non è una buona cosa. Bisogna anche avere abbastanza familiarità con la lingua e i suoi modi di dire per essere in grado di pensare nella lingua (nonostante ciò che ho detto all'inizio).

Ho visto il codice Java scritto da qualcuno che non aveva smesso di scrivere il codice C. C'era un oggetto con un metodo principale. In questo oggetto c'erano un sacco di metodi statici chiamati da maine classi interne private che avevano campi pubblici (e quindi assomigliavano molto a puntoni). Era un codice C scritto in Java. Tutto ciò che è stato fatto è stato tradurre la sintassi di una lingua in un'altra.

Per superare questo punto, è necessario continuare a scrivere codice in più lingue, non pensare in quelle lingue durante la progettazione del codice, ma pensare in esse quando si traduce la progettazione nel codice per funzionare correttamente con gli idiomi della lingua.

L'unico modo per arrivarci - essere in grado di sviluppare competenze di programmazione che possono essere applicate a tutte le lingue - è continuare a imparare le lingue e mantenere flessibile quella lingua di programmazione mentale piuttosto che legata a una lingua.

(Mi scuso con ChaosPandion per essermi indebitato pesantemente dall'idea che ha presentato .)


3
Non c'è bisogno di scusarsi. Penso che tu abbia scritto una risposta impressionante.
ChaosPandion,

Volevo dare credito alla persona che mi ha fatto pensare in quella direzione per scrivere la risposta.

3
Questa è una molto buona risposta. Vorrei poter votare due volte.
Wayne Werner,

2
In realtà questo è esattamente il motivo per cui non dovresti imparare prima OO, in quanto formatta il tuo cervello con uno dei peggiori AST immaginabili.
Morg.

1
@JimmyHoffa - Potresti avere ragione. Inizialmente ho sempre insegnato usando una lingua e lentamente introducendo più avanti. Penso comunque che valga la pena di essere esplorato perché posso sempre frenare e concentrarmi su una lingua. (SML sembra davvero una buona scelta.)
ChaosPandion,

12

Scegli una lingua e inizia a scrivere codice. Python è una buona scelta per un principiante e ci sono tutorial online disponibili , in modo che tu possa imparare come farlo correttamente.

Tutto segue da quello. I tuoi interessi ti porteranno a quadri e concetti di design che aggiungeranno raffinatezza ai tuoi programmi. Scoprirai che ci sono corsi online che puoi seguire che ti radicano nei fondamenti e nella teoria, e che ci sono diversi paradigmi di programmazione che puoi esplorare, e così via.

E sì, scoprirai lingue come Haskell che ti insegneranno qualcosa di nuovo, una volta che avrai una solida base nei fondamenti.

Alcuni programmatori probabilmente pensano che tutte le lingue siano uguali perché non sono state esposte a nessuno che le faccia pensare diversamente. Tutte le lingue più comunemente usate sono derivate dall'Algol (sono essenzialmente lingue procedurali) e, di quelle, la maggior parte sono lingue a parentesi graffe simili a C. Tutte fanno essenzialmente le stesse cose, sebbene alcune con più raffinatezza di altre.


2
Questo non è proprio vero però? Alcuni linguaggi di programmazione codificano tutto come funzioni pure (comprese decisioni + loop). Altri possono essere modellati spingendo e facendo scoppiare oggetti da set, ecc.
Ecc

1
Cosa non è vero? Devi imparare a gattonare prima di poter camminare o correre.
Robert Harvey,

1
Ah, dovrei specificare, intendevo l'ultimo paragrafo, sono d'accordo con il resto della risposta
jozefg,

1
Ho sostituito l'ultimo paragrafo con uno che riecheggia meglio il mio sentimento.
Robert Harvey,

5

La programmazione riguarda la risoluzione dei problemi in modo tale che la soluzione possa essere espressa in una grammatica così limitata da poter essere implementata con un linguaggio di programmazione. L'arte della programmazione è quindi l'arte di risolvere i problemi.

Alcuni linguaggi invitano altri paradigmi di programmazione come orientamento agli oggetti, event driven, multi-thread e MVC basato su framework. Questi sono solo modelli e modelli e non hanno nulla a che fare con l'implementazione.

Se riesci a sederti e risolvere un problema su carta in modo tale che possa essere facilmente tradotto in codice e associato a un modello appropriato per la tua piattaforma, allora sei un programmatore. Se tutto ciò che puoi fare è prendere quelle soluzioni e implementarle nella lingua prescelta, allora è un'altra questione.

Sto programmando da 30 anni (OMFG!) E continuo php.neta cercare i comandi in PHP perché non è la mia prima lingua.

Direi che l'esperienza nelle lingue è inversamente proporzionale alla frequenza con cui guardi il manuale o lo stackoverflow. La competenza nella programmazione è la risoluzione dei problemi in modo compatibile con i linguaggi di programmazione del computer.

Nelle notizie correlate, ho imparato Ruby la scorsa settimana. Anche se non sono un "esperto", posso risolverti un problema che potrei scrivere in Perl, diciamo, e poi passare un'età a tradurlo in Ruby mentre lo imparo ancora.


Il tuo commento è il primo che ho letto su modelli e modelli! Sono al 100% con il tuo commento, una cosa è ottenere una lingua e iniziare a fare un programma. Un altro è pensare al problema e trovare gli strumenti appropriati per risolverlo, quindi inizi a cercare una lingua e inizi a programmare.

3

Penso che, come in ogni altra cosa, la pratica rende perfetti. Non limitarti a fare sempre la stessa cosa o usare sempre la stessa lingua e continuare a imparare cose su ogni progetto.

Penso che puoi facilmente tracciare un parallelo con qualcosa come imparare a suonare una chitarra. Qualsiasi bravo musicista può imparare a suonare una nuova canzone in un periodo di tempo molto breve, perché conoscono già tutti gli accordi e tutta la teoria alla base del perché gli accordi vengano suonati così come sono. Come ottengono quel bene? Hanno appena suonato così tante canzoni che tutti gli schemi si sono appena mescolati insieme, mentre allo stesso tempo hanno integrato le loro conoscenze con la teoria documentata effettiva che anche quegli schemi sottoscrivono.

Quindi forse puoi suonare alcune canzoni molto bene, ma non puoi deviare o raccogliere nuove canzoni rapidamente. Questo è probabilmente l'equivalente di un programmatore .NET che continua a creare ripetutamente la stessa applicazione CRUD , a un certo punto prova qualcosa di nuovo, aggiungi alcune chiamate al servizio web o un'interfaccia utente avanzata o scrivilo in una lingua completamente nuova. Quando colpisci un problema, scopri perché le cose accadono nel modo in cui accadono, fai domande su Stack Exchange, ecc. Alla fine, vedrai tutti gli schemi che si presentano continuamente e conoscono una parte della teoria di base e l'apprendimento di una nuova lingua non lo farà sembra quasi scoraggiante.


1

Non ho intenzione di sapere quanto tempo ci vuole per imparare una lingua o cosa significa imparare una lingua, invece affronterò il tuo problema reale: come determinare se hai imparato a programmare o hai imparato un linguaggio di programmazione .

Hai imparato a programmare se hai imparato a scomporre un problema in processi discreti e quindi a usarli per risolverlo. Hai imparato un linguaggio di programmazione se hai imparato la sintassi di una lingua e sai come regolare il funzionamento di un processo, quando implementato in quella lingua.

Questo non vuol dire che dovresti programmare in Fortan quando usi Lisp o sommare i valori di una colonna in una tabella in un db usando un cursore. Solo che la lingua è un dettaglio di implementazione. Uno che può cambiare i processi necessari, ma non la necessità di identificare e creare processi - alla fine c'è un'implementazione del mondo reale, con input / output e risultati desiderati.


1

La mia strategia è sempre stata quella di concentrarmi su abilità pure anziché su competenze specifiche.

Invece di imparare la sintassi speciale di Python (o di qualsiasi altra lingua) per qualunque cosa tu voglia fare, trascorri i tuoi cicli cerebrali risolvendo problemi astratti, come come risolvere al meglio ogni problema in quella categoria.

In questo modo, saprai cosa fare indipendentemente dalla lingua e possiederai per lo più abilità senza tempo che possono essere utilizzate per programmare in qualsiasi lingua.

Evita in particolare strumenti pieni di gotcha, come MySQL o linguaggi supposti, come Java, poiché qualsiasi cosa tu impari utilizzando questi strumenti avrà una grande proporzione di conoscenze specifiche degli strumenti che diventeranno inutili abbastanza velocemente.

Contrariamente a quanto è stato detto in molte risposte, NON ascoltare altri programmatori, sei un noob e non c'è modo di distinguere il falso dal vero affare, quindi è meglio prendere tutto con un cucchiaio di sale.

Vuoi fare domande in continuazione e accettare solo quando la soluzione è veloce, elegante e affidabile.


1
"NON ascoltare altri programmatori" - sì certo. "- Come faresti a sapere se hai scritto un codice leggibile e facilmente gestibile? - Il tuo peer ti dice dopo aver esaminato il codice. Motivazione: Non puoi determinarlo da solo perché conosci più l'autore di quanto il codice dica da solo. Un computer non posso dirti, per gli stessi motivi che non può dire se un dipinto è arte o no. Quindi, hai bisogno di un altro essere umano - in grado di mantenere il software - per guardare ciò che hai scritto e dare la sua opinione ... " ( fonte citazione )
moscerino

@gnat fai quello che vuoi. Ti sto solo dicendo che, dal momento che la maggior parte dei programmatori non può programmare merda, il loro feedback è potenzialmente dannoso e dovresti portare con te borse e buste di sale. Inoltre credo che "modificabile e leggibile dai deficienti" non è affatto un segno di qualità. Credi a quello che vuoi ma non andare in giro -1 solo perché le persone non sono d'accordo con la tua visione.
Morg.

il mio voto indica la valutazione della qualità della posta , non se io sia d'accordo o in disaccordo (accordo scritto, penso piuttosto che tu abbia un punto qui). Ho citato un'altra opinione non perché è opposta, ma perché ha una spiegazione solida (vedi "MOTIVAZIONE"). Se riesci a pensare a una spiegazione altrettanto solida per sostenere la tua opinione, prendi in considerazione la modifica del post per aggiungerlo
moscerino

qualunque cosa. contenuto> modulo. mantieni il tuo modulo, manterrò il mio contenuto.
Morg.

0

C'è l'approccio teorico. Impara come funzionano effettivamente i computer sotto copertura. Come le istruzioni di base del processore sono messe insieme per rendere più complesse le operazioni e le strutture che diamo per scontate nella terra della programmazione di alto livello.

Poi c'è l'approccio di programmazione più pratico. Il principale punto critico che le persone che affliggono di solito etichettati come "non buoni programmatori" è che conoscono davvero solo una lingua. E anche se conoscono gli altri, programmano in loro nello stesso modo in cui lo fanno con la loro lingua madre . È un ciclo che bisogna interrompere se vogliono davvero imparare a programmare. La risposta predefinita a questo è imparare almeno una lingua da ciascun paradigma di programmazione. Quindi impara un linguaggio OOP, un linguaggio funzionale, un linguaggio di scripting ... ecc. E per apprendimento non intendo imparare la sintassi . Si impara una lingua utilizzandola effettivamente per creare qualcosa.

Personalmente, quando voglio imparare una nuova lingua, uso i puzzle di Project Euler . Vado a un puzzle che ho già risolto in un linguaggio OOP (come esempio) e provo a risolverlo usando un linguaggio funzionale mentre cerco di seguire le migliori pratiche del nuovo linguaggio. Quando risolvi lo stesso problema usando due approcci fondamentalmente diversi non solo vedi quali sono le reali differenze, ma ti mostrano anche dove sono le aree comuni. Queste aree comuni che sono condivise da tutte le lingue è la vera programmazione , le differenze sono solo modi diversi per raggiungerlo.


4
Non definirei l'apprendimento del comportamento fisico di un computer un "approccio teorico", un "approccio teorico" sarebbe l'apprendimento della teoria, la lettura della tesi di chiesa e l'apprendimento dell'isomorfismo del curry howard, l'apprendimento del calcolo lambda e il basi della teoria dei numeri, queste sono basi teoriche. Non dire che la tua risposta è giusta o sbagliata, ma solo dire che mi riferirei a questo come l'approccio concreto non teorico perché manca di teoria.
Jimmy Hoffa,

@JimmyHoffa - Punti positivi!
Sistema

1
"Come le istruzioni di base del processore sono messe insieme (...)" sembra un'idea terribile per i principianti (OP non ha dichiarato di esserlo ma lascia supporre per ragioni. Insegnerebbe "micro-ottimizzazioni" senza insegnare come da ottimizzare (l'architettura in 3-5 fasi può essere considerata un po 'datata ...). Non fraintendetemi - l'affascinante CA - ma l'apprezzamento "corretto" richiederebbe parole come "fuori servizio" e "multiscalar", e probabilmente verrà dopo qualche esperienza di programmazione di base.
Maciej Piechotka,

0

Bene, la maggior parte delle cose che volevo dire è già stata detta. Quello che vorrei aggiungere è un'analogia molto semplice.

Se i linguaggi di programmazione sono considerati semplici strumenti, anche allora non c'è assolutamente alcuna logica nell'essere bravo in uno che rende bravo l'altro in un gioco da ragazzi.

Prendi in considerazione un gruppo di famosi spadaccini, improvvisamente mise giù le loro spade e se ne andò a combattere con le lance dopo 7 giorni di allenamento. Cosa succederebbe? Sarebbero massacrati.

Le lingue spesso non sono difficili da imparare, ma ci vuole pazienza ed esercizio fisico per essere bravi. Inoltre, non esiste un modo giusto per imparare la programmazione.

Imparare una programmazione è come giocare a un gioco di ruolo. A volte usi spade, a volte lance, a volte uno scudo. Ogni nemico che uccidi, ottieni punti esperienza. Una volta che hai abbastanza punti esperienza, sali di livello. Ora padroneggiare una spada non ti renderà eccellente con archi e frecce. Ma una parte dell'esperienza acquisita in precedenza aumenterà la tua resistenza e velocità.

Ecco un paio di cose che potresti voler fare quando impari una lingua.

  • Leggi la lingua. se ti sembra interessante prova da solo le app di Hello World.
  • Leggi alcuni tutorial, trucchi, blog.
  • Crea app semplici solo per divertimento.
  • Prova diverse funzionalità.
  • Se ti piace davvero, acquista alcuni libri e / o tutorial video.
  • Cerca buone biblioteche.
  • Cerca le risposte, chiedi solo se non riesci a trovare le risposte.
  • Aiuta gli altri a chiedere risposte (dove meglio di qui?)
  • Fai qualcosa di utile. Fare un'app calcolatrice può essere un buon esercizio, ma se crei un'app di elenco delle cose da fare e in realtà la usi sul tuo PC / telefono, la sensazione è 100 volte soddisfacente.

Sperimenta nuove lingue, esplora nuove biblioteche, apprendi nuovi trucchi per il tuo tempo libero. Prima di saperlo ti sorprenderai con la tua abilità.


0

Nel mio caso, imparo come programmare effettivamente attraverso quanto segue:

  1. Impara dai maestri. Ascolta i podcast di programmazione, leggi i blog professionali nel tuo argomento di programmazione preferito, leggi / guarda meravigliosi tutorial fatti dai guru sparsi su tutto il web e, infine, leggendo libri epici come The Pragmatic Programmer . Questo libro ha molte gemme di programmazione che sono state accumulate durante la carriera degli autori. Un modo sicuro per imparare a programmare effettivamente è sapere come lo fanno altri programmatori di successo.
  2. Esperienza facendo. Leggerlo e conoscere è una cosa, in realtà metterlo in pratica e farlo funzionare è un'altra. Non esiste insegnante migliore dell'esperienza, quindi indossa il tuo codice e inizia.
  3. Chiedi a qualcuno che lo sa. Proprio come stai facendo ora, non aver paura di chiedere le migliori pratiche o i modi migliori per fare cose dagli anziani nella tua squadra, o se sei abbastanza sfortunato da non avere accesso a detti anziani o mentori o guru, poi c'è ancora il resto di stackexchange e Internet da chiedere.

Inoltre, come hanno già detto i tuoi commentatori, non dimenticare di padroneggiare anche i tuoi strumenti. Imparare tutte le migliori pratiche e le più grandi teorie sono tutte inutili o saranno mal implementate se non si conosce abbastanza il proprio strumento, in questo caso un linguaggio di programmazione.


0

Penso che se riesci a pensare analiticamente, hai un buon inizio.

Impara qualsiasi lingua tu voglia e lavora te stesso attraverso una serie di esempi, ad esempio come presentati in quasi tutti i libri che insegnano la programmazione.

Quindi prova a risolvere i tuoi problemi. Prova a trovare soluzioni diverse e confrontale. Velocità e utilizzo della memoria sono fattori comunemente utilizzati che contano. Discuti le tue soluzioni con altri programmatori.

Leggi il codice di altri programmatori e cerca di capire perché hanno risolto il problema in questo modo.

Dovresti anche leggere alcuni libri sugli algoritmi per avere una panoramica sugli approcci standard. I nuovi problemi sono spesso modifiche di vecchi problemi.

Un sacco di pratica e lavorare con il codice anche in team ti aiuteranno ad aumentare le tue abilità passo dopo passo.

Spero che la mia opinione risponda alla tua domanda almeno parzialmente.

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.