Karel

Da Wikipedia, l'enciclopedia libera.
bussola Disambiguazione – Se stai cercando altri significati, vedi Karel (disambigua).
Karel the Robot
NikiExample.jpg
Niki the robot
Autore Richard E. Pattis
Data di origine 1981
Utilizzo didattica
Paradigmi Programmazione orientata agli oggetti
Tipizzazione
Influenzato da Pascal
Ha influenzato Karel++, Alcune varianti regionali

Karel è un linguaggio di programmazione concepito per rispondere a esigenze didattiche ed educative, quale strumento introduttivo alla programmazione rivolto a principianti.

Il linguaggio è stato creato nel 1981 da Richard E. Pattis che ne definì le caratteristiche nel suo libro Karel The Robot: A Gentle Introduction to the Art of Programming e ne fece uso nei suoi corsi introduttivi alla Stanford University. Prende il nome da Karel Čapek, lo scrittore ceco che introdusse il termine robot.

Principi basilari[modifica | modifica sorgente]

Un programma in Karel è usato per controllare il comportamento di un semplice automa, visualizzato sullo schermo come un piccolo robot di nome Karel. Il robot si muove e agisce in un ambiente che consiste in una semplice griglia di street (strade), orientate orizzontalmente, e avenue (viali), con orientazione verticale.

Karel obbedisce a 5 istruzioni base:

  • move (Karel si sposta di un quadratino lungo la direzione e il verso in cui è orientato);
  • turnleft (Karel ruota il suo orientamento di 90 ° a sinistra)
  • putbeeper (Karel deposita un beeper (cicalino) sul quadrato su cui si trova)
  • pickbeeper (Karel toglie un beeper dal quadrato in cui si trova)
  • turnoff (Karel si spegne e il programma termina).

Karel può anche eseguire test booleani sull'ambiente circostante, restituendo informazioni come la presenza di un beeper nella posizione attualmente occupata, la presenza di ostacoli nelle vicinanze, la direzione verso la quale il robot è rivolto in quel momento. Il programmatore può creare istruzioni addizionali definendole in termini delle cinque istruzioni di base, usando istruzioni per il controllo del flusso if e while in combinazione con interrogazioni sull'ambiente e usando il costrutto iterate.

Esempio[modifica | modifica sorgente]

Quello che segue è un esempio della sintassi di Karel in un semplice programma completo (il simbolo ";" marca il termine dell'istruzione, e può essere omesso quando l'istruzione è seguita da un END. Le maiuscole non sono necessarie: la compilazione è case insensitive). All'inizio del codice vi è la definizione di una subroutine turnright, ottenuta dall'iterazione del comando bas turnleft. La subroutine è utilizzata poi nel corpo del programma, delimitato da BEGINNING-OF-EXECUTION/END-OF-EXECUTION:

BEGINNING-OF-PROGRAM
 
 DEFINE turnright AS
 BEGIN
   turnleft;
   turnleft;
   turnleft
 END
 
 BEGINNING-OF-EXECUTION
   ITERATE 3 TIMES
     turnright;
     move;
     turnoff
 END-OF-EXECUTION
 
END-OF-PROGRAM

Varianti e discendenti[modifica | modifica sorgente]

Il linguaggio ha ispirato la creazione e lo sviluppo di vari cloni o di linguaggi affini, sempre per scopi educativi. Poiché il linguaggio è destinato a principianti, ne esistono varianti locali in alcuni idiomi, tra cui la lingua ceca (Karel ha goduto di una certa popolarità in Cecoslovacchia). La versione slovacca, chiamata Robot Karol++, contiene ulteriori miglioramenti ed è stato a sua volta tradotto in inglese, tedesco e ceco.

Versioni orientate agli oggetti[modifica | modifica sorgente]

I principi base di Karel sono stati aggiornati al paradigma della programmazione orientata agli oggetti in un nuovo linguaggio chiamato Karel++. Da un punto di vista concettuale, Karel++ si fonda su Karel, ma usa una sintassi completamente nuova, simile a quella di Java.

rbKarel[modifica | modifica sorgente]

rbKarel è una implementazione di Karel in REALbasic[1]: rbKarel offre i comandi basilari di Karel in un ambiente RBScript con uso della sintassi BASIC per cicli e condizionali. Questo progetto didattico fornice una interfaccia grafica utente multipiattaforma per esperimenti Karel tra cui single-stepping e emissione vocale.

Robot Emil[modifica | modifica sorgente]

Nel 2008 è apparso Educational program Robot Emil una variante in 3D di Robot Karel. Robot Emil agisce in una stanza con tre dimensioni, mostrata attraverso una veduta di tipo fotocamera, così che si aggiungono interessanti caratteristiche, come la possibilità di guardare la scena da diverse angolazioni e distanze, è possibile ruotare la prospettiva, guardare l'attività del robot nei dettagli, ecc. Il Robot può posizionare mattoni di forma e colori a scelta, dipingere le pareti e il pavimento con colori a mosaico, creare porte e tunnel attraverso i muri costruiti con i mattoni, può aprire finestre (usando mattoni trasparenti), può costruire il soffitto (usando mattoni a forma di tetto), erba, sentieri, laghetti (dipingendo le mattonelle. Questa implementazione mette a disposizione un'ampia scelta di mezzi per stimolare la creatività infantile, agevolando il loro pensiero algoritmico e l'immaginazione spaziale, insegnandogli al contempo le basi della programmazione.

La versione originale è in slovacco, ma dal 2009 ne esistono versioni in ceco e in inglese.

FANUC Karel[modifica | modifica sorgente]

Nonostante l'omonimia, FANUC Karel non ha alcuna relazione con Karel: si tratta, in questo caso, di un linguaggio proprietario nato in ambito industriale. Il linguaggio non deriva da Karel ma direttamente dal Pascal, ed è dedicato alla programmazione dei robot commerciali prodotti dalla FANUC Robotics.

Note[modifica | modifica sorgente]

  1. ^ rbKarel Overview. REALbasic adaption of Karel the Robot

Bibliografia[modifica | modifica sorgente]

  • Richard E. Pattis, Karel The Robot: A Gentle Introduction to the Art of Programming. John Wiley & Sons, 1981 ISBN 0-471-59725-2
  • Joseph Bergin, Mark Stehlik, Jim Roberts, Richard E. Pattis, Karel++: A Gentle Introduction to the Art of Object-Oriented Programming, John Wiley & Sons, 1996 ISBN 0-471-13809-6

Voci correlate[modifica | modifica sorgente]

Collegamenti esterni[modifica | modifica sorgente]