Sembra che uno debba ricordare tutti i tipi di sintassi per essere in grado di programmare. Se uno non ha una buona memoria per ricordare i nomi, sarà più difficile imparare a programmare?
La sintassi di una lingua non è così difficile come pensi di ricordare, se la usi quotidianamente. Alla fine diventa molto facile. Ricordare tutte le varie funzioni della libreria potrebbe essere molto più difficile e non credo che la maggior parte delle persone possa ricordare più delle più comuni che usano, ma va bene se si ha accesso al Web, a un libro o qualcos'altro che " ricorda "tutti gli altri dettagli per te.
It seems one has to remember all sorts of syntax to be able to
programspeak a natural language.If one don't have a good memory for remembering
nameswords, will it be more difficult to learn toprogramspeak?
Non può essere vero che le persone hanno una funzione "naturale" con le lingue, vero?
Non può essere vero che abbiamo hardware neurale di basso livello solo per acquisire le lingue, vero?
La programmazione utilizza linguaggi artificiali che seguono molte delle regole dei linguaggi naturali.
I linguaggi naturali hanno una piccola più flessibilità rispetto ai linguaggi di programmazione.
grammatica di ancora severa. le regole ci sono molto, ma
Se riesci a parlare, puoi imparare a programmare senza memorizzare nulla di più di ciò che hai memorizzato quando hai imparato a parlare.
Se stai parlando di memoria a breve termine, allora si . un programmatore deve essere in grado di manipolare più bit di informazioni contemporaneamente durante la programmazione / risoluzione dei problemi.
Se stai parlando di memoria a lungo termine allora not in realtà. Ci sono molti manuali e riferimenti + strumenti che possono aiutare in modo significativo nel richiamare informazioni. Certamente memorizzare queste informazioni a lungo termine ti renderà uno sviluppatore più veloce (nel complesso), ma non è un prerequisito.
Una buona memoria è assolutamente essenziale, ma non per ovvi motivi.
Ricordare dettagli su specifici algoritmi, librerie, nomi di variabili e simili è molto utile, ma non è molto importante. Hai Google, DuckDuckGo, pagine man, documentazione specifica per lingua e editor intelligenti per aiutarti con tutto quanto sopra. Aiuta se non hai bisogno di fare affidamento su queste stampelle, ma ti capita bene se ne hai bisogno di tanto in tanto.
Dove la memoria è essenziale è mantenere i dettagli di ciò su cui stai lavorando nella memoria attiva a breve termine. Essere in grado di visualizzare il design, il flusso di dati, gli algoritmi, le strutture dati e il modo in cui interagiscono per fare qualunque cosa sia il tuo prodotto separa il programmatore OK dal grande programmatore. Quando lo fai attivamente, ti sembra di riuscire a destreggiarsi con un gigantesco numero di palline mentre monti un monociclo.
Questo viene spesso definito come la zona . Interruzioni, domande stupide, i boss che hanno bisogno di rapporti TPS ti fanno scappare da questa zona.
Migliore è la memoria, più facile è entrare nella zona, più facile è rimanere lì e più facile è rientrarvi dopo un'interruzione.
Se hai problemi con questo tipo di memoria, ti suggerirei di apprendere tecniche di meditazione e trucchetti di memoria più facile diventa la tua memoria, maggiore sarà il successo che avrai come programmatore.
Ho intenzione di andare contro il flusso e di dire sì . Un buon ricordo è una risorsa fantastica come programmatore. La mia memoria l'ho sempre vista come responsabilità di programmazione, quindi ho raccolto alcuni trucchi per compensare il mio handicap:
Dovresti essere in grado di ricordare come questa variabile (che hai usato prima di 3 righe) è stata digitata. Se non puoi imparare ad usare Intellisense (o qualsiasi altra forma di completamento automatico è nell'editor o nell'IDE).
Dovresti essere in grado di ricordare velocemente cosa stavi facendo l'ultima volta che hai lavorato a questo progetto. Questo potrebbe essere stato giorni fa, potrebbe essere stato poco prima di pranzo. Se non puoi, impara a scrivere cose . Mantieni un notebook al tuo fianco e scrivi ciò che stavi facendo (o che stai facendo), gli elementi TODO e tutto ciò che devi ricordare su come il codice corrente su cui stai lavorando combaci.
Il debug e il controllo qualità sono difficili. Idealmente dovresti tenere un taccuino molto dettagliato sui passi che hai compiuto quando provi a riprodurre un bug o eseguire il debug di qualcosa. Questo è qualcosa che so che dovrei fare, ma con cui devo ancora lottare.
Spero che questo aiuti!
Guerrilla Guide to Interviewing (versione 3.0) è un riferimento comune che rileva essere intelligenti e fare le cose sono i punti importanti della programmazione. Smart include alcune capacità di memoria, ma non necessariamente quanto si possa pensare.
Intellisense può essere di grande aiuto quando si tratta di sintassi se si desidera un aiuto su questo aspetto. Sapere come impari in modo da poter applicare rapidamente ciò che impari in modo significativo è più importante di essere in grado di rispondere alle domande di banalità.
Credo che ricordare i nomi sia una funzione cognitiva piuttosto diversa dal ricordare processi diversi dal ricordare i vocabolari. Ci sono stati casi di persone che hanno ricevuto lesioni cerebrali che hanno completamente rimosso la capacità di ricordare i nomi pur essendo in grado di funzionare perfettamente bene altrimenti.
Quindi direi che è la capacità di ricordare i nomi non correlati all'apprendimento dei linguaggi di programmazione.
Tuttavia, sarebbe utile poter ricordare schemi, regole e vocaboli logici.
No. La profondità della memoria degli strumenti (Intellisense, Google, compilatori, generatori di codice) è infinita rispetto alla memoria umana. Quindi il programmatore con una buona memoria non è molto meglio di uno con un buco nella testa.
Ciò di cui i programmatori hanno realmente bisogno è "la velocità di picco della messa a fuoco" quando passano da un livello all'altro di astrazione. Più velocemente puoi, meglio sei come programmatore. Alcuni hanno una frequenza cardiaca come 500 ms, con l'arrivo della prima ondata di sangue al cervello che sei concentrato. Alcuni hanno un orologio di messa a fuoco arrotondato al ciclo di fumare, circa 2 ore. Alcuni hanno bisogno di fare la doccia mattutina, quindi circa 24 ore. ecc. La differenza tra programmatore buono e cattivo è stata dichiarata una volta, 1:80 volte anni fa, e il divario è solo in crescita.
No, devi solo capire come funziona Google per ottenere quello che vuoi
Ho una memoria orribile, ma le mie competenze su Google sono fantastiche ^ _ ^
In tutta serietà, finché sai dove trovare la sintassi, non devi ricordarlo. Questo è ciò che intellisense, file di aiuto, guide di riferimento, Internet, ecc. Sono per.
Prima di tutto, imparare a programmare è difficile per tutti. Avere una buona memoria aiuta sono sicuro. Ma la dedizione e l'amore per l'apprendimento permanente sono più preziosi. La sintassi dell'apprendimento è come ogni altra cosa, la ripetizione.
Non c'è nulla di magico o sovrumano nell'abilità di programmazione. Spendi solo circa 10.000 ore su di esso ... e sarai un maestro come qualsiasi altra abilità. Ovviamente, sono 10.000 ore di allenamento, non ripetendo ciecamente e in modo insensato gli errori del passato.
Hai scritto questo post in inglese, con una sintassi corretta. Chiaramente sei in grado di ricordare come usare una lingua. Hai solo bisogno di imparare una nuova lingua e usarla abbastanza spesso da essere sempre corretta. A differenza dei linguaggi orientati all'uomo, i linguaggi di programmazione per computer ti informano sempre quando hai utilizzato una sintassi errata, quindi è in realtà più semplice. : -)
Sono d'accordo sul fatto che ci sia una grande varietà di cose che un programmatore medio potrebbe conoscere per svolgere i suoi compiti, basti pensare a tutte le parole, sintassi, tecniche che dovresti fondamentalmente controllare per costruire un semplice sito web (front end: html , css, javascript (puoi contare anche alcuni framework Js come jquery), ajax, sul back-end: Php o ASP o ASP.Net, e non dimenticare di basi di dati, mySql o SqlServer o Oracle o MongoDB, ecc.). C'è un enorme elenco di lingue, paradigmi, sintaxie, schemi, ecc., È impossibile ricordare tutto di loro.
Pensa che ciò che rende un buon programmatore è la pratica, pratica con algoritmi più che con le lingue, e con questo alla fine ricorderai le cose che usi più spesso, per il resto, c'è sempre google = P
Una grande memoria può tagliare in entrambi i modi.
Se riesci a destreggiarti dozzine di informazioni nella tua testa in una volta, avrai molto più tempo a capire (e, auspicabilmente, riscrivere) quell'orribile codice legacy che è fondamentale per il progetto, ma così complicato che tutti altrimenti ha paura di toccarlo.
D'altro canto, quell'orribile codice di codice che è fondamentale per il progetto ma così complicato che tutti gli altri hanno paura di toccarlo è stato probabilmente scritto da qualcuno con un'incredibile capacità di destreggiarsi tra dozzine di informazioni. Se hai un bel ricordo, lavora molto duramente per coltivare un apprezzamento per l'eleganza della semplicità.
Imparare la sintassi di un linguaggio di programmazione non richiede una grande memoria. Come altri hanno già detto, la sintassi è rinforzata nella memoria così tanto da diventare rapidamente una seconda natura. Hai mai dimenticato da che parte della strada dovresti guidare? Quali simboli aritmetici rappresentano addizione e sottrazione? In caso contrario, potrai padroneggiare le parti più comuni della sintassi della lingua scelta senza troppi problemi e puoi cercare i bit meno comuni quando vengono visualizzati.
Alcune librerie hanno centinaia o migliaia di funzioni, classi e / o metodi. Sembrerebbe a un estraneo come un compito impossibile imparare a usare tutte quelle funzionalità. Ma c'è quasi sempre una struttura sottostante alla libreria. Invece di cercare di ricordare tutte quelle funzioni, un programmatore intelligente cerca di capire come è organizzata la libreria e cosa può fare. Fatto ciò, di solito è abbastanza semplice trovare la funzione che ti serve quando ne hai bisogno.
In breve, la memoria è molto meno importante della comprensione.
Dipende. All'interno di Java e .NET le librerie standard sono in una sorta di gerarchia e sono ben documentate. Pertanto, se sai di avere a che fare con il networking, vai su system.net in C # e da lì puoi visualizzare gli oggetti / le chiamate che ti servono. Quindi da questo punto di vista non è necessario memorizzare i dettagli e lì.
Nel tuo programma, tutto dipende da come organizzi / dai il nome alle cose. Se stai usando nomi come $, b $, c $ ... o g $ da Base vecchio, allora buona fortuna. se tu dai un nome alle cose come pensi a loro come FirstName, LastName è molto più facile. Molte lingue hanno standard di denominazione che aiutano pure. Ad esempio, in Java esiste una convenzione di setX, getX per ottenere / impostare attributi specifici di una classe e convenzioni di maiuscole. Quindi, se sai che una persona ha nome, allora probabilmente è chiamata firstName e getter / setter probabilmente getFirstName e setFirstName ..... Quindi quelle convenzioni aiutano molto ...
Anche metodi / funzioni più brevi ti aiutano a tenere un po 'di meno nella tua testa in una volta. E l'uso di nomi propri ti aiuta a non aver bisogno di andare a cercare. Ad esempio, se dai un nome alle cose per quello che fanno, allora leggendo una procedura che chiama getMaximumValue probabilmente non avrai bisogno di leggere getMaximumValue per capire cosa fa ... Ma man mano che le funzioni / i metodi diventano più lunghi e più nidificati, allora una memoria migliore sicuramente aiuta.
La memoria non è poi così importante. Se sei preoccupato per questo, di solito dimentico il mio portafoglio o le chiavi di casa mia al mattino. Chiaro tutti con il nome sbagliato almeno una volta (compresa la mia famiglia e la mia ragazza). Semplicemente mi dimentico di fare sempre cose in casa.
Alla fine della giornata i principi della programmazione saranno ancora nella tua testa, proprio come "non dimentichi mai come andare in bicicletta". Dettagli specifici e dettagli di implementazione non sono poi così importanti. Puoi sempre Google quelli.
Da Joel On Software sulla produttività di un programmatore -
Productivity depends on being able to juggle a lot of little details in short term memory all at once.
Quindi, la memoria a breve termine è molto importante per un programmatore che ha un compito critico.
Ma non credo che la memoria a lungo termine sia così importante.
Da una rapida lettura, non ho visto nessuno parlare di memoria nel senso generale della programmazione piuttosto che un compito singolare di scrivere un programma.
La memoria è utile per due cose:
Ricordando le semantiche / librerie di base:
Questo è facilmente soppiantato dalla ripetizione e da Google. IOW, la quantità di memoria con cui sei nato deve essere ridicolmente bassa per non essere in grado di superare questo problema.
Ricordare il contesto nei grandi programmi:
Ecco dove si trova il trucco. Man mano che i programmi diventano più grandi (e si diventa senior), le decisioni che prendi si riferiscono totalmente alla quantità di conoscenza del sistema e alla possibilità di recuperarlo in pochi millisecondi se deve essere utile in discussioni di progetto, debugging, reagire alle emergenze operative, ecc. Quando arriva il momento critico, nessuna quantità di documentazione / voci wiki può aiutarti - il tuo "mago" del team sarà la tua unica opzione. Questo è uno dei motivi per cui i principali ingegneri sono valutati / pagati così tanto. Molti di loro potrebbero non passare tutto il loro tempo a codificare a questo punto, passano più tempo a rimanere aggiornati con l'immagine completa e ad applicarla per eventuali problemi / miglioramenti. I buoni restano in contatto facendo una tonnellata di CR e un cambio di codice qua e là / prototipazione di nuove versioni.
IOW, puoi essere un programmatore ragionevole con il numero 1 da solo, ma se vuoi essere il prossimo Linus, è meglio avere un sacco di memoria, almeno sufficiente a comprendere il problema che stai risolvendo.
Dalle mie osservazioni, potrei persino dire che la memoria di lavoro è quasi direttamente proporzionale al valore della persona.
Un piccolo disclaimer da riassumere: se hai una memoria Eidetic ma una potenza intellettiva pari a zero / bassa nell'applicare quella logica, non sarai più adatto a un progetto di una fotocamera.
Se hai difficoltà a ricordare i nomi delle persone che incontri, potresti comunque diventare un ottimo programmatore.
Ho dimenticato i nomi delle persone tutto il tempo. Sono un programmatore senior con quasi un decennio di esperienza. Nel mio caso, la mia terribile memoria uditiva è compensata da una grande memoria visiva.
Anche così, il requisito essenziale per un buon programmatore è la capacità di astrazione. Non importa quanto o quanto poco puoi ricordare, se non puoi capire il concetto di una variabile e come usarla in un programma, non diventerai un buon programmatore.
Il mio suggerimento è di provare un breve corso di programmazione o di completare il tutorial di Python per vedere come ti piace.
Questo dovrebbe darti una buona idea se la programmazione è una carriera che potresti essere interessata a perseguire.
Dico SÌ enfatico!
Attualmente sto imparando JAVA & C #. Tutti i test sono closed book, quindi per JAVA è tutto il 100% dalla memoria che codifica tutte le applicazioni negli esami.
Inoltre, sta diventando più difficile & Più strong. Sono al punto in cui ora ho bisogno di iniziare a usare trucchi di memoria come mnemonici, ecc.
Direi un QI elevato, una buona conoscenza generale, un buon vocabolario, un polimismo, conoscenze matematiche più elevate, tocco e amp; buona memoria sono tutte risorse per un programmatore.
Conosco programmatori molto intelligenti che non possono toccare il tipo o fare matematica superiore, ecc. Lo hanno fatto, potrebbero essere molto meglio.
Leggi altre domande sui tag learning