Programmare in italiano

Oggi ho nuovamente fatto una ricerca su Internet per vedere cosa potevo trovare sulla programmazione in italiano. Non sono riuscito a trovare niente di particolare a favore del fatto di scrivere codice per computer in italiano, al contrario, ho trovato opinioni sfavorevoli e nessuna vera risorsa aggiornata sul linguaggio di programmazione LOGO, in particolare la versione realizzata da FMSLogo, che al momento sembra l'unica vera possibilità per imparare a programmare senza conoscere l'inglese.

Ho deciso di scrivere questo post nella speranza che possa aiutare chiunque sia interessato a trovare la guida che sto realizzando su questo sito. La guida sulla programmazione in italiano con FMSLogo è scritta in un linguaggio relativamente semplice, considerando che si tratta di una guida su come imparare a programmare, e qualsiasi riferimento a parole inglesi viene tradotto di volta in volta.

La guida parte quasi da zero spiegando come installare FMSLogo, continua spiegando le varie parti della finestra di FMSLogo e poi introduce il linguaggio LOGO vero e proprio, con il suo primo, classico esempio su come si disegna un quadrato sullo schermo dando dei comandi alla "tartaruga", che è il "personaggio" principale di questa storia. La guida presenta il codice scritto in LOGO interamente in italiano, spiegazioni sui vari approcci per risolvere un problema ed è ricca di illustrazioni e animazioni che mostrano i risultati che si dovrebbero ottenere di volta in volta.

Anche se FMSLogo è un programma veramente bello e permette di fare tantissime cose, dalla creazione di grafiche in due dimensioni a quelle in tre dimensioni (3D), dalla elaborazione di file sul disco alle comunicazioni tramite porte con delle periferiche del computer, dalla generazioni di suoni e sequenze MIDI alla creazione di interfacce con i classici oggetti di una finestra (pulsanti, caselle di testo, caselle a discesa e così via), è scontato che chi vuole imparare a programmare prima o poi debba "scontrarsi" con l'inglese...

Ma la mia opinione da programmatore è che le cose si fanno meglio una alla volta. Imparare a programmare, con la complessità degli aspetti relativi alla matematica, la geometria, la manipolazione di testi e così via, è molto impegnativa così com'è, senza dover costringere una persona ad imparare anche una nuova lingua naturale come l'inglese allo stesso tempo.

Credo che una volta che una persona abbia imparato i concetti e le abilità fondamentali della programmazione (il primo dei quali è quasi di sicuro la suddivisione di un problema o un compito in problemi e compiti più piccoli e contenuti) abbia molte più probabilità di imparare la lingua inglese con successo.

Per molti aspetti, tanto per iniziare, programmare è più divertente di parlare in inglese, almeno per me, e la quantità di risultati che si possono ottenere dopo avere imparato anche solo una dozzina di comandi in un linguaggio di programmazione è incredibilmente maggiore di qualsiasi risultato che si possa ottenere imparando una dozzina di parole in una lingua naturale. Non riesco ad immaginare cosa possa voler dire cercare di fare conversazione in inglese conoscendo solo dodici parole. Sto mentendo, ovviamente me lo immagino, e credo che sia praticamente impossibile.

La mia esperienza con le lingue e con la programmazione è iniziata parecchi anni fa. Ho iniziato a conoscere l'inglese alle scuole elementari, alle medie ho studiato francese, al liceo ho studiato contemporaneamente italiano, inglese, francese, spagnolo e latino. Dall'inizio delle superiori avevo anche iniziato a studiare la programmazione con il linguaggio BASIC - il manuale era in italiano, ma tutti i comandi erano in inglese, ovviamente. Adesso ho trentasei anni e posso dire, senza falsa modestia, di conoscere bene sia la mia lingua madre, l'italiano, sia le tre principali lingue straniere che ho studiato, ossia l'inglese, il francese e lo spagnolo, e non solo sono in grado di leggere e capire dei testi scritti in queste tre lingue, sono anche in grado di intavolare una conversazione con esse parlando con persone di madrelingua.

Qual'è il punto che sto cercando di sottolineare? Sto cercando di dire che le lingue naturali sono molto, molto più difficili di un linguaggio di programmazione. Per quanto possa essere bravo con le lingue naturali che conosco mi risulta impossibile fare alcunché di produttivo con altre lingue straniere delle quali conosco solo una manciata di parole. Olandese, tedesco, arabo, russo, rumeno... quantità di parole conosciute per ognuna di esse: meno di venti, ad essere generosi. Capacità di leggere, scrivere, parlare e capire chi parla in queste lingue: zero.

Un linguaggio di programmazione ti permette invece di fare qualcosa di interessante molto in fretta. Alla base di un linguaggio di programmazione c'è sempre la matematica, e una volta che si conosce un linguaggio di programmazione, passare a produrre qualcosa di interessante con un altro linguaggio che non sia eccessivamente diverso è questione di poche ore di studio. Impara un linguaggio a scelta tra C, C++, C#, Java, Javascript e PHP, e tutti gli altri usano bene o male la stessa sintassi, giusto per fare un esempio. E si tratta di un esempio non da poco, perché ci sono persone che hanno incentrato tutta la loro carriera di programmatori lavorando principalmente su uno o due di essi.

Lo stesso vale con il LOGO. Prova ad imparare cosa significano queste dodici parole nel linguaggio LOGO in italiano e come si usano:

  1. avanti
  2. indietro
  3. destra
  4. sinistra
  5. su
  6. giu
  7. puliscischermo
  8. ripeti
  9. per
  10. fine
  11. se
  12. aspetta

Una volta che lo avrai fatto, con l'aggiunta di qualche altro simbolo come gli operatori matematici, avrai davanti a te ore e ore di divertimento a creare disegni geometrici, una infinità di disegni geometrici, sempre che questa cosa possa darti piacere e divertimento.

Imparane altre dodici:

  1. stampa
  2. parola
  3. frase
  4. riempi
  5. etichetta
  6. assegna
  7. ascp (Assegna Colore Penna)
  8. ascr (Assegna Colore Riempimento)
  9. ascs (Assegna Colore Schermo)
  10. astrattopenna (Assegna Tratto Penna)
  11. aspos (Assegna Posizione)
  12. asdir (Assegna Direzione)

Una volta che lo avrai fatto, potrai aggiungere testi e colori ai tuoi disegni e potrai anche eseguire delle operazioni interessanti sulle stringhe di testo, che sono un altro "pezzo" fondamentale della programmazione.

Anche se forse sto semplificando un po', non è veramente molto più complicato di così, e a quel punto starai già programmando da un pezzo. Certo, se poi vuoi che la programmazione diventi la tua occupazione principale nella vita, armati di pazienza e inizia a studiare l'inglese, non ne puoi veramente fare a meno, non per il momento. Ma non è necessario imparare l'inglese fino al punto di riuscire a seguire un film in lingua originale per poter programmare in altri linguaggi, nella maggior parte dei casi basta conoscere solo le traduzioni delle parole chiave usate dal linguaggio stesso, non c'è nemmeno bisogno di imparare la sintassi o la grammatica inglese, perché esistono guide e libri in italiano che ti permettono di imparare a programmare nei principali linguaggi di programmazione moderni. Ma nuovamente, se vuoi davvero che la programmazione diventi il tuo lavoro, mettiti l'obiettivo di imparare anche la sintassi e la grammatica inglesi, perché a quel punto le risorse a tua disposizione aumenteranno veramente tanto.

Se mi stai leggendo sarei veramente felice di conoscere la tua opinione su questo argomento, il modulo dei commenti qui sotto e l'indirizzo programmare @ entuland.com sono a tua disposizione. Ti ringrazio per la tua attenzione e ti ricordo, se ti interessa, che la guida sulla programmazione in italiano con FMSLogo è a tua disposizione.