|
I libri dedicati all'introduzione alla programmazione in genere non
utilizzano un linguaggio di programmazione vero e proprio come il Perl
o il C.
Utilizzano piuttosto il pseudocodice, una sorta di linguaggio generalizzato
utilizzato per la descrizione degli algoritmi.
Negli intenti dell'autore, Elements of Programming with Perl
(Manning, Ottobre 1999, 348 pagine) vuole introdurre ai concetti della
programmazione utilizzando Perl. Si vogliono dunque presentare gli elementi
di base della programmazione, con il Perl (invece del solo pseudocodice) a
fare da cornice e sostegno all'insieme.
Non viene richiesto quasi nessun prerequisito al lettore: secondo l'autore
non è necessaria alcuna precedente conoscenza di programmazione. E proprio
a tali lettori è stato indirizzato il volume.
Elements of Programming with Perl è diviso in quattro sezioni. Nella
prima parte introduttiva troviamo tre capitoli dedicati alle informazioni
di base sulla programmazione ed il linguaggio Perl.
La seconda sezione è dedicata agli aspetti essenziali, dunque le strutture
ed i concetti necessari alla realizzazione di un normale programma (variabili,
istruzioni per il controllo del flusso, etc).
La terza parte è dedicata agli elementi più pratici e specifici del Perl,
quali le espressioni regolari, il trattamento di stringhe e liste, l'utilizzo
dei moduli etc.
L'ultima sezione tratta invece gli aspetti più avanzati della programmazione
come la programmazione modulare, gli algoritmi e le strutture dati complesse
(algoritmi di ordinamento, alberi binari, heap), la Programmazione Orientata
agli Oggetti (OOP).
Infine troviamo 4 brevissime appendici (ed un glossario) sugli switch Perl in
linea di comando, le variabili speciali, le fonti di informazioni sul Perl e
sui formati numerici.
L'introduzione inizia adeguatamente, con degli esempi che utilizzano paragoni
con il mondo reale per avviare al concetto di programma. Si parla anche di Perl,
della sua natura di linguaggio interpretato/compilato, di come poterlo avviare e
come trovare documentazione adatta.
Ma già al secondo capitolo, senza aver introdotto alcuna struttura dati o
altri concetti base, troviamo un capitolo dedicato all'identazione dei programmi,
al modo corretto di nominare le variabili (con appena un accenno nel definire
cosa sono), all'utilizzo corretto dei commenti e a quello di "strict" come
sano modus operandi.
Il capitolo due in questa posizione è a mio parere mal posto. Credo che un
utente che si avvicini per la prima volta alla programmazione sia disorientato
nel trovare delle linee di codice, per lui sicuramente astruse, commentate con
delle frasi tipo "non preoccupatevi se non capite, il codice serve solo da
esempio. Capirete dopo, fissate l'idea". Il capitolo due è ben scritto ma
credo che sarebbe stato più conveniente utilizzarlo come buon capitolo di appendice.
Nel terzo capitolo si comincia già a fare sul serio con un primo programma,
per focalizzare in maniera pratica il "cos'è" la programmazione e dare un primo
sentiero alle proprie idee. Si inizia dunque con la formalizzazione di un problema
e la sua soluzione attraverso un tipo di pseudocodice valido e chiaro, preso in
prestito dal Literate Programming (LP) di Knuth, che descrive in maniera incrementale
ad un umano (piuttosto che ad un computer), i passi da fare per raggiungere
l'obiettivo. A fine capitolo troviamo però l'implementazione in puro Perl
dell'astrazione fornita da LP.
Dunque c'è strict, degli until, delle espressioni regolari etc.
Di nuovo credo che non sia utile al lettore che non ha mai programmato,
vedere del codice Perl reale, anche abbastanza complicato, senza che non gli
sia mai stata introdotta alcuna nozione rigorosa.
Si sarebbe potuto tralasciare l'implementazione in Perl, ed approfondire
adeguatamente il valido esempio in pseudocodice. Pseudocodice (qui, positivamente,
davvero molto lontano da un linguaggio di programmazione) che ritengo insostituibile
nei primissimi passi verso la compresione dei concetti di base, del cosa significhi
programmare.
La seconda sezione inizia invece in maniera più canonica con l'introduzione
ai tipi di dati e alle variabili, con degli schemi esplicativi. Si continua poi
con le istruzioni che controllano il flusso del programma (loop, if, etc)
corredate da qualche diagramma di flusso (concetto quest'ultimo non presentato
rigorosamente), gli operatori logici.
Anche qui troviamo però un capitolo, il sesto, che parla di I/O e di text
processing con un accenno alle espressioni regolari. Di nuovo mi sorgono dubbi
sull'utilità nell'introduzione di argomenti piuttosto complicati così presto.
Nella terza parte i concetti si fanno via via più complicati (espressioni
regolari, trattamento di liste, etc) e perfino un capitolo sull'utilizzo di
moduli come LWP e CGI.pm. Continuo a ritenere scorretto il posizionamento di
alcuni capitoli del libro: strumenti (che non sono propriamente concetti)
potenti ed avanzati quali LWP e CGI.pm a mio avviso non dovrebbero nemmeno
comparire in un testo esplicitamente dedicato a diradare i dubbi di un utente
alle prime armi con la programmazione.
Nella quarta parte la situazione ritorna alla normalità con una buona introduzione
agli algoritmi e ai concetti più avanzati, come detto heap, sort, OOP, etc.
Del libro rimane la perplessità sulla sequenza con cui sono stati introdotti
i diversi argomenti. Tra i tanti, utilizzare prima il codice e poi focalizzarne
il concetto con un diagramma di flusso, o l'accenno troppo precoce di certi
aspetti (ad esempio lo scoping delle variabili nei primi capitoli, senza aver
dato ancora una definizione rigorosa di variabile) potrebbero portare ad un po'
di confusione.
Se si guarda al libro secondo gli intenti dell'autore, ovvero come testo
introduttivo alla programmazione, utilizzando cioè il Perl come un mezzo
per arrivare al fine di saper programmare, credo non sia un prodotto riuscito.
I capitoli iniziali mal posizionati e la trattazione non troppo approfondita
degli elementi di base della programmazione, lo rendono a mio avviso troppo
ostico per una persona che non ha mai programmato e ne voglia imparare l'arte
con questo libro.
Se invece lo prendiamo con una introduzione al Perl, dunque la conoscenza
di Perl come fine e gli accenni alla programmazione come mezzo per arrivare
più facilmente a questo fine, allora il libro acquista significato e spessore.
In quest'ottica, i diagrammi di flusso e le brevi focalizzazioni sulle nozioni
di base della programmazione, rendono l'approccio al Perl più rilassato e
completo.
Con una diversa disposizione dei capitoli iniziali e con magari un altro
titolo del tipo "Learning Perl from the basics", questo libro sarebbe ben
posizionato e valido.
Così com'è credo che possa trarre in inganno.
|