Come introdurre un computer analfabeta di 50 anni alla programmazione [chiuso]

10

L'altro giorno mio padre mi ha fatto una domanda che non mi sarei mai aspettato da lui.

"Come posso imparare C ++?"

Quest'anno mio padre compie 56 anni ei computer sono un concetto distante per lui. Non sa come usare un telefono molto bene oltre a chiamare i numeri (nessuna selezione rapida o contatti); anche se ha iniziato a imparare i computer un po 'meglio - al punto che sa come aprire Internet (in Windows) e navigare (e ha completato con successo diverse applicazioni di lavoro interamente sul proprio online, di cui è stato offerto anche posizioni ). Ma ancora, queste sono esperienze con finestre troppo strette per significare molto, davvero.

Anche se potrebbe non avere lo sfondo, mio padre sa come leggere. E intendo leggere come un'abilità, non solo un'abilità. Ha poca o nessuna istruzione universitaria (problemi finanziari, famiglia, ecc.) E ha avuto la fortuna di finire il liceo, ma ha comunque imparato a diventare un maestro elettricista e lo è da quasi 30 anni. Ha fatto lo stesso con la chitarra, imparando a suonare ad un livello molto professionale ed è stato elogiato per la sua abilità. Al liceo, ha preso un libro di sollevamento pesi - ed era l'unica persona nella sua scuola superiore al momento di qualificarsi ufficialmente come "atleta" secondo gli standard nazionali.

In tutti i casi, aveva solo bisogno di qualcosa da leggere. Qualcosa da insegnargli. Assorbe le informazioni come una spugna.

Non ho dubbi sulla motivazione o sulla capacità di mio padre di farlo, quindi il mio obiettivo generale è semplicemente:

Porta mio padre nel mondo dei computer e portalo sulla strada della programmazione.

Credo fermamente che una volta che lo avrò fatto passare attraverso i fondamenti, la sua abilità e capacità di lettura continueranno a farlo da solo.

Quindi ti chiedo tutti: dove dovrei iniziare con tutto questo? E quali sono le migliori risorse là fuori? Dovrei fargli avviare Linux invece di Windows? C ++ è una cattiva idea?

Ricorda, ha bisogno di (IMO) imparare prima i computer, e poi ottenere quella prima comprensione (l'esperienza "Hello world") della programmazione.

Per carità e massima preferenza, mi piacerebbe avere risorse online gratuite che lui possa leggere, ma tutti i buoni suggerimenti in formato cartaceo o pagati online sono benvenuti (che potrei eventualmente cercare in seguito per acquistare ).

Inoltre, ho intenzione di iniziarlo con C ++ (senza Python, Java, ecc.), perché so che è il migliore e sarà in grado di aiutarlo lungo il percorso con il codice. (Ho una conoscenza minima in questo momento in altre lingue).

Modifica: sto ricevendo molti suggerimenti persistenti per usare Python. L'unica ragione per cui volevo fare C ++ è che LO SO che posso essere lì quando mio padre ha bisogno di aiuto. La mia MOLTA PRIMA esposizione alla programmazione è stata Java. Ho imparato Java e ci sono riuscito. Apro altri suggerimenti, ma ti preghiamo di fornire un'applicazione efficace dei tuoi suggerimenti.

EDIT # 2: Capisco che il mio approccio / pensiero / conoscenza potrebbe mancare qui. Sono uno studente di secondo livello al secondo livello CS. Se non sei d'accordo con qualcosa nel mio post, dimmi perché - dammi idee, informazioni - è per questo che sto chiedendo in primo luogo. Per restringere il mio obiettivo generale a specifici obiettivi raggiungibili.

    
posta skippr 22.03.2012 - 01:22
fonte

2 risposte

13

Prima di tutto, anche se conosci bene il C ++, è una orribile, orribile prima lingua per i principianti, e non posso raccomandare abbastanza strong da tenerlo il più lontano possibile da lui vuole imparare con successo a scrivere codice. La programmazione dell'apprendimento non riguarda un linguaggio, si tratta di imparare a esprimere requisiti astratti in una logica formale. C ++ rende difficile concentrarsi su questo perché si inciampa costantemente su problemi specifici della lingua.

Se vuole imparare ad esprimere idee in una logica formale, scegli qualcosa che renda tutto così semplice. Le mie scelte sarebbero Pascal (per lo sviluppo a livello di applicazione) o Python (per il lavoro a livello di script) perché sono progettate per essere intuitive e facili da apprendere come priorità fondamentali. Una volta che conosce veramente i principi su come scrivere il codice, allora se gli importa davvero del C ++ in particolare, può prenderlo.

Per lo stesso motivo, non avviarlo su Linux invece che su Windows, perché ha due problemi su cui concentrarsi: imparare Linux e imparare a scrivere, allo stesso tempo! Mantieni le distrazioni al minimo.

Per quanto riguarda le risorse di programmazione effettive, è abbastanza facile trovare tutorial online, ma ho trovato che il modo migliore per imparare a programmare è programmare. Trova qualcosa che ti piacerebbe fare e poi inizia a capire come farlo.

Diversi anni fa, ho visto una partita e ho pensato: "Potrei farlo e potrei farlo meglio". Così ho licenziato Delphi e ho iniziato a capire i principi coinvolti. Sto ancora imparando nuove cose da quel progetto personale, e lungo la strada, sono diventato un vero programmatore! Quindi provalo; chiedi a tuo padre cosa gli piacerebbe fare se potesse programmare - e assicurati che sia possibile, e di dimensioni ragionevolmente limitate dal momento che non ha ancora esperienza - e poi sedersi con lui e iniziare a capire con lui come fare esso.

E se ha qualche domanda, procuragli un account StackOverflow. :)

    
risposta data 22.03.2012 - 01:43
fonte
4

Penso che l'interesse di tuo padre per C ++ sia decisamente pulito ma non sarebbe la mia scelta per un primo linguaggio di programmazione - a meno che non abbia un requisito specifico molto che lui è interessato all'incontro. (Anche allora, imparare C ++ dopo imparare un'altra lingua, più semplice, potrebbe essere ancora molto più semplice.)

C'è una manciata di cose che sono importanti per la programmazione:

  • La capacità di risolvere problemi astratti
  • La possibilità di scomporre i problemi in pezzi abbastanza piccoli per la risoluzione dei problemi
  • La possibilità di creare soluzioni in modo iterativo e in parti sufficientemente piccole da consentire l'avanzamento del progresso
  • La sintassi e la semantica di lingue specifiche.

In molti modi, la sintassi e la semantica di linguaggi specifici si trova vicino alla fine delle competenze necessarie per la programmazione. Dopotutto, se sei vicino a destra, la maggior parte dei compilatori ti dirà quale errore hai commesso, anche se serve esperienza per decodificare cosa stanno dicendo in particolare i compilatori.

Quindi suggerisco a tuo padre di affrontare un linguaggio di programmazione molto più semplice al primo tentativo: Ruby, Python, C, C #, Haskell, ecc. (Haskell è decisamente difficile per le persone che hanno programmato solo lingue imperative, ma sarei curioso di sapere se i novizi completi soffrono la stessa sensazione di "pescare fuori dall'acqua".

Rispettare un linguaggio più semplice significa che tuo padre avrà più successo in precedenza e troverà più facile "giocare". Il loop REPL interattivo di molte lingue è un posto eccellente da imparare.

Una volta che tuo padre ha familiarità con le funzioni, le classi, gli oggetti, i metodi, le minuzie e le sfumature del C ++ non si sentiranno così travolgenti. Diamine, anche iniziare con C sarebbe più semplice: non è perdonare , ma ci sono meno funzioni di cui preoccuparsi.

Sei curioso di Linux vs Windows; Non sono sicuro che la distinzione contenga molto. Se ha già familiarità con l'uno o l'altro ambiente, il passaggio è solo un altro ostacolo. Se non ne conosce nessuno, suggerirei Linux, ma principalmente perché l'installazione di buoni strumenti è ridicolmente semplice: apt-get install <foo> funziona sulla maggior parte delle distribuzioni e le distribuzioni che non supportano apt forniscono spesso qualcosa di simile. Un minuto dopo, il tuo nuovo pacchetto è stato installato, spesso più veloce di quanto mi porterebbe a trovare un'origine di download affidabile per i binari di Windows precompilati che non puzzano di cavalli di Troia.

    
risposta data 22.03.2012 - 01:41
fonte

Leggi altre domande sui tag