Dipende. La base dell'idea di progettazione orientata agli oggetti, quella degli oggetti essendo qualcosa a cui si inviano messaggi, può essere insegnata piuttosto bene. Quando ho visto il ricercatore dietro il progetto che alla fine è diventato Microsoft Kodu parlare a Ignite Seattle diversi anni fa, tutti i dubbi che avevo sui progetti orientati agli oggetti essendo un problema per i bambini sono stati eliminati. Alcuni aspetti di OO sono abbastanza intuitivi, dopo tutto. Ci sono idee molto specifiche che si adattano bene ai domini a cui i bambini (e altre persone curiose) possono riferirsi.
La più ampia domanda se le astrazioni comuni nei buoni progetti OO siano adatte per insegnare ai bambini? Uno molto più difficile. Ho iniziato con linguaggi imperativi (e Logo), e conosco molto il linguaggio dei pattern che rendono i progetti OO più flessibili, ma anche come professionista ho un piccolo problema a conoscere, per ogni problema, quale sia l'astrazione migliore. Ma quell'equilibrio è una grande quantità di ciò che riguarda la programmazione professionale, e non ho avuto bisogno di sapere tutte queste cose quando ero un appassionato fino a quando non è venuto fuori un problema che non sapevo come risolvere. Quindi non sono sicuro che sia un problema, a seconda di quali sono i tuoi obiettivi nell'insegnamento.
Per quanto riguarda le tue domande specifiche su Smalltalk, non posso rispondere, ma Squeak , un'implementazione Smalltalk, potrebbe essere divertimento per i bambini che vogliono andare oltre le basi che incontrano con qualcosa come Kodu o, ad esempio, Logo. L'unico vero modo per rispondere se è efficace per insegnare OO è provare.
Poiché la maggior parte della mia codifica da bambino era autodiretta e la disponibilità di qualsiasi comunità intorno a me era quasi inesistente, usavo gli strumenti disponibili con il sistema che avevo, che fondamentalmente significava base, logo e un quantità modesta di Assemblaggio (TMS9900 e 6502/8502). È giusto dire che un bambino adeguatamente curioso e determinato ti sorprenderà se fornisci strumenti che rendono le cose semplici divertenti e difficili, e forniscono un tutoraggio adeguato quando rimangono bloccati su qualcosa. Quindi sono abbastanza convinto che potresti dare il figlio giusto Lisp o Perl o C # o Elaborazione o Ruby e loro scopriranno molte cose da sole e diventeranno incredibilmente frustrati con cose che non ti aspetteresti necessariamente di essere un problema (che è dove un adulto esperto può aiutare). Ma molti bambini, almeno dopo una certa età, non saranno nemmeno curiosi o determinati abbastanza da andare oltre la stampa del loro nome alcune centinaia di volte sullo schermo. Non sono molto sicuro di quanto il linguaggio sia importante nelle prime fasi di apprendimento sui computer, a parte il fatto che dovrebbe essere relativamente a basso attrito per ottenere qualcosa di visivo.