Backtrack My “Education” [chiuso]


13

Qualche tempo fa, ho deciso di iniziare a programmare. In realtà, sono appena saltato in una lingua (Perl) e sono andato da lì. Quello che mi dispiace è che sono appena saltato dentro:

Non ho imparato le basi (se le chiamereste basi).

Non ho imparato a conoscere l'Informatica.

Questo problema, credo, mi sta trattenendo dal mio vero potenziale. Dove devo "riavviare"? Ci sono libri, articoli, ecc. Che dovrei leggere? Ci sono argomenti che un programmatore esperto dovrebbe conoscere? Qual è il tuo consiglio?


Non sono chiaro sulla tua domanda. Quindi, quando hai deciso di iniziare la programmazione, è stato per ottenere un nuovo lavoro o semplicemente per svolgere alcune attività di amministrazione nel tuo lavoro o solo per divertimento? Devo capire da dove vieni per aiutarmi con il motivo per cui rimpiangi di aver iniziato in questo modo e che problema ha trattenerti? Non mi piace fare ipotesi.

@JamesDrinkard: era solo per il gusto di imparare! Non lo faccio per vivere.
Dinamico

Qual è il tuo background? Sai qualcosa sulla scienza? Matematica? Ingegneria? Lavorazione del legno? :-) A quale tipo di programmazione ti interessa? Senza questi dettagli è difficile dare una risposta utile. Inoltre, non pentirti di esserti tuffato: è fantastico!
Guy Sirton,

@GuySirton: sono uno studente delle scuole medie. Non ho davvero un motivo per programmare, lo faccio e basta!
Dinamico

Risposte:


21

Farei questo:

Percorso A: il metodo semi-tipico

  1. Impara una lingua con una sintassi più regolarizzata come Java, C # o Python. Perl è uno strumento follemente utile ma è anche molto molto libero in termini di come ti consente di fare le cose. Le altre lingue che ho elencato sono molto, molto meno.

  2. Ottieni un libro su Strutture di dati in tale lingua.

  3. Ottieni un libro sugli algoritmi in questa lingua.

  4. Ottieni codice Java / C # completo ed efficace / Qualunque sia la versione di Python.

Path B: Path of Enlightenment di Joel Spolsky (o Death, scegli tu)

  1. Ottieni il libro "Codice"

  2. Ottieni "The C Programming Language" di K&R

  3. Ottieni la struttura e l'interpretazione della programmazione per computer

Per quanto riguarda il metodo, il metodo 1 ti insegnerà a programmare in modo più regolare. In una certa misura i concetti di informatica (nessuna teoria della complessità ancora, fidati di me) e ti offrono un linguaggio migliore per lavorare in progetti con altre persone e per fare applicazioni più grandi.

Il metodo 2 è più hardcore, è molto più di un approccio di base con "Codice" che spiega le basi, K&R introduce le cose a livello di macchina e la SICP introduce i concetti di livello superiore. È un percorso molto più difficile ma più mirato.

In entrambi i casi, concediti del tempo. Roma non è stata costruita in un giorno e nemmeno le capacità di programmazione, anche se sei un genio. La programmazione di Peter Norvig in 10 anni è il solito saggio a cui indico le persone.

Addendum:

Per quanto riguarda le cose gratuite disponibili: Python the Hard Way come elencato di seguito è un buon inizio, da lì, Come pensare come uno scienziato informatico è una continuazione ragionevole.

Ci sono un certo numero di risorse su Algorithms là fuori e onestamente probabilmente potresti cambiare i passaggi 3 e 4 senza problemi. Tieni presente che è qui che la matematica inizia davvero ad apparire, quindi non aver mai paura di chiedere aiuto quando arrivi a questo stadio. Questa sembra essere una guida gratuita ragionevole .

In realtà non esiste un equivalente libero coesivo di Code Complete per dire se Code come un Pythonista sembra piuttosto solido. La cosa importante è concentrarsi sul rendere leggibile il codice una volta che i fondamenti sono stati eliminati. Non è "necessario" nello stesso modo in cui è corretta tutta la sintassi del codice, ma rende la vita molto più semplice una volta che si va oltre i piccoli programmi o si lavora su qualcosa per un lungo periodo.

Potresti scoprire che mi sono concentrato principalmente su Python, perché è il più semplice dei tre per trovare materiale gratuito ben scritto. Penso che i tutorial Java di Oracle vadano bene, ma sono un po 'secchi e non ideali per i principianti. C # si trova in una situazione simile, sebbene nessuno dei due soffra della mancanza di documentazione.

Inoltre, il tuo primo scherzo / gioco di parole CS: vuoi "rifattorizzare" la tua istruzione, non Backtrack.


Grazie! Ti capita di avere libri online gratuiti da leggere? A parte questo, questa è una risposta incredibile!
Dinamico

5
+ 1 per Structure and Interpretation of Computer Programming (SICP) può essere trovato online qui: mitpress.mit.edu/sicp
NWS

Conoscendo Perl, Python mi darà molti problemi a cui abituarmi?
Dinamico

1
Dopo Perl, la maggior parte delle lingue sarà un po 'una transizione rocciosa. Python è abbastanza semplice perché c'è essenzialmente 1 modo di fare 1 cosa piuttosto che 50 modi di fare 1 cosa come ci sono in Perl. Il grande trucco di Python è determinare quale versione del linguaggio usare: 2.7 o 3.x. Vorrei usare qualunque tutorial tu scelga e andrei da lì. Una volta che sei più bravo puoi adattarti all'altro man mano che i progetti arrivano.
Ingegnere mondiale l'

1
@kevincline: In realtà, dopo aver fatto alcuni degli esercizi di Python, mi sta dando molti problemi. IMHO, alcune delle cose estremamente semplici in Perl, sono difficili (er) in Python.
Dinamico


1

Bene, ho iniziato per lo stesso motivo per cui avevo una certa conoscenza sul lato hardware ed ero incuriosito dalla programmazione. Mi piace imparare cose nuove.

Ho iniziato con i file batch di DOS, poi QuickBasic, quindi Visual Basic, VBA, MASM, con Access per il lavoro di database prima di ottenere il mio primo lavoro. Per me, quello è stato il percorso migliore, iniziare in modo semplice e poi costruire da lì.

Direi che cosa ti piace di più della programmazione e segui quel percorso, scripting, sviluppo web, programmazione windows, ecc ... Se non lo sai, allora inizia a lavorare con alcune lingue per vedere cosa ti piace. Avrai bisogno di tempo però. Ci vogliono circa 5 anni per diventare davvero bravi con un linguaggio come Java o forse C ++, IMHO.

Come lingua per aiutare a imparare lo sviluppo web, sicuramente JavaScript, PHP è popolare e Python, ma questo è IMHO. Si presume che conoscerai o imparerai HTML / CSS. Ho davvero sottovalutato javascript, anche se l'ho usato dal 2001. Ho fatto la stessa cosa con i CSS e non pensavo fosse importante. Ho cambiato anche la mia opinione su questo.

Quando provo a determinare una tendenza, vado su http://www.indeed.com e faccio clic sul collegamento delle tendenze nella parte in alto a sinistra della pagina. Quindi inserisco parole chiave come PHP e Python e vedo quali sono stati eliminati per le posizioni di lavoro effettive che si trovano su Internet.

Questo è però dal punto di vista della carriera e basato su ciò che mi dà più valore ai clienti (datori di lavoro). Non solo dal punto di vista dell'apprendimento.


Se dicessi che voglio imparare una lingua che mi aiuterà con lo sviluppo Web, ma che è ancora in grado di fare molto di più, cosa consiglieresti?
Dinamico

-1

Scopri gli algoritmi nella sua forma più semplice, dimentica le lingue per un po '. Ordinamento di vettori, parole, ecc. Freepascal è un bel linguaggio per iniziare con queste cose, adoro Perl ma con tutte le sue scorciatoie e cose interessanti, trascurerai spesso l'algoritmo intrinseco del programma.

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.