Devo imparare schemi di progettazione o algoritmi per migliorare le mie capacità di pensiero logico? [duplicare]

4

Quando si avvia un'attività di programmazione, ho difficoltà a dividerlo in passaggi e capire come risolverlo.

Voglio migliorare. Dovrei concentrarmi su strutture / algoritmi di dati? O dovrei studiare più modelli di design?

Cosa pensi che potrebbe aiutare a pensare in modo più logico e in grado di rompere le cose in fasi?

    
posta Crystal 01.10.2011 - 06:49
fonte

4 risposte

7

i have trouble seeing the logic in code sometimes

Questo è comune, non ti preoccupare. Capire il codice che non ti è familiare è come cercare di capire come pensa qualcun altro. Di solito ottenere una soluzione dettagliata di tutta la porzione (non dell'intero sistema poiché potrebbe far esplodere la testa se l'intero sistema è abbastanza grande) dell'architettura di sistema aiuta molto. Una volta compresa la soluzione generale, la logica nei blocchi di codice specifici può iniziare a dare un senso un po 'più.

Mi sembra che tu abbia bisogno di esercitarti nell'architettura di sistema. La prossima volta che stai affrontando un problema, dimentica il codice . Innanzitutto, capisci perfettamente il problema con cui stai trattando . Naturalmente, se non si capisce perfettamente un dato problema, la soluzione ingegneristica sarà al massimo difficile. Successivamente, dai un'occhiata per vedere se c'è un'implementazione per quel problema disponibile (OS), o se c'è un modello di progettazione che può essere applicato ad esso ( Wikipedia ha una lista decente). In caso contrario, inizia a desigare una soluzione (ancora non pensandoci nemmeno al codice - tutto questo dovrebbe essere design astratto).

Una volta terminato il progetto, quindi inizia la codifica.

Naturalmente, studiando schemi e algoritmi di progettazione (e progettazione / analisi degli algoritmi) sicuramente ti ti aiuto nella tua conquista qui, ma la pratica è altrettanto importante (indipendentemente dal fatto che tu realizzi i tuoi progetti o non è accanto al punto).

Fare questo abbastanza volte aiuterà a stimolare la soluzione dei problemi astratti pensando che tu stia riscontrando problemi.

E non mai dimentica: non importa quanto tu pensi di essere bravo, sempre essere qualcuno (o un numero di qualcuno) che è più veloce / migliore / più luminoso di te. Utilizza per aiutarti a migliorare, non lasciare che le loro abilità ti frustrino.

    
risposta data 01.10.2011 - 07:26
fonte
5

Penso che sia abbastanza semplice: codice più!

Il tuo problema sembra esattamente quello che ho avuto quando ho iniziato a programmare. E l'unico modo per aggirarlo era semplicemente codificare di più, sempre di più! Solo così puoi avere la vera comprensione su di esso.

Inizia appena in piccolo, non andare prima su grandi progetti.

    
risposta data 01.10.2011 - 07:23
fonte
1

Attualmente sto seguendo un corso chiamato "Algorithms Analysis". Questa lezione è TUTTO su come risolvere i problemi in passaggi e risolverli (con particolare attenzione all'ottimizzazione).

Dovresti studiare gli algoritmi. Dopo aver studiato un algoritmo, chiudi gli occhi e prova a ricreare l'intero algoritmo da solo. È importante comprendere ogni passaggio ad un livello superiore rispetto alla semplice memorizzazione in modo da poterlo applicare a diversi esempi. Con la pratica, diventerai più veloce.

    
risposta data 01.10.2011 - 07:24
fonte
0

È probabile che qualcuno abbia già incontrato un problema funzionale simile e l'abbia spiegato sul web. Se non sai da dove iniziare, chiedere sul web è una soluzione valida.

È meglio che scrivere codice crap comunque.

Che lingua usi? gli algoritmi riguardano più la conoscenza della tua API.

Ma hai ragione, l'apprendimento di schemi di progettazione ti renderà sicuramente un programmatore migliore, così poche persone li conoscono nel settore.

    
risposta data 01.10.2011 - 10:58
fonte