«Una delle ragioni per iscriversi davvero all'università è andare oltre una semplice formazione professionale e invece abbracciare idee più profonde.»

Riflettiamo un po' su questa questione. Qualche anno fa, i dipartimenti di Computer Science mi hanno invitato a tenere delle lezioni in vari università. Quasi per caso, ho chiesto al mio primo pubblico, composto da studenti del quarto anno, dottorandi e professori, la loro definizione di «Computer Science». Tutti sono riusciti a fornire solo una definizione ingegneristica. Ho ripetuto questo esperimento in ogni nuova sede, e ovunque i risultati sono stati simili.
Un'altra domanda era: «Chi è Douglas Engelbart?». Alcune persone hanno risposto: «non era forse legato al mouse del computer?» (e questo mi ha molto deluso, poiché la mia comunità scientifica ha fatto molti sforzi per rendere possibile rispondere a questa domanda dopo due o tre clic del mouse e verificare che Engelbart fosse effettivamente legato al mouse del computer).
In parte, il problema risiedeva nella mancanza di curiosità, in parte nella ristrettezza degli obiettivi personali che non erano legati all'apprendimento, in parte nella mancanza di comprensione di cosa fosse questa scienza, e così via.
Lavoro part-time nel dipartimento di informatica dell'Università della California da alcuni anni (di fatto sono professore, ma non devo partecipare alle riunioni del dipartimento). Periodicamente tengo corsi, a volte per i primi anni. Nel corso degli anni, il già basso livello di curiosità per l'informatica è diminuito ulteriormente (ma è aumentata la sua popolarità, poiché l'informatica è vista come un percorso verso un buon lavoro ben retribuito, se si sa programmare e si ottiene un certificato in una delle migliori 10 scuole). Di conseguenza, nessuno studente si è mai lamentato del fatto che il primo linguaggio all'Università della California sia il C++!
Mi sembra che ci troviamo di fronte a una situazione in cui sia il termine "Computer" che "Science" siano stati distrutti da concetti massivi e poco solidi, per creare un nuovo termine — una sorta di etichetta sui jeans — che suona bene, ma è abbastanza vuoto. Un termine correlato che è stato anch'esso distrutto è "ingegneria del software" che, di nuovo, non ha utilizzato le idee più brillanti di "programmazione" e "ingegneria", ma le ha semplicemente combinate (questo è stato fatto intenzionalmente negli anni '60, quando il termine è stato coniato).
Una delle ragioni per cui effettivamente iscriversi all'università è quella di andare oltre una semplice formazione professionale e invece afferrare idee più profonde. Mi sembra ragionevole, per un'introduzione alla specializzazione, cercare — se possibile, con esempi — di far sì che gli studenti affrontino problemi reali e comincino a comprendere ciò che è veramente interessante, importante e centrale in questo campo.
I bambini delle elementari si entusiasmano quando vedono come un righello posizionato sopra un altro righello diventi un calcolatore, che permette loro di superare i ragazzi della quinta classe nell'aggiungere frazioni. E poi saranno felici di partecipare allo sviluppo di calcolatori migliorati. Hanno toccato un vero computer — uno strumento fisico e mentale che ci aiuta a pensare. Hanno appreso un modo davvero efficace per rappresentare i numeri — molto più efficace di quanto si insegni a scuola!
Sono riusciti a collegare la loro idea sana di "aggiunta" come "accumulo" con qualcosa di simile con nuove potenti proprietà. L'hanno programmato in modo che fosse capace di risolvere problemi diversi.
Hanno anche ampliato le sue capacità. E così via. Non è un computer digitale. E non è un computer con un programma memorizzabile. Ma questa è l'essenza del computer. Proprio come — essa è l'essenza del computer e dell'elaborazione.

Meccanismo di Antikythira
Fino a che punto possiamo spingerci e quanto possiamo fare prima che tutto sfugga al controllo e ci perdiamo nelle astrazioni? Sono sempre stato interessato alla caratterizzazione — il primo premiato con il premio Turing, che potrebbe aver coniato il termine «Computer Science» — che negli anni '60 disse: «La Computer Science è la scienza dei processi». Di tutti i processi.
Per amore dell'azienda Quora, non cerchiamo di portarlo oltre o di trasformarlo in un dogma religioso. Utilizziamo semplicemente felicemente l'idea , per pensare meglio al nostro campo. E soprattutto su come insegnarlo. Ora dobbiamo esaminare il significato moderno di «scienza», e Perlis era piuttosto sicuro che non dovesse essere diluito da vecchi significati (ad esempio, «raccolta di conoscenze») e usi (come «biblioteconomia» o addirittura «scienze sociali»). Con «scienza» cercava di comprendere il fenomeno creando modelli/mappe che cercavano di mostrare, «tracciare» e prevedere i fenomeni.

Ho dato diverse interviste su come le migliori carte e modelli possono spesso adattarsi a una maglietta, così come le equazioni di Maxwell e altro. L'analogia è che esiste una «scienza dei ponti», anche se la maggior parte dei ponti sono costruiti dall'uomo. Ma una volta che un ponte è costruito, esso rappresenta fenomeni che gli scienziati possono studiare; dai ponti è possibile creare modelli di vari tipi e formulare «teorie dei ponti» complete e utili. Il bello è che poi si possono progettare e costruire nuovi ponti (ho già accennato che difficilmente c'è qualcosa di più divertente che lavorare insieme a scienziati e ingegneri per risolvere grandi e importanti problemi!).

Herbert Simon, vincitore del premio Turing e del premio Nobel, ha definito tutto questo «scienze dell'artificiale» (e ha scritto un magnifico libro con lo stesso titolo).

Permettimi di fare un esempio. Negli anni '50, aziende e università costruivano computer con memoria programmabile e iniziavano a programmarli. Un evento significativo si è verificato nel 1956 con l'arrivo di Fortran, che non era il primo linguaggio di alto livello, ma forse il primo realizzato in modo tale da poter essere utilizzato in molteplici settori, inclusi molti ambiti che prima erano limitati al linguaggio macchina.
Tutto ciò ha generato 'fenomeni'.

John McCarthy
La storia di Lisp è più complessa, ma John McCarthy era interessato a trovare una 'teoria matematica del calcolo' e si impegnò a rendere tutto perfetto. La funzione eval, che interpreta Lisp, è perfetta per essere stampata su una maglietta! Rispetto a un 'sistema di programmazione', è irrisoria. Ciò che è più importante, questa 'teoria del calcolo' aveva una concezione più potente rispetto a Fortran! Era la migliore idea di ponte!
La compattezza di Lisp consente a tutta l'idea di programmazione di essere afferrata con pochi colpi su un livello più profondo e di essere pensata a un livello che sembra semplicemente impossibile quando si osservano i grandi artefatti (questo è uno dei motivi per cui gli scienziati amano che la matematica sia compatta e potente). La matematica utilizzata qui è una nuova matematica, poiché ammette concetti come "prima" e "dopo", e questo porta alla "logica delle grandezze variabili", che consente di mantenere sia la dipendenza funzionale che il ragionamento logico, permettendo anche la posizione e il passare del tempo. (Questo è ancora incomprensibile ai nostri giorni in un mondo duro di programmazione situazionale).
Il Lisp, fungendo da potente linguaggio di programmazione e metalinguaggio capace di presentare la propria teoria, è un esempio di vera informatica. Imparandolo e studiando altre cose simili, potrai pensare in modo più profondo e assumerti maggiori responsabilità per il tuo destino, rispetto a quanto faresti imparando semplicemente a programmare in Fortran o nei suoi equivalenti moderni (… così ti avvicinerai di più ai programmatori!).
Scoprirai molto di più sui tipi speciali di design richiesti nei calcoli (ad esempio, generalmente non è apprezzato quando i calcoli richiedono spesso di andare oltre l'ambiente computazionale: una delle caratteristiche speciali dei calcoli programmati memorizzati è che non si tratta solo di materiale per un programma, ma di materiale per un computer completamente nuovo).
Un'altra ragione per scegliere la definizione di Perl è che, in generale, il calcolo è molto più legato alla creazione di sistemi di molti tipi piuttosto che agli algoritmi, alle "strutture dati" o persino alla programmazione in sé. Ad esempio, un computer è un sistema, i calcoli sono sistemi, una rete locale e internet sono sistemi, e la maggior parte dei programmi dovrebbe costituire sistemi migliori di quelli che sono (il vecchio stile di programmazione degli anni '50 è durato fino a far sembrare che la programmazione debba essere così — nulla è più lontano dalla verità).
Internet è un buon esempio: a differenza della maggior parte dei programmi al giorno d'oggi, non è necessario interrompere Internet per riparare o migliorare qualcosa. È molto più simile a un sistema biologico — in base alle nostre intenzioni — rispetto a ciò che la maggior parte delle persone considera un sistema computazionale. Ed è molto più scalabile e affidabile rispetto a quasi tutti i sistemi software esistenti oggi. Vale davvero la pena riflettere su questo prima di insegnare ai neofiti della programmazione concetti non così potenti!
Dunque, ciò che dobbiamo fare nel primo corso di Informatica è considerare cosa possono fare concretamente gli studenti dall'inizio e poi cercare di rimanere all'interno del loro "carico cognitivo" per aiutarli a raggiungere ciò che è davvero importante. È molto importante "rimanere autentici" e trovare modi che siano intellettualmente onesti e adatti a chi sta appena cominciando a studiare. (Per favore, non insegnate cattive idee solo perché sembrano un po' più semplici — molte idee cattive sono in realtà più semplici!).
Gli studenti devono iniziare creando qualcosa che abbia molte caratteristiche importanti di cui ho parlato qui. Deve essere un sistema composto da più parti che interagiscono dinamicamente e così via. Un buon modo per decidere quale linguaggio di programmazione utilizzare è semplicemente fare qualcosa che abbia migliaia di parti interattive! Se non lo hai, dovresti cercarlo. La cosa peggiore che si possa fare è mettere gli studenti su un percorso di scarsa fluidità che limiterebbe gravemente le idee ambiziose. Questo li distrugge — e noi vogliamo farli crescere, non ucciderli.
Informazioni sulla scuola GoTo

- 17-30 giugno, 15-28 luglio, 12-25 agosto
Fonte: habr.com
