Karel — образовательный язык программирования для начинающих, созданный Ричардом Э. Паттисом в его книге «Karel The Robot: A Gentle Introduction to the Art of Programming» . Паттис использовал язык в своих курсах в Стэнфордском университете , Калифорния . Язык назван в честь Карела Чапека , чешского писателя, который ввел слово «робот» в своей пьесе RUR [1] [2]
Программа на языке Карел используется для управления простым роботом по имени Карел, который живет в среде, состоящей из сетки улиц (слева-направо) и проспектов (сверху-вниз). Карел понимает пять основных инструкций: (Карел перемещается на одну клетку в направлении, куда он смотрит), (Карел поворачивается на 90° влево), (Карел ставит бипер на клетку, на которой он стоит), (Карел снимает бипер с клетки, на которой он стоит) и (Карел выключается, программа заканчивается). Карел также может выполнять логические запросы о своем непосредственном окружении, спрашивая, есть ли бипер там, где он стоит, есть ли барьеры рядом с ним и о направлении, в котором он смотрит. Программист может создавать дополнительные инструкции , определяя их в терминах пяти основных инструкций, а также используя условные операторы потока управления и с запросами окружения, а также используя конструкцию . [ необходима цитата ]move
turnLeft
putBeeper
pickBeeper
turnoff
if
while
iterate
Ниже приведен простой пример синтаксиса Карела:
НАЧАЛО ПРОГРАММЫ ОПРЕДЕЛИТЬ поворот направо как НАЧИНАТЬ Поверните налево; Поверните налево; Поверните налево; КОНЕЦ НАЧАЛО ИСПОЛНЕНИЯ ПОВТОРИТЬ 3 РАЗА НАЧИНАТЬ Поверните направо; двигаться КОНЕЦ выключать ОКОНЧАНИЕ ИСПОЛНЕНИЯ КОНЕЦ ПРОГРАММЫ
Следующая реализация — Karel на языке программирования Python . [3] Доступны и другие реализации.
Ниже приведены примитивные функции.
move()
: Карел ходит на одну клетку в направлении, куда смотрит.
turn_left()
: Карел поворачивает налево на 90 градусов.
put_beeper()
: Карел ставит пейджер на текущую клетку.
pick_beeper()
: Карел поднимает пейджер из своего текущего квадрата.
paint_corner(COLOR_NAME)
: Карел красит свой текущий угол цветом. Существует конечный список доступных цветов.
Программы Карела структурированы следующим образом:
#
является комментарием и игнорируется интерпретатором.def
, за которым следует имя функции и скобки. Тело функции следует в последующих строках.main()
: Запуск программы выполняет main
функцию. Другие функции не выполняются, если не вызваны.Карел может реагировать на определенные условия в своем мире:
front_is_clear(),
beepers_present(),
beepers_in_bag(),
left_is_clear(),
right_is_clear(),
facing_north(),
facing_south()
,
facing_east()
,
facing_west()
И их обратные значения:
front_is_blocked(),
no_beepers_present(),
no_beepers_in_bag()
,
left_is_blocked()
,
right_is_blocked(),
not_facing_north(),
not_facing_south(),
not_facing_east(),
not_facing_west()
.
Он также может проверить цвет текущего блока с помощью corner_color_is(COLOR_NAME)
.
Существуют две структуры управления:
if
и else
.for
и while
.Язык вдохновил на разработку различных клонов и подобных образовательных языков. Поскольку язык предназначен для начинающих, локализованные варианты существуют в некоторых языках, в частности в чешском (язык программирования был довольно популярен в Чехословакии ).
Принципы Karel были обновлены до объектно-ориентированной парадигмы программирования в новом языке программирования Karel++. Karel++ концептуально основан на Karel, но использует совершенно новый синтаксис, похожий на Java .
Реализация REALbasic, rbKarel, [4] предоставляет основные команды Karel в среде RBScript с синтаксисом BASIC, используемым для циклов и условных операторов. Этот учебный проект предоставляет кроссплатформенный графический интерфейс для экспериментов Karel, включая пошаговое выполнение и голосовой вывод.
Язык и среда, вдохновленные Карелом, под названием Robot Emil [5] используют 3D- вид мира робота. Robot Emil предлагает большую палитру объектов, которые можно разместить для изображения стен, окон (прозрачность), воды и травы. Камеру можно свободно перемещать по 3D-среде. Роботом можно управлять интерактивно с помощью кнопок в графическом интерфейсе или программ, написанных на языке программирования Эмиля, похожем на Карельский. Автор заявляет, что программа бесплатна для использования школами, студентами и детьми. Доступны версии на английском , чешском и словацком языках .
Для программирования роботов FANUC Robotics используется собственный язык, который также называется Karel . Однако FANUC Karel является производным от Pascal .
Язык также был реализован как Karel the Dog в JavaScript компанией CodeHS . Подобно оригинальному языку, эта реализация представляет Карела в мире сетки. Программисты используют и развивают простой словарь команд Карела для выполнения задач программирования. Вместо того, чтобы класть и выбирать пищалки, Karel the Dog кладет и берет теннисные мячи.
Немецкая версия имени Карел называется «Робот Кароль». [6]