ricorsione e linguaggi funzionali, era Re: [Soci SLIP] Da grande farò il programmatore

llcfree llcfree a gmail.com
Mer 20 Mar 2013 15:07:56 CET


On Wed, 2013-03-20 at 10:45 +0100, Lucio Crusca wrote:

> Sì, è vero, io sono uno di quelli (non di quelli affezionati a scheme, ma di 
> quelli affezionati al concetto di programmazione funzionale). Al primo 
> programma scritto in C che va in stack overflow perché il C è il linguaggio 
> sbagliato per scrivere funzioni ricorsive, ci si rende conto che forse esiste 
> anche un mondo là fuori, inteso fuori dall'università, e che forse scheme non 
> è necessariamente la risposta a tutti i mali.

Le cose da sapere sono:

0) cos'e' un algoritmo e cosa sono le strutture dati (il buon vecchio,
insuperato,  Wirth, per intenderci) 

1) come funziona un compilatore/assemblatore

da cui si vede che:

2) la ricorsione e' l'operazione piu' costosa in assoluto per via del
costo associato ad un richiamo di funzione  

3) per ogni programma ricorsivo si dimostra che ne esiste uno iterativo
che fa esattamente la stessa cosa

Cio' detto, emacs e' scritto in lisp, il papa' di tutti i linguaggi
funzionali (scheme e' uno dei tanti dialetti). Lisp e' nato nel 1958.
Per capirci, solo il fortran e' di un anno piu' vecchio. E io sono nata
un anno prima di fortran, questo vi da' un'idea :)

A me emacs piace. Evidentemente, anche a Stallman piacevano i linguaggi
funzionali, e questo in un'epoca in cui era necessaria una lisp machine
per farli girare (che solo le universita' americane si potevano
permettere) visto che lo ha scelto per emacs. Lo ha fatto per alcune
caratteristiche fondamentali dei linguaggi funzionali tutti, da lisp in
qua, tra cui il poter manipolare dati e programmi allo stesso modo e il
poter definire dinamicamente nuove funzioni (una sorta di "creazione"
non divina, digitale e sotto il completo controllo umano).

Aveva ragione lui, perche' ora i linguaggi funzionali girano benissimo
su un qualsiasi pc e derivano tutti, ma proprio tutti, da lisp. Certo
Stallman non aveva fatto una scelta per pochi. Vedeva lontano. Percio'
ha messo insieme tutti i vantaggi (linguaggio perfettamente adatto allo
scopo) senza farsi spaventare dagli svantaggi (lentissimo, solo per
macchine dedicate, a quell'epoca) che col tempo sarebbero spariti,
lasciandosi dietro un editor che e' potuto crescere fino a fare di tutto
(e' a dir poco riduttivo considerare emacs un editor di testo) e
continua ancora oggi a crescere su se stesso per fare sempre cose nuove
e adattarsi alle nuove esigenze (per esempio, da editor di testo e' ora
editor grafico, ha persino aggiunto i tastini) senza mai dover essere
"riscritto" da capo perche' inefficiente. All'epoca era lento, ma solo
perche' non esistevano ancora le macchine su cui potesse girare veloce.

Quello a cui mi riferivo io in un email precedente (e, giuro, l'ho visto
fare infinite volte, con relativo scoramento) erano gli studenti che
usavano scheme per risolvere i sistemi di equazioni lineari con mille
equazione e mille incognite. Questo a scienze dell'informazione. E
invece gli ingegneri che mettevano insieme un programma a caso, purche'
in qualche modo funzioni, senza la piu' pallida idea del casino che
facevano.

Ma come potevano far altro, se tanta fatica avevano fatto ad imparare
scheme e mai, proprio mai, gli era venuta la voglia di capire un po'
meglio cosa fosse un linguaggio di programmazione e cosa si intendesse
per "programmare"? Anche dopo aver superato tutti gli esami di
informatica molti non ne avevano capito nulla. Per gli ingegneri,
invece, la cosa interessante (dal punto di vista psicologico) e' che
alcuni erano davvero ottimi progettisti hardware, ma non riuscivano, si
direbbe, a veder l'affinita' metodologica tra il progettare hardware e
il progettare software, che veniva trattato con somma indifferenza, come
ogni cosa non "degna". Parlo di quando gli ingegneri ancora non erano
stati trasformati in massa in manager o tenuti a scuola per reggere il
sistema, uscendo praticamente intonsi dopo qualche anno, solo un po'
piu' vecchi, e percio' progettarem, almeno un pochino, lo sapevano
ancora fare.

Si direbbe che appena uno esce dal suo campo, faccia fatica ad accettare
che altri settori abbiano pari dignita' e richiedano competenze
analoghe, che vanno solo applicate ad oggetti diversi (gli oggetti in
se', SONO diversi, il progettare, no, richiede esattamente lo stesso
metodo e non esistono scorciatoie, solo pezzi di carta a cui, che sian
soldi o diplomi, non corrisponde necessariamente nulla di reale).

Loredana





Maggiori informazioni sulla lista Soci