Come posso ottenere più esperienza di programmazione [chiuso]


9

Sarò uno studente di informatica del terzo anno e ho letto Head first Java, Head First C, e attualmente sto leggendo C ++, la lingua che mi piace di più in quanto ha un buon stile di insegnamento per le persone con esperienza. Sto programmando di imparare a creare software con QT, imparare obiettivo-C (per iPhone) o leggere efficace C ++.

Come posso fare esperienza come programmatore? Ho le competenze per unirmi a un progetto open source o devo imparare php, mySQL o qualsiasi altra lingua. Adoro la programmazione e l'informatica in generale, sebbene alcune lezioni possano essere estremamente difficili (informatica teorica). Ho anche intenzione di diventare un guru in c ++, ma non lo sarà presto.


1
Hai scritto dei programmi che altri usano? In caso contrario, scrivine uno di cui un membro della famiglia amato ha bisogno e rendilo utile a lui (potrebbe richiedere diverse iterazioni). L'ultima parte è dove si trova la vera lezione.

Come si arriva alla Carnegie Hall?
jfrankcarr,

1
Suonerò come un coglione per una seconda, ma ... esperienza - Partecipazione attiva a eventi o attività, che porta all'accumulo di conoscenze o abilità. Quindi inizia a partecipare attivamente alla programmazione.
Steven Evers,

1
A proposito, qual è la differenza tra StackOverflow e programmatori? Lo schema di chiusura delle domande ha lo scopo di rendere i programmatori solo un altro StackOverflow? Qual è il punto quindi - basta unire i due. Siamo stati in grado di porre domande esoteriche sui programmatori che non potevamo in StackOverflow.
שינתיא אבישגנת,

Risposte:


11

ABC - SEMPRE ESSERE CODIFICA. È davvero così semplice. Uno dei miei modi preferiti per conoscere una lingua è scrivere un interprete di giocattoli per un sottoinsieme della lingua nella lingua stessa o se non è la tua cosa, forse un ray tracer o qualcos'altro che è abbastanza grande da essere non banale ma non così grande da non poter essere completato in circa un mese. Il punto è lavorare su qualcosa che ti costringerà a guardare la libreria standard e le strutture di astrazione dei dati che la lingua offre. A volte il progetto ha successo a volte no, ma alla fine ne so abbastanza di una lingua per sapere quali sono i suoi punti di forza e di debolezza e se voglio continuare a imparare di più. Se risulta che mi piace la lingua, ogni volta che leggo un articolo o un post di blog interessante, provo ad avviare un progetto in cui implemento alcune delle idee che sono state presentate nell'articolo o nel post del blog. In questo modo pratico sempre e apprendo nuove idee in modo che diventi un ciclo virtuoso.

Alcuni progetti che hanno funzionato davvero bene per me in passato: interprete per un sottoinsieme di alcune lingue, ray tracer, generatore di parser PEG, parser di intestazione HTTP, client / server echo semplice, bot twitter per la pubblicazione automatica di tweet da una coda, prodotto Amazon raschietto per cercare offerte.


+1 Hai menzionato alcuni progetti davvero interessanti, grazie.
Anthony,

8

Come ben spiegato in Teach Yourself Programming in Ten Years , dovresti seguire i seguenti passi:

  • Interessati alla programmazione e fai qualcosa perché è divertente. Assicurati che continui a essere abbastanza divertente in modo da essere disposto a mettere nei tuoi dieci anni / 10.000 ore.

  • Programma . Il miglior tipo di apprendimento è imparare facendo. Per dirla più tecnicamente, "il livello massimo di prestazioni per gli individui in un determinato dominio non viene raggiunto automaticamente in funzione di una vasta esperienza, ma il livello di prestazioni può essere aumentato anche da individui di grande esperienza come risultato di sforzi deliberati per migliorare ". (p. 366) e "l'apprendimento più efficace richiede un compito ben definito con un livello di difficoltà adeguato per il singolo individuo, feedback informativo e opportunità di ripetizione e correzione di errori." (p. 20-21) Il libro Cognition in Practice: Mind, Mathematics and Culture in Everyday Life è un riferimento interessante per questo punto di vista.

  • Parla con altri programmatori; leggi altri programmi . Questo è più importante di qualsiasi libro o corso di formazione.

  • Se vuoi, metti quattro anni in un college (o più in una scuola di specializzazione). Questo ti darà accesso ad alcuni lavori che richiedono credenziali e ti darà una comprensione più profonda del campo, ma se non ti piace la scuola, puoi (con un po 'di dedizione) fare un'esperienza simile da solo o sul lavoro . In ogni caso, l'apprendimento del libro da solo non sarà sufficiente. "L'educazione informatica non può rendere nessuno programmatore esperto più che studiare pennelli e pigmenti può rendere qualcuno un pittore esperto", afferma Eric Raymond, autore del Dizionario del nuovo hacker. Uno dei migliori programmatori che abbia mai assunto aveva solo un diploma di scuola superiore; ha prodotto un ottimo software, ha il suo gruppo di notizie e ha fatto abbastanza in azioni per acquistare il suo night club.

  • Lavora su progetti con altri programmatori . Sii il miglior programmatore su alcuni progetti; essere il peggio su alcuni altri. Quando sei il migliore, puoi mettere alla prova le tue abilità per guidare un progetto e ispirare gli altri con la tua visione. Quando sei il peggiore, impari cosa fanno i maestri e impari cosa non gli piace fare (perché te lo fanno fare per loro).

  • Lavora su progetti dopo altri programmatori . Comprendi un programma scritto da qualcun altro. Guarda cosa serve per capire e risolverlo quando i programmatori originali non sono presenti. Pensa a come progettare i tuoi programmi per rendere più semplice chi li manterrà dopo di te.

  • Impara almeno una mezza dozzina di linguaggi di programmazione. Includi un linguaggio che supporti le astrazioni di classe (come Java o C ++), uno che supporti l'astrazione funzionale (come Lisp o ML), uno che supporti l'astrazione sintattica (come Lisp), uno che supporti le specifiche dichiarative (come i modelli Prolog o C ++), uno che supporta le coroutine (come Icona o Schema) e una che supporta il parallelismo (come Sisal).

  • Ricorda che esiste un "computer" in "informatica". Sapere quanto tempo impiega il computer per eseguire un'istruzione, recuperare una parola dalla memoria (con e senza mancanza di cache), leggere parole consecutive dal disco e cercare in una nuova posizione sul disco. (Risposte qui.)

  • Partecipa a uno sforzo di standardizzazione del linguaggio. Potrebbe essere il comitato ANSI C ++ o decidere se il tuo stile di codifica locale avrà 2 o 4 livelli di rientro dello spazio. Ad ogni modo, impari cosa piace agli altri in una lingua, quanto profondamente si sentono così, e forse anche un po 'sul perché si sentono così.

  • Avere il buon senso per abbandonare lo sforzo di standardizzazione della lingua il più rapidamente possibile.


3

Ti suggerirei di allenarti scrivendo in modo efficace programmi funzionali. Prendi un progetto più grande quando pensi di avere le basi. Scopri il framework qt per lo sviluppo del software e continua a esercitarti. Il modo migliore per imparare a programmare è in realtà scrivere codice.

Direi che anche la lettura svolge un ruolo importante, potresti cercare un team di sviluppatori che ospitano un progetto open source (cercane uno su github o altri siti simili) perché potrebbero offrirti una preziosa esperienza di sviluppo del team.


2

A volte luoghi come sourceforge all'inizio sono un po 'scoraggianti. Un modo davvero carino per trovare qualcosa da fare è esplorare i tracker dei progetti e trovare un bug / problema che ti piace il suono della correzione.

Su alcuni progetti di github su piccola scala questo diventa molto più accessibile. Hai effettivamente una direzione e uno scopo nel cercare di ingannare il codice, invece di guadarlo ciecamente.


1

I campioni nei libri o gli incarichi all'università sono buoni punti di partenza per capire come funziona la programmazione e mostrano le possibilità per i tuoi progetti futuri.

Lavora su progetti reali

Ma senza una vera esperienza di progetto, tendi a dimenticare le cose che hai imparato.

I problemi sono opportunità per mostrare ciò che puoi

Inoltre, vedi in un vero progetto quanto complessi possano essere i requisiti e tu esponi problemi difficili da abbattere. Questi problemi sono opportunità per mostrare ciò che puoi. Puoi vedere i tuoi lati deboli che dovresti migliorare.


-1

devo imparare php, mySQL o qualsiasi altra lingua?

Sì signore, si prega di considerare le lingue del World Wide Web. HTML5, CSS3 e JavaScript.

Ecco perché:

  1. Sono veloci da imparare e sempre più ricchi da implementare.

  2. Non scrivono più solo web, ma anche os, server e database.

  3. Ancora più importante *

    Ora vengono utilizzati per ridefinire Computer Science 101 - dal creatore di jQuery, John Resig.

Non sparare al messaggero, basta controllare questo link per l' accademia della scuola di Khan .

lì i modelli di progettazione c / c ++ / c # vengono trasferiti su JS.

Spero che aiuti.


+1 - Così sbagliato che questo è stato declassato. L'informazione è valida Il link è credibile. La fonte è jQuery Genius John Resig, che avvia un corso di programmazione 101 con JavaScript e funzionerà. Dai un'occhiata a Khan Academy. Migliorare il potenziale per far progredire l'istruzione; nel minimo. Grazie.
Jack Stone,
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.