La programmazione orientata agli oggetti dovrebbe essere la prima cosa che gli studenti apprendono? [chiuso]

3

La mia scuola superiore sta avviando un programma in cui, invece di seguire il metodo "tradizionale" di insegnamento della programmazione (variabili di apprendimento, quindi operazioni, cicli, metodi e infine OOP), gli studenti vengono immediatamente introdotti alla programmazione orientata agli oggetti senza altri conoscenza della programmazione.

Questa è una buona idea?

Il mio punto di vista personale è che insegnare OOP prima è fuorviante - quando sono stato presentato a OOP, sono stato in grado di apprezzare il potere che mi dava quando progettavo programmi complessi, dato che avevo già familiarità con la programmazione procedurale. Introdurre gli studenti a OOP in una fase così iniziale potrebbe renderli ignoranti in merito alla potenza e alla flessibilità che OOP offre ai programmatori.

Ci sono anche i problemi pratici: gli studenti potrebbero avere difficoltà a progettare le classi quando non sono state introdotte correttamente nei metodi (come funzionano, quando dovrebbero essere usati, ecc.). Non ho molti dettagli sul curriculum del corso, ma dalla mia comprensione, gli studenti devono essere introdotti a OOP dalla loro terza lezione, dopo aver imparato le variabili e le operazioni (così come lo standard input / output).

Nel caso sia pertinente, la lingua in cui insegna la mia scuola è C #.

    
posta Dan 18.02.2013 - 22:09
fonte

7 risposte

5

Credo che sia una cattiva idea insegnare per prima cosa la programmazione orientata agli oggetti. Il mio amico che ha frequentato un corso universitario dove ha insegnato subito OOP non ha imparato correttamente come funzionavano le cose. Credo che non concentrarsi sui paradigmi e non usare le classi sia un buon approccio all'introduzione della programmazione. Prendi familiarità con le strutture dati primitive e il controllo del flusso prima di apprendere le funzionalità specifiche di OOP.

    
risposta data 18.02.2013 - 22:14
fonte
2

Io davvero penso di no.

Come molti programmatori della mia generazione, ho imparato a usare BASIC da bambino e penso ancora che abbia enormi vantaggi rispetto ad altre lingue più "moderne" per coloro che stanno appena iniziando a imparare.

Penso che possa dipendere dall'esposizione e dall'età esistenti (e cosa intendi per prima cosa che imparano - i bambini di 2 o 3 anni stanno giocando con i tablet tutto il tempo ora), ma non ho visto nessuno studio che ha guardato questo a qualsiasi età.

Dal punto di vista dell'usabilità per i neofiti reali, penso che cose come lo spazio bianco di Python e il punto e virgola che richiedono linguaggi (o i problemi automatici del punto e virgola di JavaScript) possano essere un ostacolo, ma, ancora una volta, dipende dall'esperienza dei computer e delle tastiere ecc.

Penso che un grosso errore di persone che parlano della lingua da insegnare sia che si avvicinano alla programmazione dell'apprendimento dalla lingua, invece che a una visione più olistica di tutte le lacune nell'esperienza dei computer delle persone. Alcuni principianti non hanno familiarità con il computer, oi nomi di caratteri speciali, ecc. Mi aspetto che questo sia in realtà CRESCENTE piuttosto che diminuire con la diminuzione dell'esposizione ai computer desktop in casa e il declino dei laptop rispetto ai tablet tra i bambini. Ricordo i primi corsi di informatica che ho frequentato (parlando ancora TRS-80 giorni) concentrati sui diagrammi di flusso, ma sembra che sia andato completamente fuori moda.

    
risposta data 18.02.2013 - 22:28
fonte
0

Penso che ci siano molti modi per insegnare la programmazione, dipende molto dal contenuto del corso e dall'insegnante, possono avere un approccio veramente buono all'insegnamento dei concetti. Non penso che tu possa davvero giudicare la qualità dell'approccio senza conoscere l'intera storia. Questa domanda si sente come se fosse posta con una preferenza per l'aspettativa, evidenziando come può fallire in base a tale aspettativa, piuttosto che forse la visione dei creatori del corso su come vogliono costruire i concetti e insegnare.

    
risposta data 18.02.2013 - 22:34
fonte
0

Credo che esistano almeno due livelli di scrittura del codice:

  • scrivendo il codice che esegue l'attività che dovrebbe svolgere;
  • scrivendo codice gestibile che svolge l'attività ed è anche gestibile.

Secondo me, OOP si occupa principalmente di scrivere codice manutenibile e comprensibile. Penso che quando impari a programmare è abbastanza difficile scrivere codice che fa solo quello che deve fare. Ciò non significa che scrivere codice pulito, strutturato e orientato agli oggetti sia meno importante, significa solo che è troppo presto per parlare di questi problemi.

Non introdurrei il concetto OOP in una fase iniziale dell'apprendimento della programmazione, perché puoi apprezzare i vantaggi di OOP solo dopo aver scritto almeno programmi di medie dimensioni.

    
risposta data 18.02.2013 - 22:56
fonte
0

Penso che C # sia una scelta eccellente. È possibile ottenere alcune applicazioni interessanti e funzionanti con una conoscenza minima. La programmazione OO non è molto diversa, se non identica alla programmazione procedurale in molti modi. Gli studenti dovranno ancora imparare la programmazione in stile procedurale quando implementano i metodi, ma riusciranno a creare programmi molto più interessanti perché possono utilizzare le classi esistenti e / o i metodi di sovrascrittura in quelle classi.

Il trucco a livello di scuola superiore non è quello di insegnare agli studenti i dettagli della programmazione, ma piuttosto di farli "agganciare" alla programmazione. Se riescono a creare un'applicazione grafica davvero interessante che faccia cose semplici ma impari solo una programmazione di base, andrà molto oltre l'insegnamento della codifica procedurale, ma devono usare la finestra della console che consente solo l'input / output testuale come farebbero finiscono quando iniziano a usare un linguaggio procedurale.

Probabilmente ci sono molti potenziali programmatori che hanno perso interesse dopo aver lavorato solo con cin, cout, scanf e getch ().

    
risposta data 18.02.2013 - 23:24
fonte
0

Penso sia una buona idea, perché forse allora non scriveranno codice procedurale in un linguaggio OO come fanno molti programmatori. Ovviamente non inizieranno a scrivere codice buono dall'inizio o capiranno profondamente i concetti, ma lo faranno in tempo. Probabilmente vedranno che è naturale usare il polimorfismo e il modello di strategia invece di molti if-elses o switch.

Per quanto riguarda le procedure, ritengo sia una buona idea apprendere dall'inizio del concetto di incapsulamento; in OOP le procedure (i metodi) non sono globali e non consentono l'accesso ai dati globali, pertanto sono più limitati durante la scrittura. Se si impara questo come un modo nativo e corretto, probabilmente scriverà un codice migliore con meno dipendenze.

Tuttavia, ritengo che OOP sia probabilmente più adatto per l'università non per le scuole superiori.

    
risposta data 18.02.2013 - 23:41
fonte
0

Stavo insegnando un corso introduttivo alla programmazione qualche tempo fa. Per preparare la mia classe, alcuni mesi prima di iniziare, ho letto un grande libro intitolato:

Riflessioni sull'insegnamento della programmazione: metodi e implementazione .

Il libro copre la ricerca sui diversi approcci per insegnare la programmazione in diverse università durante un lungo periodo. Ciò include le tecniche come prima gli oggetti, prima la programmazione funzionale, l'apprendistato, i modelli guidati, ecc.

Sinceramente penso che sia un buon inizio per ottenere una buona risposta alla tua domanda.

Ora un grande libro su come insegnare agli oggetti è innanzitutto Oggetti Prima con Java: una Introduzione Pratica usando BlueJ .

Il libro è pensato per insegnanti e studenti. Le tue lezioni sono già ben preparate e mi piace l'approccio, anche quando non l'ho usato.

Ho insegnato alla mia classe prima usando uno stile imperativo con Python e poi, in una seconda classe, mi sono spostato al modello orientato agli oggetti, utilizzando principalmente Karel The Robot: una gentile introduzione all'arte della programmazione e gli studenti lo adoravano. Penso che avrei potuto programmare con l'oggetto-primo approccio usando uno di questi due libri. Evidentemente, questi sono per i corsi introduttivi. E alcuni video dell'Università di Standford che ho visto sembrano utilizzare lo stesso approccio.

    
risposta data 18.02.2013 - 23:43
fonte

Leggi altre domande sui tag