Карел – простой язык программирования для начинающих, разработанный для обучения основам программирования. Управление роботом, команды: движение, поворот, установка/подбор маркеров.
Сравнивайте с английским: нажмите на абзац — оригинал откроется в окне. Кнопка EN под абзацем показывает его прямо в тексте.
Содержание
Введение
Язык программирования
Programming language
Karel — это обучающий язык программирования для начинающих, разработанный Ричардом Э. Паттисом в его книге «Karel The Robot: A Gentle Introduction to the Art of Programming». Паттис использовал этот язык в своих курсах в Стэнфордском университете (Калифорния). Язык назван в честь Карела Чапека, чешского писателя, который впервые использовал слово «робот» в своей пьесе «Р. У. Р.».
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.
Принципы
Программа на языке Карел используется для управления простым роботом по имени Карел, который живёт в среде, состоящей из сетки улиц (слева направо) и авеню (вверх-вниз). Карел понимает пять основных команд: move (Карел перемещается на один квадрат в направлении, куда он смотрит), turnLeft (Карел поворачивается на 90° влево), putBeeper (Карел ставит маркер на клетку, на которой он стоит), pickBeeper (Карел поднимает маркер с клетки, на которой он стоит), и turnoff (Карел выключается, и программа завершается). Карел также может выполнять логические запросы об окружающем его пространстве, проверяя, есть ли маркер на его текущей клетке, есть ли препятствия рядом с ним, и в каком направлении он смотрит. Программист может создавать дополнительные команды, определяя их через пять основных команд, используя условные операторы if и while с запросами к среде, а также конструкцию цикла.
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 if and while with environment queries, and by using the iterate construct.
Спецификация
Следующая реализация — это Karel на языке программирования Python. Доступны и другие реализации.
The following implementation is Karel in the Python programming language. Other implementations are available.
Первичные функции
Ниже приведены примитивные функции. move: Карел перемещается на один квадрат в направлении, куда он смотрит. turn left: Карел поворачивается налево на 90 градусов. put beeper: Карел ставит маркер на текущую клетку. pick beeper: Карел поднимает маркер с текущей клетки. paint corner(НАЗВАНИЕ ЦВЕТА): Карел окрашивает текущий угол в указанный цвет. Существует конечный список доступных цветов.
The following are the primitive functions. move : Karel moves one square in the direction it is facing. turn left : Karel turns left by 90 degrees. put beeper : Karel puts a beeper on its current square. pick beeper : Karel picks up a beeper from its current square. paint corner(COLOR NAME): Karel paints its current corner with a color. There is a finite list of available colors.
Варианты и потомки
Язык вдохновил на разработку различных клонов и аналогичных учебных языков. Поскольку язык предназначен для начинающих, локализованные варианты существуют для некоторых языков, в частности, чешского (язык программирования был довольно популярен в Чехословакии). Принципы Кареля были перенесены в парадигму объектно-ориентированного программирования в новом языке программирования под названием Karel++. Karel++ концептуально основан на Karel, но использует совершенно новый синтаксис, похожий на Java. Реализация REALbasic, rbKarel, предоставляет базовые команды Кареля в среде RBScript, используя синтаксис BASIC для циклов и условных операторов. Этот учебный проект предоставляет кросс-платформенный графический интерфейс для экспериментов с Карелем, включая пошаговое выполнение и голосовой вывод. Язык и среда, вдохновленные Карелем, под названием Robot Emil используют трехмерное представление мира робота. Robot Emil предлагает широкую палитру объектов, которые можно размещать для изображения стен, окон (с прозрачностью), воды и травы. Камера может свободно перемещаться по трехмерной среде. Роботом можно управлять интерактивно с помощью кнопок в графическом интерфейсе или с помощью программ, написанных на языке программирования Emil's Karel. Автор утверждает, что программа бесплатна для использования школами, студентами и детьми. Версии доступны на английском, чешском и словацком языках. Для программирования роботов FANUC Robotics используется проприетарный язык, также называемый Karel. Однако FANUC Karel произошел от Pascal. Язык также был реализован как Karel the Dog на JavaScript компанией CodeHS. Подобно оригинальному языку, эта реализация представляет Кареля в сетчатом мире. Программисты используют и развивают простой словарный запас команд Кареля для решения задач программирования. Вместо того чтобы ставить и поднимать маячки, Karel the Dog ставит и берет теннисные мячи. Немецкая версия Кареля называется "Робот Кароль".
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 proprietary language which is also called Karel is used to program the robots of FANUC Robotics. However, FANUC Karel is derived from Pascal. The language has also been implemented as Karel the Dog in JavaScript by CodeHS. Similar to the original language, this implementation features Karel in a grid world. Programmers use and build upon Karel's simple vocabulary of commands to accomplish programming tasks. Instead of putting and picking beepers, Karel the Dog puts and takes tennis balls. A German version of Karel is named "Robot Karol".