맨위로가기

카렐 (프로그래밍 언어)

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

카렐은 카렐이라는 단순한 로봇을 제어하기 위해 사용되는 프로그래밍 언어이다. 카렐은 move, turnLeft, putBeeper, pickBeeper, turnoff의 5가지 기본 명령을 이해하며, 주변 환경에 대한 불리언 쿼리를 수행할 수 있다. 프로그래머는 기본 명령어를 조합하고 조건문과 반복문을 사용하여 새로운 명령을 정의하고 프로그램을 작성한다. 카렐은 다양한 파생 언어와 변형을 낳았으며, 교육용으로 널리 활용되고 있다.

더 읽어볼만한 페이지

  • 교육용 프로그래밍 언어 - 하스켈
    하스켈은 해스켈 커리의 이름을 딴 순수 함수형 프로그래밍 언어로, 여러 함수형 언어 통합 노력의 결과로 탄생하여 느긋한 계산법, 패턴 매칭, 타입 클래스, 모나드 등의 특징을 가지며 GHC가 표준 구현체로 사용된다.
  • 교육용 프로그래밍 언어 - 파이썬
    파이썬은 귀도 반 로섬이 개발한 객체 지향적 프로그래밍 언어이며, 간결한 문법과 다양한 라이브러리를 통해 웹 개발, 과학 계산, 인공지능 등 다양한 분야에서 활용된다.
  • 절차적 프로그래밍 언어 - C (프로그래밍 언어)
    C는 하드웨어 제어와 이식성이 뛰어난 고급 절차적 프로그래밍 언어로서, 다양한 분야에서 사용되며 후속 언어에 영향을 주었고, 성능과 효율성이 높지만 안전성 문제 개선이 필요한 언어이다.
  • 절차적 프로그래밍 언어 -
    펄은 래리 월이 개발한 텍스트 조작에 강점을 가진 다목적 프로그래밍 언어이며, 1987년 펄 1.0이 처음 공개된 이후 여러 버전 업데이트를 거쳐 객체 지향 프로그래밍과 유니코드 지원 기능을 추가했고, 현재 펄 5가 널리 사용되며 CPAN을 통해 방대한 모듈 생태계를 제공한다.
카렐 (프로그래밍 언어) - [IT 관련 정보]에 관한 문서
기본 정보
이름카렐 더 로봇
종류프로그래밍 언어
패러다임절차적
발표 연도1981년
설계자리처드 E. 패티스
영향 받은 언어파스칼
영향을 준 언어Karel++
AgentSheets
Guido van Robot
니키 예제
예제 스크린샷

2. 원리

카렐(로봇)로 만들어진 프로그램은 가로(좌우)와 세로(상하)의 격자 형태로 구성된 환경에서 움직인다.

카렐은 5가지 기본 명령어와 주변 환경에 대한 질의를 이해하며, 프로그래머는 이를 활용하여 추가적인 명령어를 정의하고 조건부 제어 흐름문(`if`, `while`)과 `iterate` 구문을 사용하여 프로그램을 작성할 수 있다.

2. 1. 기본 명령어

카렐은 5가지 기본 명령을 이해한다:

  • `move`: 카렐은 자신이 향하는 방향으로 한 칸 이동한다.
  • `turnLeft`: 카렐은 90° 왼쪽으로 회전한다.
  • `putBeeper`: 카렐은 자신이 서 있는 칸에 비퍼를 놓는다.
  • `pickBeeper`: 카렐은 자신이 서 있는 칸에서 비퍼를 집어 올린다.
  • `turnoff`: 카렐은 스스로 전원을 끄며, 프로그램이 종료된다.


카렐은 자신의 환경에 관한 불리언 질의를 수행할 수 있는데, 이를테면 자신이 서 있는 곳에 비퍼(beeper)가 있는지, 자신의 옆에 장애물이 있는지, 그가 마주하고 있는 방향은 어디인지를 알 수 있다. 프로그래머는 5가지 명령으로 정의함으로써 명령어를 정의하고 조건 제어 흐름문(if, while)과 iterate 구조체를 사용하여 추가적으로 작성할 수 있다.[1]

다음은 기본 함수들이다.

  • `move()`: 카렐은 바라보는 방향으로 한 칸 이동한다.
  • `turn_left()`: 카렐은 왼쪽으로 90도 회전한다.
  • `put_beeper()`: 카렐은 현재 칸에 비퍼를 놓는다.
  • `pick_beeper()`: 카렐은 현재 칸에서 비퍼를 집어 올린다.
  • `paint_corner(COLOR_NAME)`: 카렐은 현재 모서리를 색상으로 칠한다. 사용 가능한 색상의 목록은 제한되어 있다.

2. 2. 명령어 확장 및 제어 구조

카렐로 만들어진 프로그램은 카렐(Karel)이라는 이름의 단순 로봇을 통제하기 위해 사용된다. 카렐은 5가지 기본 명령을 이해한다: `move`, `turnLeft`, `putBeeper`, `pickBeeper`, `turnoff`. 카렐은 자신의 환경에 관한 불리언 질의를 수행할 수도 있는데, 이를테면 자신이 서 있는 곳에 비퍼(beeper)가 있는지, 자신의 옆에 장애물이 있는지, 그가 마주하고 있는 방향은 어디인지를 알 수 있다. 5가지 명령으로 정의함으로써 프로그래머명령어를 정의하고 조건 제어 흐름문(`if`, `while`)과 `iterate` 구조체를 사용하여 추가적으로 작성할 수 있다.

3. 프로그램 구조 (Specification)

카렐 프로그램은 다음과 같은 방식으로 구성된다.[3]


  • 주석: `#` 기호로 시작하는 모든 줄은 주석이며, 인터프리터는 이를 무시한다.
  • 함수 선언: `def`를 사용하여 카렐의 함수를 선언하며, 함수 이름과 괄호 `()`가 뒤따른다. 함수의 본문은 그 다음 줄에 나타난다.
  • `main()`: 프로그램 실행은 `main` 함수를 실행하는 것으로 시작한다. 다른 함수는 호출되어야 실행된다.


위의 내용은 파이썬으로 구현된 카렐의 경우이며, 다른 구현도 가능하다.[3]

4. 조건문 및 반복문

카렐은 `move`, `turnLeft`, `putBeeper`, `pickBeeper`, `turnoff`의 5가지 기본 명령을 이해한다.[1] 또한, 비퍼(beeper) 유무, 장애물 유무, 방향 등 주변 환경에 대한 불리언 질의를 할 수 있다.[1] 프로그래머는 5가지 기본 명령을 바탕으로 조건 제어문(`if`, `while`)과 `iterate` 구조를 사용하여 새로운 명령을 정의할 수 있다.[1]

4. 1. 조건

카렐은 자신의 세계에서 특정 조건에 반응할 수 있다.

조건반대 조건
`front_is_clear()``front_is_blocked()`
`beepers_present()``no_beepers_present()`
`beepers_in_bag()``no_beepers_in_bag()`
`left_is_clear()``left_is_blocked()`
`right_is_clear()``right_is_blocked()`
`facing_north()``not_facing_north()`
`facing_south()``not_facing_south()`
`facing_east()``not_facing_east()`
`facing_west()``not_facing_west()`



또한 `corner_color_is(COLOR_NAME)`을 통해 현재 블록의 색상을 확인할 수 있다.

4. 2. 제어 구조

카렐로 만들어진 프로그램은 카렐(Karel)이라는 이름의 단순 로봇을 통제하기 위해 사용된다. 카렐은 5가지 기본 명령(`move`, `turnLeft`, `putBeeper`, `pickBeeper`, `turnoff`)을 이해한다. 카렐은 자신이 서 있는 곳에 비퍼(beeper)가 있는지, 자신의 옆에 장애물이 있는지, 그가 마주하고 있는 방향은 어디인지 등 자신의 환경에 관한 불리언 쿼리를 수행할 수도 있다. 프로그래머는 5가지 기본 명령을 바탕으로 조건 제어 흐름문(`if`, `while`)과 `iterate` 구조체를 사용하여 명령어를 정의하고 추가적으로 작성할 수 있다.

카렐에는 두 가지 제어 구조가 있다.

  • `if` 및 `else`를 사용한 조건부 실행.
  • `for` 및 `while`을 사용한 반복.

5. 파생 언어 및 변형

카렐은 다양한 클론 및 유사 교육용 언어 개발에 영감을 주었다. 특히 초보자를 위해 만들어졌기 때문에 일부 언어에서는 현지화된 변형이 존재하며, 체코어가 그렇다(이 프로그래밍 언어는 체코슬로바키아에서 매우 인기가 있었다).[4]

카렐의 원리는 새로운 프로그래밍 언어인 Karel++에서 객체 지향 프로그래밍 패러다임으로 업데이트되었다. Karel++는 개념적으로 카렐을 기반으로 하지만 자바와 유사한 완전히 새로운 구문을 사용한다.

REALbasic 구현인 rbKarel은 RBScript 환경 내에서 기본적인 카렐 명령을 제공하며, BASIC 구문은 루프 및 조건문에 사용된다. 이 교육 프로젝트는 단일 단계 실행 및 음성 출력을 포함하는 카렐 실험을 위한 크로스 플랫폼 GUI를 제공한다.

''로봇 에밀[5]''이라는 카렐에서 영감을 받은 언어 및 환경은 로봇의 세계를 3D로 보여준다. ''로봇 에밀''은 벽, 창문(투명도), 물, 풀을 묘사하기 위해 배치할 수 있는 다양한 객체를 제공한다. 카메라는 3D 환경 전체에서 자유롭게 움직일 수 있다. 로봇은 GUI의 버튼으로 대화식으로 제어하거나, 에밀의 카렐과 유사한 프로그래밍 언어로 작성된 프로그램으로 제어할 수 있다. 저자는 이 프로그램이 학교, 학생 및 어린이가 자유롭게 사용할 수 있다고 말한다. 버전은 영어, 체코어, 슬로바키아어로 제공된다.

또한 카렐이라고 불리는 독점 언어는 FANUC Robotics의 로봇을 프로그래밍하는 데 사용된다. 그러나 FANUC Karel은 파스칼에서 파생되었다.

이 언어는 또한 CodeHS에 의해 자바스크립트로 Karel the Dog로 구현되었다. 원본 언어와 유사하게 이 구현은 그리드 세상에서 카렐을 특징으로 한다. 프로그래머는 프로그래밍 작업을 수행하기 위해 카렐의 간단한 명령 어휘를 사용하고 구축한다. 비퍼를 놓고 줍는 대신 Karel the Dog는 테니스 공을 놓고 가져간다.

카렐의 독일어 버전은 "Robot Karol"이라고 한다.[6]

참조

[1] 웹사이트 Who did actually invent the word 'robot' and what does it mean? http://capek.misto.c[...] 2013-07-25
[2] 간행물 The Robot of Prague https://czechfriends[...] The Friends of Czech Heritage Newsletter 2017-09-01
[3] 웹사이트 Karel the Robot Learns Python. Appendix: Reference https://compedu.stan[...] 2023-06-12
[4] 웹사이트 Google Code Archive - Long-term storage for Google Code Project Hosting https://code.google.[...]
[5] 웹사이트 Introduction (EN) http://www.emil.inpu[...]
[6] 웹사이트 Robot Karol – Escape the Maze https://schuelerlabo[...] 2020-12-29



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com