JavaScript non è mai la prima scelta di un aspirante programmatore. Spesso si finisce per usarlo all’occorrenza, per giochetti AJAX o per manipolare il DOM. Google, copia & incolla, e JavaScript è servito. Prima o poi l’abbiamo fatto tutti. E’ un vero peccato perché JavaScript merita di ben altra attenzione.
A spiegarlo al mondo è stato naturalmente Douglas Crockford in JavaScript: The Good Parts, un libretto di 172 intensissime pagine in cui si ha costantemente la sensazione che l’autore intenda demolire il linguaggio mentre, in realtà, non fa altro che esaltarne le doti. JavaScript è il linguaggio più usato al mondo, e non a caso: è l’unico supportato da qualunque browser del pianeta. La recente affermazione di Node lato server ne dimostra l’indiscussa attualità.
Ciò nonostante JavaScript rimane un linguaggio inadatto al programmatore neofita. O forse no.
John Resig e la Khan Academy
John Resig è il creatore di jQuery. Vera star internazionale, autore di libri di successo, ora lavora per Khan Academy, la famosa accademia online. Ecco ciò che Resig ha annunciato poco prima di Natale:
Alla Khan Academy stiamo considerando nuovi, originali, metodi di insegnamento della Computer Science. L’aspetto più interessante è che proporremo agli studenti JavaScript come loro primo linguaggio.
La sua è una situazione particolarmente vantaggiosa: oltre a essere completamente digiuni di programmazione i suoi studenti hanno appena completato un corso di matematica e scienze.
In effetti insegnare l’ereditarietà prototipale (prototypal inheritance) caratteristica di JavaScript a programmatori già abituati alla tradizionale ereditarietà degli oggetti richiede un certo impegno. E’ senz’altro più semplice spiegarla a chi non sa nemmeno cosa sia l’ereditarietà in informatica. JavaScript è anche un buon linguaggio per la programmazione funzionale, anche questa più facile da capire in assenza di condizionamenti precedenti. In questo filmato Resig parla del suo progetto sottolineando quello che probabilmente è il più grande vantaggio di JavaScript, la sua ubiquità:
Resig non si nasconde certo le difficoltà, tanto che nel suo articolo si dilunga nella spiegazione di una serie di accorgimenti didattici e tecnici che dovrebbero semplificare il processo di apprendimento.
Parliamone
Il progetto è senz’altro interessante e non c’è dubbio che JavaScript sia un ottimo investimento. Non sono sicuro però che partire da JavaScript sia l’approccio migliore per imparare a programmare. L’obiettivo iniziale dovrebbe essere, io credo, imparare le basi della programmazione a prescindere dal linguaggio. Non sarebbe meglio sceglierne uno senza troppe bad parts, dotato di sintassi più semplice, applicabile a contesti diversi e non solo al web?
Chi mi legge sa della mia predilezione, per altro criticata aspramente da più parti, per Python come linguaggio didattico. Per altri motivi andrebbe bene anche un super-classico come il linguaggio C oppure, perché no, un linguaggio funzionale puro come Haskell. JavaScript? Assolutamente si, ma come secondo linguaggio.
Mi domando infine, e qui ci metto un pizzico di malizia, se la scelta di Khan Academy non sia stata influenzata dalla passione per JavaScript del suo super-consulente, a prescindere da ogni valutazione didattica. Voi che ne pensate?

Personalmente credo che uno dei problemi di javascript siano le complessità della piattaforma. Non si può usare javascript, senza conoscere HTML e CSS, con tutte le complicazioni del caso.
Senza contare la complessità dovute ad un ambiente meno controllato di, ad esempio, un compilatore C++, come l’incertezza dovuta alla piattaforma (perché devo fare in un modo su di un browser e diversamente in un altro ?).
Il linguaggio in sé ha anche il difetto di essere “cresciuto”, come PHP, invece di essere stato progettato, il che lo rende facile da usare, ma difficile da capire. Ciò fa sì che sia difficile comprendere le basi della programmazione, il che, come hai fatto notare, è sicuramente un male.
Se dovessi scegliere una piattaforma didattica punterei su .NET, perché è possibile scegliere linguaggi e paradigmi differenti ed è realisticamente semplice passare da un programma console allo sviluppo di un sito web, mostrando quindi praticamente quante cose differenti si possono fare, una volta imparati i fondamentali.
Gabriele concordo su JavaScript. Su .NET il rischio, secondo me, è che il neofita confonda il framework con il linguaggio. Può succedere anche con gli linguaggi certo, ma con .NET il confine è veramente labile.
come primo linguaggio sono per il C. non ho dubbi. e anche un pò di assembly, per capire, vedendo, le codifiche dei dati, e i puntator-riferimentii-indirizzi, che tanto fanno penare i programmatori neofiti.
.NET mi piace, ma ho sempre paura degli ambienti all inclusive.
JavaScript… non sono ancora riuscita a farmelo piacere.