Karel is an educational programming language for beginners, created by Richard E. Pattis in his book Karel The Robot: A Gentle Introduction to the Art of Programming. Pattis used the language in his courses at Stanford University, California. The language is named after Karel Čapek, a Czech writer who introduced the word robot in his play R.U.R.
|Designed by||Richard E. Pattis|
|Some localized language variants|
|Karel++, AgentSheets, Guido van Robot|
A program in Karel is used to control a simple robot named Karel that lives in an environment consisting of a grid of streets (left-right) and avenues (up-down). Karel understands five basic instructions:
move (Karel moves by one square in the direction he is facing),
turnLeft (Karel turns 90 ° left),
putBeeper (Karel puts a beeper on the square he is standing at),
pickBeeper (Karel lifts a beeper off the square he is standing at), and
turnoff (Karel switches himself off, the program ends). Karel can also perform boolean queries about his immediate environment, asking whether there is a beeper where he is standing, whether there are barriers next to him, and about the direction he is facing. A programmer can create additional instructions by defining them in terms of the five basic instructions, and by using conditional control flow statements
while with environment queries, and by using the
iterate construct.
The following is a simple example of Karel syntax:
BEGINNING-OF-PROGRAM DEFINE turnRight AS BEGIN turnLeft; turnLeft; turnLeft; END BEGINNING-OF-EXECUTION ITERATE 3 TIMES BEGIN turnRight; move END turnoff END-OF-EXECUTION END-OF-PROGRAM
Variants and descendantsEdit
The language has inspired the development of various clones and similar educational languages. As the language is intended for beginners, localized variants exist in some languages, notably Czech (the programming language was quite popular in Czechoslovakia).
The principles of Karel were updated to the object-oriented programming paradigm in a new programming language called Karel++. Karel++ is conceptually based on Karel, but uses a completely new syntax, similar to Java.
A REALbasic implementation, rbKarel, provides the basic Karel commands within an RBScript environment with BASIC syntax being used for loops and conditionals. This teaching project provides a cross-platform GUI for Karel experiments including single-stepping and spoken output.
A Karel-inspired language and environment called Robot Emil uses a 3D view of the robot's world. Robot Emil offers a large palette of objects that can be placed to depict walls, windows (transparency), water and grass. The camera may be moved freely throughout the 3D environment. The robot may be controlled interactively with buttons in the GUI, or by programs written in Emil's Karel-like programming language. The author states that the program is free for use by schools, students and children. Versions are available in English, Czech and Slovak.
A German version of Karel is named "Robot Karol".
- 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.
- "Who did actually invent the word 'robot' and what does it mean?". Archived from the original on 27 July 2013. Retrieved 25 July 2013.
- Margolius, Ivan (Autumn 2017) "The Robot of Prague" Archived 11 September 2017 at the Wayback Machine The Friends of Czech Heritage Newsletter no. 17, pp.3-6
- "Google Code Archive - Long-term storage for Google Code Project Hosting".
- "Introduction (EN)". www.emil.input.sk. Archived from the original on 2010-11-02.
- "Robot Karol – Escape the Maze | Schülerlabor Informatik - InfoSphere, Informatik entdecken in Modulen für alle Schulformen & Klassenstufen". schuelerlabor.informatik.rwth-aachen.de. Retrieved 29 December 2020.
- Karel syntax
- xKarel by R. Dostal and P. Abrahamczik (created 1997)
- Karel by T. Mitchell (created 2000)
- Karel in tiny-c by Lee Bradley (created 2013)
- Karel for iPad by CloudMakers (created 2014)
- Karel in Perl 5 by E. Choroba (created 2016)
- Guido van Robot (GvR) - Karel in Python (created 2006, 2010)