Pensare da informatico/Introduzione
In qualità di educatore, ricercatore e autore di libri, sono lieto di assistere alla conclusione della stesura di questo testo. Python è un linguaggio di programmazione divertente e semplice da usare, la cui popolarità è andata via via crescendo nel corso degli ultimi anni. Python è stato sviluppato più di dieci anni fa da Guido van Rossum che ne ha derivato semplicità di sintassi e facilità d'uso in gran parte da ABC, un linguaggio dedicato all'insegnamento sviluppato negli anni '80. Oltre che per questo specifico contesto, Python è stato creato per risolvere problemi reali, dimostrando di possedere un'ampia varietà di caratteristiche tipiche di linguaggi di programmazione quali C++, Java, Modula-3 e Scheme. Questo giustifica una delle sue più rimarchevoli caratteristiche: l'ampio consenso nell'ambito degli sviluppatori professionisti di software, in ambiente scientifico e di ricerca, tra i creativi e gli educatori.
Nonostante l'interesse riscosso da Python in ambienti così disparati, potresti ancora chiederti "Perché Python?" o "Perché insegnare la programmazione con Python?". Rispondere a queste domande non è cosa semplice, specialmente quando l'interesse generale è rivolto ad alternative più masochistiche quali C++ e Java. Penso comunque che la risposta più diretta sia che la programmazione in Python è semplice, divertente e più produttiva.
Quando tengo corsi di informatica, il mio intento è quello di spiegare concetti importanti interessando ed intrattenendo nel contempo gli studenti. Sfortunatamente nei corsi introduttivi c'è la tendenza a focalizzare troppo l'attenzione sull'astrazione matematica e nel caso degli studenti a sentirsi frustrati a causa di fastidiosi problemi legati a dettagli di basso livello della sintassi, della compilazione e dall'imposizione di regole poco intuitive. Sebbene questa astrazione e questo formalismo siano importanti per il progettista di software professionale e per gli studenti che hanno intenzione di proseguire i loro studi di informatica, questo approccio in un corso introduttivo porta solitamente a rendere l'informatica noiosa. Quando tengo un corso non voglio avere davanti una classe di studenti annoiati: preferirei piuttosto vederli impegnati a risolvere problemi interessanti esplorando idee diverse, approcci non convenzionali, infrangendo le regole e imparando dai loro stessi errori.
Inoltre non voglio sprecare mezzo semestre a risolvere oscuri problemi di sintassi, cercando di capire messaggi del compilatore generalmente incomprensibili o di far fronte al centinaio di modi in cui un programma può generare un "general protection fault".
Una delle ragioni per cui mi piace Python è che esso permette un ottimo equilibrio tra l'aspetto pratico e quello concettuale. Dato che Python è interpretato, gli studenti possono fare qualcosa quasi subito senza perdersi in problemi di compilazione e link. Inoltre Python è fornito di un'ampia libreria di moduli che possono essere usati in ogni sorta di contesto, dalla programmazione web alla grafica. Questo aspetto pratico è un ottimo sistema per impegnare gli studenti e permette loro di portare a termine progetti non banali. Python può anche servire come eccellente punto di partenza per introdurre importanti concetti di informatica: dato che supporta procedure e classi, possono essere gradualmente introdotti argomenti quali l'astrazione procedurale, le strutture di dati e la programmazione ad oggetti, tutti solitamente relegati a corsi avanzati di Java o C++. Python prende a prestito un certo numero di caratteristiche da linguaggi di programmazione funzionali e può essere quindi usato per introdurre concetti che sarebbero normalmente trattati in dettaglio in corsi di Scheme o di Lisp.
Leggendo la prefazione di Jeffrey sono rimasto colpito da un suo commento: Python gli ha permesso di ottenere "un livello generale di successo più elevato ed un minore livello di frustrazione", e gli è stato possibile muoversi "con maggiore velocità e con risultati migliori". Questi commenti si riferiscono al suo corso introduttivo: io uso Python per queste stesse ragioni in corsi di informatica avanzata all'Università di Chicago. In questi corsi sono costantemente messo di fronte alla difficoltà di dover coprire molti argomenti complessi in un periodo di appena nove settimane. Sebbene sia certamente possibile per me infliggere un bel po' di sofferenza usando un linguaggio come il C++, ho spesso trovato che questo approccio è controproducente, specialmente nel caso di corsi riguardanti la semplice programmazione. Ritengo che usare Python mi permetta di focalizzare meglio l'attenzione sull'argomento reale della lezione, consentendo nel contempo agli studenti di completare progetti concreti.
Sebbene Python sia un linguaggio ancora giovane ed in continua evoluzione, credo che esso abbia un futuro nel campo dell'insegnamento. Questo libro è un passo importante in questa direzione.
David Beazley, autore di Python Essential Reference
Università di Chicago