ELOGIO DI BABELE - Mondo Digitalearchivio-mondodigitale.aicanet.net/Rivista/08_numero_2/Martini...

7
MONDO DIGITALE •n.2 - giugno 2008 1. L’UNITÀ DEI LINGUAGGI L a nascita dell’informatica, quale scienza che studia i procedimenti di calcolo “effet- tivi”, precede di almeno dieci anni la disponibi- lità di quei manufatti che chiamiamo calcolato- ri (computer) e l’utilizzo dei quali troppo spes- so rischiamo di confondere con quella scien- za 1 . Lo studio del calcolabile prende una sua forma matura nei primi anni trenta del nove- cento, nel cuore della logica matematica, per opera di K. Gödel, A. Church, S. Kleene, E. Post e, soprattutto, Alan M. Turing. Mediante un’a- nalisi dei processi di calcolo umani, in partico- lare delle limitazioni della memoria e della per- cezione, Turing identifica il “calcolo” con la possibilità di manipolazione combinatoria di insiemi finiti e discreti di simboli: calcolare è nient’altro che copiare simboli, tratti da un al- fabeto finito, secondo regole anch’esse finite e fissate in anticipo. Il modello è così semplice da poter essere visualizzato come un automa (la “macchina di Turing”) che, in accordo alle regole memorizzate in una lista finita, sposta simboli su un nastro, al quale accede un sim- bolo alla volta. L’aspetto sorprendente dell’a- nalisi di Turing è che questo modello così ele- mentare ed apparentemente rudimentale, co- sì basato sull’analisi dei processi di calcolo umani 2 , è un modello del tutto generale, tanto da includere una macchina che è in grado di emulare tutte le altre. Consideriamo, infatti, l’esecuzione di una macchina su un suo dato di ingresso. La mac- china funziona in modo deterministico, appli- cando le regole ai dati. Se abbiamo una de- scrizione della macchina - ovvero un elenco La compilazione permette di ridurre ad unità la Babele dei linguaggi di pro- grammazione. Tuttavia, come ben sanno i teorici della traduzione lettera- ria, non esiste mai una traduzione che conservi tutte le caratteristiche del- l’originale. I linguaggi di programmazione non fanno eccezione. Ci chiede- remo se questa pluralità linguistica sia un bene anche per l’informatica. So- sterremo la tesi - scontata, ma qualche volta dimenticata - che la simulta- nea padronanza di più linguaggi è una grande ricchezza anche per l’infor- matico. Anzi, si tratta di un vero e proprio requisito professionale. Simone Martini ELOGIO DI BABELE 17 3.2 Una versione preliminare di questo contributo ha costituito una delle conferenze invitate di apertura di Di- damatica 2007, Cesena. 1 «Computer science is no more about computers than astronomy is about telescopes», E. W. Dijkstra, pre- mio Turing 1972. Il premio Turing, il più importante riconoscimento internazionale per un informatico, è at- tribuito ogni anno dall’associazione professionale degli informatici americani (ACM). 2 «Turing’s “machines”: These machines are humans who calculate», L. Wittgenstein [7].

Transcript of ELOGIO DI BABELE - Mondo Digitalearchivio-mondodigitale.aicanet.net/Rivista/08_numero_2/Martini...

M O N D O D I G I T A L E • n . 2 - g i u g n o 2 0 0 8

1. L’UNITÀ DEI LINGUAGGI

L a nascita dell’informatica, quale scienzache studia i procedimenti di calcolo “effet-

tivi”, precede di almenodieci anni la disponibi-litàdiqueimanufatti chechiamiamo calcolato-ri (computer) e l’utilizzo dei quali troppo spes-so rischiamo di confondere con quella scien-za1. Lo studio del calcolabile prende una suaforma matura nei primi anni trenta del nove-cento, nel cuore della logica matematica, peropera di K. Gödel, A. Church, S. Kleene, E. Poste, soprattutto, Alan M. Turing. Mediante un’a-nalisi dei processi di calcolo umani, in partico-lare delle limitazioni della memoria e della per-cezione, Turing identifica il “calcolo” con lapossibilità di manipolazione combinatoria diinsiemi finiti e discreti di simboli: calcolare ènient’altro che copiare simboli, tratti da un al-

fabeto finito, secondo regole anch’esse finite efissate in anticipo. Il modello è così sempliceda poter essere visualizzato come un automa(la “macchina di Turing”) che, in accordo alleregole memorizzate in una lista finita, spostasimboli su un nastro, al quale accede un sim-bolo alla volta. L’aspetto sorprendente dell’a-nalisi di Turing è che questo modello così ele-mentare ed apparentemente rudimentale, co-sì basato sull’analisi dei processi di calcoloumani2, è un modello del tutto generale, tantoda includere una macchina che è in grado diemulare tutte le altre.Consideriamo, infatti, l’esecuzione di unamacchina su un suo dato di ingresso. La mac-china funziona in modo deterministico, appli-cando le regole ai dati. Se abbiamo una de-scrizione della macchina - ovvero un elenco

La compilazione permette di ridurre ad unità la Babele dei linguaggi di pro-

grammazione. Tuttavia, come ben sanno i teorici della traduzione lettera-

ria, non esiste mai una traduzione che conservi tutte le caratteristiche del-

l’originale. I linguaggi di programmazione non fanno eccezione. Ci chiede-

remo se questa pluralità linguistica sia un bene anche per l’informatica. So-

sterremo la tesi - scontata, ma qualche volta dimenticata - che la simulta-

nea padronanza di più linguaggi è una grande ricchezza anche per l’infor-

matico. Anzi, si tratta di un vero e proprio requisito professionale.

Simone Martini

ELOGIO DI BABELE

17

3.2

Una versione preliminare di questo contributo ha costituito una delle conferenze invitate di apertura di Di-damatica 2007, Cesena.

1 «Computer science is no more about computers than astronomy is about telescopes», E. W. Dijkstra, pre-mio Turing 1972. Il premio Turing, il più importante riconoscimento internazionale per un informatico, è at-tribuito ogni anno dall’associazione professionale degli informatici americani (ACM).

2 «Turing’s “machines”: These machines are humans who calculate», L. Wittgenstein [7].

0

delle regole in base alle quali opera - possia-mo seguire la sua esecuzione, passo passo,con carta e matita. Questo processo, parten-do da una descrizione della macchina e da undato di ingresso, seguire l’esecuzione passopasso della macchina, è esso stesso un proce-dimento di calcolo. Turing non ha dunque dif-ficoltà a mostrare che anche questo calcolo3 èesprimibile da una macchina. Riassumendo:tra tutte le macchine di Turing ne esiste unache è in grado di simulare tutte le altre (lamacchina universale). Non importa “costrui-re” una specifica macchina per ogni calcolo dinostro interesse. Basta costruire la macchinauniversale e fornirle la descrizione (il pro-gramma) del calcolo che vogliamo eseguire.La macchina universale eseguirà per noi ilprogramma sui dati di nostra scelta.Sarà John von Neumann a rendersi conto pre-sto delle potenzialità tecnologiche insite inquest’analisi, progettando un manufatto cheavrebbe realizzato, con valvole e fili, unamacchina di Turing universale, cioè un com-puter, non più human, ma hardware whichcalculates4. I calcolatori che stanno sulle no-stre scrivanie sono, ancor oggi, variazioni tec-nologicamente sofisticate di quel progetto.A noi, però, non interessa l’aspetto tecnolo-gico, ma una lettura linguistica di questi fatti.Non vi è calcolo senza linguaggio e ogni cal-colo eseguibile da una macchina di Turing èesprimibile nel linguaggio della macchina diTuring universale. Un solo linguaggio, chepuò essere reso tanto semplice da includeredue soli simboli esaurisce mediante codificatutto l’esprimibile.Turing non è il solo a studiare i processi di cal-colo effettivo. Negli stessi anni, altri descrivo-no in cosa consiste “calcolare”, partendo dapresupposti ed analisi diverse; è quindi natu-rale che ottengano modelli diversi. AlonzoChurch introduce un formalismo che chiama“λ-calcolo” ed è basato sulla riscrittura suc-cessiva di sequenze di caratteri che corrispon-

donoadespressioni simboliche;KurtGödelunmodo di definire funzioni per “ricorrenza” o ri-corsione; Emil Post un sistema di celle conti-gue che si influenzano tra loro e che evolvonoper passi discreti. E in seguito, quando la di-sponibilità di calcolatori elettronici richiederàdi poterli programmare in modo sempre piùsemplice ed efficace, saranno introdotte altrecentinaia di sistemi diversi (i linguaggi di pro-grammazione) per descrivere il calcolo. Moltisono oggi dimenticati, altri sono ancora in usodopo più di cinquant’anni (FORTRAN, peresempio, o LISP), altri ancora sono introdottianno dopo anno ancor oggi. L’unità dell’analisidiTuring, il suo ridurre il calcolo all’unità di unasola macchina, si infrange nella moltiplicazio-ne dei linguaggi e dei formalismi, in una Babe-le in cui non è facile mettere ordine.Già ipadri fondatori, tuttavia, sapevanocheque-sta moltiplicazione di linguaggi non intacca laprofonda unità, l’invarianza del concetto sot-tostante. Infatti, tutti questi linguaggi sono so-lo modi diversi di descrivere lo stesso concetto.Se una certa funzione tra numeri naturali è cal-colabile secondoTuring, allora è calcolabile an-che secondo Church, o Kleene, o con un qual-siasi altro linguaggio di programmazione. E vi-ceversa. Il modo didescrivere il calcolo è diver-so, ma il concetto di “cosa è calcolabile” è inva-riante rispettoalladescrizione. Il concettodi“cal-colabile” è, in un certo senso, un assoluto dellanatura,enonunaspetto legatoal linguaggionelquale lo descriviamo: i linguaggi sono diversi,ma sono equivalenti quanto a “cosa” possonocalcolare. Questa equivalenza tra sistemi for-mali viene subito osservata da Church eTuring,e poi dimostrata per ogni altro formalismo peril calcolo (che chiameremo genericamente: lin-guaggio di programmazione).Church e Turing stabiliscono queste equivalen-ze costruendo quello che l’informatica avrebbechiamato un interprete. È dagli anni cinquanta,invece, chequestaequivalenzaprende la formadi un compilatore5. Un linguaggio di program-

M O N D O D I G I T A L E • n . 2 - g i u g n o 2 0 0 8

1

0

0

1

18

3 Quello, cioè, che, data una descrizione della macchina e un particolare dato esegue (simula) la macchinasu quel dato.

4 Cfr. nota 2.5 Secondo l’uso moderno, usiamo il termine “compilatore” per indicare un generico traduttore automatico

tra due linguaggi di programmazione (la letteratura più antica riservava il termine ai traduttori da un lin-guaggio ad alto livello ad uno di più basso livello). Per qualche dettaglio in più sui compilatori, si veda [2].

mazione è un sistema formale per la descrizio-ne del calcolo. Si trattadi linguaggi artificiali, al-cuni assai rudimentali, altri di una notevole so-fisticazione, come i linguaggi ad altissimo li-vello delle ultime generazioni. Dal punto di vi-sta della linguistica, si tratta comunque di lin-guaggi semplicissimi, la cui sintassi èdefinita inmodo formale con grammatiche generative al-laChomsky6, e la cui semanticaèdefinita inmo-do che ad ogni frase corretta corrisponda un si-gnificato univoco. Ora, sappiamo dall’analisidi Turing e Church che, data una funzione cal-colabile f inuncerto formalismoL1, questaècal-colabile anche in un altro formalismo L2. Pos-siamo dirlo in modo più esplicito: dato un pro-gramma che calcola f scritto inL1, esiste un pro-gramma che ancora calcola f ed è scritto in L2.Questa corrispondenza tra L1e L2può esser vi-sta come una traduzione: ogni frase corretta(cioè ogni programma) di L1 può esser tradot-ta in una fraseequivalente (cioè un programmache calcola la stessa funzione) scritta in L2. Vi-sta la semplicità dei linguaggi in considerazio-ne, questa traduzione può essere “facilmente”automatizzata.Ovvero,ancoraunavolta,espres-sa come calcolo: il traduttore stesso da L1 a L2può essere dato come un programma (il com-pilatore da L1 a L2), scritto in un certo linguag-gio. Possiamo riassumere e sintetizzare questeosservazioni in un enunciato più formale:

dati due qualsiasi linguaggi di programma-zione L1 e L2, esiste un programma CL1⇒L2

(un compilatore da L1 a L2) tale che, per ogniprogramma P scritto in L1, CL1⇒L2 (P) è unprogramma in L2 equivalente a P.

Se il lettore ci perdona, possiamo spingerequesta prima riflessione ancora un passo inavanti. Il compilatore da L1 a L2 può essere

espresso esso stesso in L1: nel linguaggio L1descriviamo il processo necessario a tradur-re ogni frase di L1 in una frase di L27.La pluralità dei linguaggi, dunque, non è cheuna manifestazione esterna della sottostan-te, robusta invarianza del concetto di calcolo.La traduzione realizza la reductio ad unum,riconducendo ogni linguaggio ad un altro, elo fa in modo “uniforme”, essa stessa codifi-cata in un calcolo, nello stesso linguaggioche viene tradotto. Babele è solo un’appa-renza, che la compilazione fa svanire comeneve al sole.

2. UNA TRADUZIONE FEDELE?

La descrizione dei linguaggi di programma-zione ha preso a prestito molte tecniche dal-la linguistica formale. Perché, allora, non in-terrogare le scienze del linguaggio anche sul-la questione della traduzione? Per l’informa-tico, un compilatore è un traduttore fedeletra due linguaggi, un concetto del quale i teo-rici della traduzione diffidano. Senza entrarenello specialistico, ci sia concesso di citaresolo qualche frase di George Steiner8, e dauno dei suoi testi meno tecnici9:

“una lingua riempie una cella nell’alvearedelle percezioni e delle interpretazioni possi-bili. Articola una gerarchia di valori, di signi-ficati e di supposizioni che non corrispondeesattamente a quella di qualsiasi altra lin-gua. (...) Parlando, creiamomondi”.

Ogni lingua rappresenta un universo concet-tuale irriducibile ad ogni altra lingua. Non so-lo ogni espressione linguistica complessa,ma perfino le singole parole, e addirittura itermini più semplici, fattuali, portano con sé

M O N D O D I G I T A L E • n . 2 - g i u g n o 2 0 0 8

1

19

0

0

0

1

6 Anzi, sono grammatiche di tipo 2 (cioè non contestuali), alle quali sono imposti ulteriori semplici vincolicontestuali mediante l’utilizzo di altri sistemi formali.

7 Compilatori siffatti sono talvolta chiamati “metacircolari”. Il primo a descrivere un compilatore di questo ti-po è l’italiano Corrado Böhm [1], anni prima della disponibilità del primo compilatore ad alto livello com-merciale, quello per FORTRAN (rilasciato da IBM nel 1957).

8 George Steiner (Parigi, 1929) è figura di primo piano della cultura internazionale. Importante critico lettera-rio comparatista, ha insegnato a Cambridge, Ginevra, Oxford, Harvard, Stanford, Princeton. Perfettamentetrilingue, ha studiato a fondo la natura del linguaggio e i problemi della traduzione, anche all’interno dellastessa lingua.

9 Citazioni scientificamente più argomentate, ma meno evocative, si trovano, per esempio, in [5]. Le citazionidel testo sono da [6], alle pagine 108-112 della traduzione italiana.

0

connotazioni ed evocazioni che vengono de-finitivamente perse in traduzione:

“il ricordo registratodidisponibilità, persinodiabbondanza, nella parola bread (...) per moltiaspetti si trova in contraddizione con le conno-tazioni di penuria e di fame del francese pain.Vi èuneccesso intraducibiledi storia,diunami-stica possessiva, nellaHeimat tedesca”.

Ma se la traduzione non è in grado di mante-nere questi “ricordi registrati”, la loro dispo-nibilità nella varietà delle lingue è ricchezzainestimabile. Il poliglottismo è una benedi-zione, un sapere di più, e saper far meglio, ri-spetto al monoglotta, perfino negli aspettipiù connotati fisicamente dell’esistenza:

“l’eros delle persone multilingui, persino diun monoglotta dotato di mezzi verbali e diun buon orecchio, è diverso da quello dellepersone linguisticamente negate o stonate.

(...) Come doveva esser monotono l’amorein Paradiso”.

“Babele è stata il contrario di una maledizio-ne. Il dono delle lingue non è una metaforavuota, è proprio un dono e una benedizioneimmensa”.

A dire il vero gli informatici non sono proprio“vili meccanici” e ben presto hanno osservatoanch’essi quanto il linguaggio informi il mododi guardare al calcolo. Il teorema di equivalen-za che abbiamo citato poco fa non è invalidatoda queste considerazioni, ma in un certo sen-so esprime solo un aspetto della faccenda,quello della potenza “bruta”: non ci troveremomai a dover cambiare linguaggio di program-mazione perché qualche calcolo vi è impossi-bile. Ma alcuni linguaggi sono più adatti di altria determinati scopi. Alcuni sono più evocativi,altri più sintetici, altri ancora più astratti10. Tragli aforismi di Alan Perlis11 troviamo:

“a good programming language is a concep-tualuniverse for thinkingaboutprogramming"

che ricorda in modo sorprendente il «Parlan-do, creiamo mondi» di Steiner. E ancora:

“a languagethatdoesn’taffect thewayyouthinkabout programming, is not worth knowing”

e“therewill always be thingswewish to say inour programs that in all known languagescan only be said poorly”.

3. UNA BUONA NOTAZIONE

Un pioniere che fa della notazione un cardinedella propria riflessione è Kenneth Iverson12.Ideatore di un linguaggio di programmazione

M O N D O D I G I T A L E • n . 2 - g i u g n o 2 0 0 8

1

0

0

1

20

“La torre di Babele”, dipinto di Pieter Bruegel del 1563

10 È stato fatto qualche tentativo di definire in modo formale una nozione di “espressività” (in quanto distintadal potere computazionale), soprattutto per i linguaggi sequenziali. In sostanza, un linguaggio L viene defi-nito come più espressivo di L1 se i costrutti di L1 possono essere tradotti in L senza richiedere una ristruttura-zione globale dell’intero programma [3]. Questi tentativi, tuttavia, non hanno mai dato risultati definitivi.

11 Alan J. Perlis, famoso per le sue battute fulminanti, è stato un grande pioniere: primo direttore del primo di-partimento di informatica (quello di Carnegie-Mellon University), primo presidente della ACM, primo pre-mio Turing (1966).

12 Premio Turing nel 1979, «For his pioneering effort in programming languages and mathematical notationresulting in what the computing field now knows as APL, for his contributions to the implementation of in-teractive systems, to educational uses of APL, and to programming language theory and practice».

di una sinteticità sorprendente, in specie perl’epoca, quando si utilizzavano schede perfo-rate e non esistevano tastiere con simbolispeciali13, Iverson è tanto convinto che un lin-guaggio di programmazione influenzi il mo-do di pensare, da dedicare a questo argo-mento la propria lezione [4] per il conferi-mento del premio Turing. Inizia subito citan-do Charles Babbage14:

“la quantità di significato compressa in pic-colo spazio dai segni algebrici è un’altra cir-costanza che facilita i ragionamenti che sia-mo soliti fare col loro aiuto”

e tutto il lavoro seguente sarà una spiegazio-ne del perché la “compressione del significa-to” in piccolo spazio è cosa tanto importante.Prima di entrare nella parte più tecnica delsuo lavoro - in cui mostra con esempi specifi-ci come un attento utilizzo di APL permetta dievidenziare simmetrie e generalizzazioni -Iverson enuncia alcune caratteristiche di unbuon linguaggio per l’espressione del calco-lo. Lungi dall’essere neutro, un linguaggioadatto al proprio scopo è uno strumento raf-finato, che suggerisce generalizzazioni, evo-ca analogie, permette dimostrazioni. È utileriprendere alcune delle caratteristiche enu-cleate da Iverson. Innanzitutto una buonanotazione deve permettere di esprimere confacilità i vari costrutti, così come questi sipresentano nei problemi:

“una notazione deve esprimere convenien-temente non solo le nozioni che derivanoimmediatamente da un problema, ma anchequelle che derivano da analisi successive,generalizzazioni, specializzazioni”.

È in particolar modo rilevante il requisito diesprimere convenientemente anche le nozio-ni che derivino da elaborazioni future e, inqualche modo, non esplicitamente presenti

alla mente. Il giudizio sulla notazione è ungiudizio “storico”, a posteriori, che rende ra-gione di quanto preveggente era stato un lin-guaggio - o di quanto è possibile adattare lesue costruzioni in modi che il suo progettistanon aveva esplicitato.In secondo luogo, una notazione deve essereevocativa (in inglese suggestive):

“una notazione è evocativa se la forma delleespressioni che si presentano in un insiemedi problemi suggerisce espressioni collegateche trovano applicazione in altri problemi”.

Scegliere la giusta forma sintattica di un’e-spressione, invece di un altro modo peresprimere lo stesso concetto, permette di ve-dere simmetrie ed analogie precedentemen-te nascoste, che suggeriscono altre espres-sioni che trovano applicazione in altri proble-mi. Un buon linguaggio è fecondo, genera al-la vita nuovi concetti e proprietà. Davvero,«Parlando, creiamo mondi».A questo punto Iverson passa ad alcune pro-prietà più operative della notazione del cal-colo, che riguardano cosa possiamo fare conessa. Il primo di questi requisiti, intimamenteconnesso con la capacità di evocare, è un re-quisito di “astrazione”15. La notazione devepermettere di subordinare dettagli:

“la brevità facilita il ragionamento. La bre-vità è ottenuta mediante la subordinazionedei dettagli”.

È questo un aspetto cruciale. La complessitàpuò essere dominata solo suddividendo unproblema in sottoproblemi, risolvendo cia-scuno di questi per proprio conto e, quindi,descrivendo come ricomporre le soluzionidei sottoproblemi per ottenere una soluzio-ne del problema originale. Permettere la su-bordinazione dei dettagli vuol dire che un lin-guaggio di programmazione deve dare gli

M O N D O D I G I T A L E • n . 2 - g i u g n o 2 0 0 8

1

21

0

0

0

1

13 A titolo d’esempio, la frase (~R∈ R° × R)/R← 1 ↓ ιR è un programma completo in APL (il linguaggio di Iver-son) che determina i numeri primi da 1 a R.

14 Charles Babbage (1791-1871), matematico e ingegnere britannico, progettò intorno alla metà dell’ottocen-to lamacchina analitica, un vero e proprio calcolatore interamente meccanico a programma memorizzato.

15 In informatica “astrazione” indica, di norma, l’operazione concettuale con la quale si passa da una descri-zione di basso livello ad una descrizione dello stesso concetto ad un livello più alto, che subordina alcunidettagli ed evidenzia alcune caratteristiche importanti sulle quali si vuole richiamare l’attenzione.

0

strumenti linguistici per tutto ciò. Non solo,dunque, come e cosa calcolare, ma costruttilinguistici per esprimere in modo gerarchicoe strutturato un modo per risolvere i proble-mi. E tutto questo deve esser fatto non molti-plicando la verbosità, ma, al contrario, miran-do ad una notazione economica:

“l’utilità di un linguaggio aumenta col nume-ro di argomenti che esso può trattare, ma di-minuisce con le dimensioni del vocabolario ela complessità delle regole sintattiche”.

Infine, una notazione per l’espressione delcalcolo deve permettere con facilità dimo-strazioni formali:

“l’importanza delle dimostrazioni formali èchiara dal loro ruolo in matematica”.

4. ELOGIO DI BABELE

Dopo aver ripreso e contestualizzato le rifles-sioni di alcuni pionieri dell’informatica, possia-mo concludere con alcune considerazioni per laformazione dell’informatico contemporaneo.L’informatica è oggi molte cose insieme. Per lagrande maggioranza delle persone non è cheun insieme di applicazioni che rendono la vitapiù semplice; per molti è solo una tecnologiache permette di realizzare quelle applicazioni.Noi sappiamo, al contrario, che la sua essenzaè quella di una vera scienza, che fonda quellatecnologia e permette così quelle applicazio-ni. È la scienza del calcolo e dell’interazione:studia i procedimenti effettivi di elaborazione(e memorizzazione, trasmissione ecc.) del-l’informazione. Condivide con altre scienze,prime tra tutte la matematica e la fisica, lo stu-dio delle tecniche risolutive di determinatiproblemi (ilproblem solving). A questo studioporta almeno due contributi originali, cioèconcetti scientifici propri, che costituiscono ilsuo oggetto primario di studio e di compren-sione. Il primo è quello di procedimento effet-

tivo: ricerchiamo una soluzione calcolabile,cioè effettivamente realizzabile, con carta epenna o con un calcolatore, in tempo finitomediante manipolazione simbolica di un in-sieme finito di dati di ingresso. Secondo la te-si di Church, cui abbiamo accennato, ciò èequivalente a richiedere che la produzionedella soluzione sia esprimibile mediante unamacchina di Turing. Ma i problemi da risolveresono difficili e complessi. Fare problem sol-ving significa decomporre, ristrutturare, risol-vere sottoproblemi e ricomporre, poi, le lorosoluzioni. L’informatica – e questo è un suosecondo contributo originale – mette a dispo-sizione strumenti linguistici progettati affin-ché ciò sia possibile e, per quanto possibile,semplice. Cioè evocativo, sintetico, economi-co; talvolta anche bello.Come nelle lingue naturali, due linguaggi diprogrammazione non saranno mai equiva-lenti relativamente a queste caratteristiche.Ogni buon linguaggio suggerisce alcune ana-logie, alcune generalizzazioni, alcune semplifi-cazioni. E non altre. Passare da un linguaggioall’altro, da una notazione all’altra, evoca nuo-vi concetti e suggerisce nuove soluzioni.La formazione di una figura tecnica, sia questiun ingegnere meccanico, o un fisico, o un ma-tematico, passa sempre attraverso una fasecruciale di formazione linguistica: l’apprendi-mento del linguaggio di quella scienza, deisuoi termini specifici e, soprattutto, della spe-cifica pragmatica16 della lingua tecnica. Ciò èvero in modo particolarissimo per l’informati-ca, la cui essenza primaria risiede nell’immate-riale dell’espressione linguistica del calcolo edell’interazione. Davvero in informatica la for-ma è sostanza: il modo di esprimere un con-cetto (un algoritmo, la struttura di un protocol-lo, un’architettura software) è altrettanto im-portante del concetto espresso. E questa for-ma è influenzata in modo cruciale dal linguag-gio che scegliamo per esprimerla. Non abbia-mo solo i linguaggi di programmazione: usia-mo ogni giorno anche linguaggi di modellazio-

M O N D O D I G I T A L E • n . 2 - g i u g n o 2 0 0 8

1

0

0

1

22

16 Seguendo un classico lavoro di Morris, la linguistica contemporanea distingue la descrizione di un linguaggioin (almeno) tre grandi ambiti: quello della grammatica, quello della semantica, e quello della pragmatica.Quest’ultima cerca di rispondere alla domanda “Come usare una frase corretta e sensata?”. Frasi con lo stes-so significato possono essere usate in modo diverso da utenti diversi. Contesti linguistici diversi possono ri-chiedere l’uso di frasi diverse; alcune sono più eleganti, o più auliche, o più dialettali, di altre. Comprenderequesti meccanismi di un linguaggio non è meno importante del conoscerne sintassi e semantica.

ne concettuale, quelli di specifica, i design pat-tern per le architetture software, e così via.La formazione dell’informatico non può fare ameno di questa polifonia. La simultanea pa-dronanza di più linguaggi – sia dello stesso li-vello (più di un linguaggio di programmazio-ne, più di un linguaggio di specifica) che di li-velli diversi (linguaggi di programmazione, dimodellazione, di orchestrazione ecc.) – è unagrande ricchezza per l’informatico. Anzi, sitratta di un vero e proprio requisito professio-nale. Padronanza che non significa né superfi-ciale infarinatura degli aspetti esterni concretidi un linguaggio, né, all’estremo opposto, co-noscenza iper-specializzata dei suoi dettaglireconditi. Padroneggiare un linguaggio signi-fica conoscerne le strutture fondamentali, ecome queste si riflettono e si influenzano l’u-na nell’altra. Significa conoscerne i pregi e sa-perli sfruttare, ma conoscere e riconoscereanche i suoi difetti e le caratteristiche menoriuscite. Ma, soprattutto, occorre sapere che,come le lingue naturali, anche i linguaggi diprogrammazione formano famiglie ed hannotra loro somiglianze, analogie e genealogieche ne influenzano le caratteristiche. Se è im-possibile imparare bene decine di linguaggidiversi, è possibile conoscere a fondo i mec-canismi che ne ispirano e guidano il progettoe l'implementazione. La conoscenza di que-sto quadro di riferimento è il vero strumentoprofessionale che non invecchia.Conoscere più linguaggi di programmazionenon è solo una riga in più su un curriculum vi-tae; la Babele dei linguaggi è una ricchezza euna benedizione. Parafrasando Steiner:

“come doveva esser monotono programma-re in Paradiso!”

Bibliografia

[1] Böhm C.: Calculatrices digitales: Du déchiffragede formules logico-mathématiques par la ma-chine même dans la conception du programme.Ann. di Mat. Pura ed Applicata, Vol. 37, n. 4,1954, p. 175-217.

[2] Crespi Reghizzi S.: La compilazione: concetti esviluppi tecnologici. Mondo Digitale, 2, 2006,p. 65-72.

[3] Felleisen M.: On the expressive power of pro-gramming languages. ESOP 1991, SpringerLNCS, Vol. 432, 1991, p. 134-151.

[4] Iverson K.: Notation as a tool for thought.Comm. of ACM, Vol. 33, n. 8, 1980, p. 444-465.

[5] Steiner G.: After Babel: Aspects of Languageand Translation. Oxford University Press, 1975.

[6] Steiner G.: Errata: An Examined Life. Weidenfeldand Nicolson, 1997. Trad. it., Garzanti, 1998.

[7] Wittgenstein L.: Remarks on the Philosophy ofPsychology. Vol. 1, Blackwell, Oxford, 1980.

Il seguente articolo è una semplice introduzione ailinguaggi di programmazione:

[8] Succi G.: Evoluzione dei linguaggi di program-mazione.Mondo Digitale, n. 4, 2003, p. 39-52.

Sullo stesso argomento, e anche sui fondamentidella calcolabilità e la tesi di Church, contributi ele-mentari e ben scritti sono quelli della rubrica “Den-tro la scatola” di Mondo Digitale, curata da F. Screi-ber. In particolare:

[9] Ghezzi C.: I linguaggi di programmazione.Mon-do Digitale, n. 1, 2006, p. 61-66.

[10] Mandrioli D.: Potenza e limiti del calcolo auto-matico.Mondo Digitale, n. 1, 2005, p. 62-67.

[11] Mandrioli D.: Formule, numeri e paradossi.Mondo Digitale, n. 2, 2005, p. 63-69.

Un manuale recente in italiano sui linguaggi di pro-grammazione, che non richiede prerequisiti signifi-cativi è:

[12] Gabbrielli M., Martini S.: Linguaggi di program-mazione. McGraw-Hill, 2007.

M O N D O D I G I T A L E • n . 2 - g i u g n o 2 0 0 8

1

23

0

0

0

1

SIMONE MARTINI è ordinario di Informatica presso la Facoltà di Scienze Mat. Fis. e Nat. dell’Alma Mater Studio-rum - Università di Bologna, dove è coordinatore del Dottorato di ricerca in Informatica. Laureato in Scienzedell’Informazione e Dottore di ricerca in Informatica, ha insegnato anche nelle università di Pisa e Udine, e tra-scorso periodi di ricerca a Stanford, l’École Normale Superieure di Parigi, l’Université de Paris Nord, l’Univer-sity of California at Santa Cruz. È membro dei consigli direttivi della European Association for Computer Scien-ce Logic e dell’Associazione Italiana di Logica e Applicazioni. Le sue ricerche riguardano la teoria dei linguag-gi di programmazione ed i fondamenti logici dell’informatica.E-mail: [email protected]