On Monday, September 9, 2013, enrico franchi  wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">
<div>Alla fine dei conti io continuo a pensare che per insegnare la CS che piace a me, il linguaggio giusto fosse scheme. Fine della fiera. </div></div></div></div></blockquote><div><br></div><div>Scusate se replico co un po' di ritardo e ritorno sulla questione ma c'ho riflettuto un po' e trovo questo punto di vista molto interessante!-)</div>
<div><br></div><div>Devo dire che non avevo mai pensato alla possibilità di formare i neofiti utilizzando le armi della programmazione funzionale e, in sostanza, della ricorsione.</div><div>Più ci penso e più mi convinco che sia un'ottima idea da diversi punti di vista:</div>
<div><br></div><div>+) Lo studente è "costretto" ad imparare immediatamente i concetti di induzione, ricorsione e loro affinità/differenze.</div><div>    Una volta consolidate queste conoscenze, il passaggio all'iterazione, è immediato. </div>
<div>    Al contrario, invece, passare dall'iterazione alla ricorsione, come previsto nelle impostazioni didattiche dei corsi di programmazione "standard", rappresenta attualmente uno degli scogli principali per gli studenti.</div>
<div><br></div><div>+)  La spiegazione e la comprensione delle *strutture dati* ricorsive sarebbe immediata e forse capita *sul serio*.</div><div><br></div><div>+) Allo stesso modo, è possibile introdurre nozioni sui tipi e sulle strutture.</div>
<div><br></div><div>+) Concetti come la modularizzazione e l'organizzazione in funzioni del codice è built-in nel paradigma, con l'immediato effetto di intuire l'importanza dei concetti quali "applicazioni, relazioni e funzioni" studiate in parallelo in altri corsi come algebra/analisi (vedi, ad esempio le /type signature/ in Haskell).</div>
<div><br></div>+) last, but not least: gli studenti avrebbero la possibilità di conoscere "bene" la programmazione funzionale, cosa che potrebbe non ripetersi nel corso dei loro studi (secondo me è follia!!. Io, ad esempio, l'ho studiata per fatti miei, anche a causa di un pessimo corso di linguaggi di programmazione... Vabeh..).<div>
<br></div><div>-) Probabilmente la spiegazione e l'uso di alcune strutture dati sarebbe sacrificato, ma ci sarebbero il corso di ADS e OOP per colmare il gap, evitando a volte inutili overlap e ripetizioni.</div><div>
<br></div><div>Questa i miei 2 cents  "mattutini" sulla questione !-)</div><br><br>-- <br><div dir="ltr">Valerio</div><br>