스크래치(Scratch) - 위키피디아
스크래치(Scratch)는 무료로 제공되는 비주얼 프로그래밍 언어이다. 학생, 학자, 선생님, 그리고 부모님들이 쉽게 게임을 만드는데 사용되며 고급 컴퓨터 프로그래밍 세계로 나가기위한 디딤돌을 제공한다. 스크래치는 또한 수학 및 과학 실험의 시뮬레이션과 시각화(visualization), 동적 프레젠테이션 녹화, 사회과학의 에니메이션 스토리, 그리고 인터렉티브 아트와 음악 등에서 다양하게 사용되고 있다. 스크래치 웹사이트에서 기존에 만들어진 프로젝트를 볼 수 있으며, 수정된 내용을 따로 저장하지 않고 테스트 가능하며, 이는 온라인 등록을 하지 않고도 가능하다.
스크래치는 스프라이트(sprite)라고 불리는 다양한 동적 객체를 이용하여 이벤트 기반 프로그래밍을 할 수 있도록 지원한다. 스프라이트는 스크래치에 내장된 간단한 에디터를 통해 벡터 또는 비트맵 그래픽 방식으로 선택하여 그릴 수 있으며, 웹캠과 같은 외부 소스에서 불러올 수도 있다.
2013년 스크래치2가 윈도우즈, 맥, 리눅스(어도비 에어 필요) 용으로 온라인에 공개되었다. 스크래치1.x의 소스코드는 GPLv2 라이센스와 스크래치 라이센스로 배포하고 있다.
이름의 기원 #
"스크래칭(scratching)"은 컴퓨터 공학 용어로 이미 작성된 코드를 다른 용도로 재사용하거나, 새로운 시나리오에 쉽게 병합 및 공유되고 적용할 수 있도록 고안된 코드의 재사용을 의미한다. 이것이 "리믹스(remix)"라고 불리는 스크래치의 핵심 기능이다. 리믹스를 통해서 사용자는 다른 사용자가 개발하여 업로드한 공개 프로젝트를 다운로드하고 해당 코드를 기반으로 새로운 코드를 작성할 수 있다. 처음 프로그램을 작성한 사람과 첫 프로그램을 작성한 사람들에게 일종의 공로의 표시로 이름이 기록된다. 스크래치라는 명칭은 턴테이블 기법중 하나인 사운드 믹스 스크래칭에서 유래되었다. 이것은 마치 사운드를 손쉽게 믹싱하는 것처럼 스크래치를 통해 프로젝트를 손쉽게 믹싱한다는 점에 착안하였다.
이것은 방과후 교육 센터와 다른 비공식 교육처에서 학습을 발전 시키고 디자이너나 신기술을 발명하는 젊은이들에게 좀더 폭넓은 기회를 제공하는 것을 목적으로한 연구로 발전했다. 스크래치는 컴퓨터 클럽하우스(Computer Clubhouses)의 젊은 사람들과 스태프들과의 상호작용을 기반으로 지속적으로 개발되었다. 컴퓨터 클럽 하우스에서의 스크래치의 용도는 비공식적인 교육이 어떻게 젊은 사람들이 그들과 관련 커뮤니티 프로젝트를 디자인하고 프로그램을 개발하는 것을 도울 수 있는지를 증명하기 위한 것이었다.
MIT 미디어랩의 미첼 레스닉(Mitchel Resnick)과 그의 몬트리올 기반 컨설팅 회사인 Playful Invention Company - 후에 브라이언 실버맨(Brian Silverman)과 파울라 본타(Paula Bonta)에 의해서 공동 창업된 - 의해 운영되는 평생 유치원 그룹(Lifelong Kindergarten group)은 첫번째 데크스탑 구동 전용 버전의 스크래치를 2003년 발표했다. 당시 목적은 8살 이상 아이들의 프로그래밍을 돕는 것이었다.
스크래치 2는 2013년 5월에 발표되었다. 이 버전에서 사용자 정의 블럭을 정의할 수 있게 되었다. 2015년에 스크래치 홈페이지가 새로운 테마와함께 업데이트 되었다. 2016년 1월 17일 새로운 테마와 함께 홈페이지가 단장되었으며 여타의 페이지들은 기본 테마를 유지하고 있다.
교육에서의 활용 #
스크래치는 영국의 코드 클럽(Code Clubs)을 통해 유명해졌다. 여기서 스크래치는 입문용 언어로서 사용됐는데, 상대적으로 재밌는 프로그램을 만들기 쉬웠고, 스크래치를 통해 배운 스킬을 또다른 파이썬이나 자바와같은 기본적인 프로그래밍 언어에도 할 수 있기 때문이었다.
스크래치는 프로그램을 만드는 용도로만 쓰이는 것은 아닌데, 그 이유는 많은 비주얼 요소를 제공하고, 프로그래머가 애니메이션 스토리 같은 것을 만들 수 있기 때문이다. "피자 두드(The Pizza Dude)", "하이쿠(Haiku)", "젬클랜(Gemclan)" 등이 그 예이다. 어른들의 경우 포토 저널리즘이란 것을 사용할 수 있는데, 이것은 저널리즘의 기본 배경을 가르쳐준다. 수학에 정통하고 싶은 학생들의 경우 기하학에 촛점을 맞춘 "레모네이드 스탠드(Lemonade Stand)", "다이노 홀수와 짝수(Dino Odd and Even)", "데이터 워크숍(Data Workshop), "엘립서레이터(Ellipserator)"를 사용할 수 있다. 스크래치는 유연하게 선생님들이 개념 및 시각화 수업, 그리고 과학 연구 숙제를 만들 수 있도록 돕는데, 이것은 스크래치가 애니메이션을 만드는데 유용한 툴이기 때문이다. 예를들어 스크래치를 통해서 플랜트 셀 미토시스(plant cell mitosis), 물의 순환(water cycle), 갈릴레오 온도계(Galileo Thermometer) 그리고 후크의 법칙 실험(Hooke's Law Experiment)과 같은 복잡한 개념을 비주얼화 할 수 있다. 사회과학 분야의 경우 선생님이 퀴즈나 게임 그리고 튜토리얼을 만들 수 있다. 이는 학습 동기를 자극하고 학생과의 소통에 유용하다. 아이들은 스크래치를 통해 프로그래밍 로직을 이해할 수 있게되고 어떻게 창조적으로 뭔가를 만들고 협력하는지를 이해할 수 있게 된다. 학생들은 "의미있는 개인 프로젝트"를 만들고, 스스로를 표현하는 실용적인 툴로 스크래치를 사용할 수 있다.
사용자 인터페이스 #
화면 좌상단의 왼쪽에서부터 오른쪽에는 스테이지 영역(stage area)가 존재한다. 이 부분에서 애니메이션 터틀 그래픽 등과 같은 모든 것을 작거나 혹은 보통 사이즈로 보여주며 풀 스크린도 가능하다. 모든 스프라이트의 섬네일 이미지가 하단 영역에 리스팅된다. 스테이지는 x, y 좌표계를 사용하며, 스테이지 가운데를 (0, 0) 좌표로 한다.
사용자 정의 스프라이트 및 배경을 만들 수 있는 많은 방법이 지원된다. 첫 째, 사용자는 직접 손으로 스프라이트를 그릴 수 있는데, 스크래치에서 제공하는 "페인트 에디터(Paint Editor)"를 사용하면된다. 둘 째, 사용자는 스프라이트를 선택할 수 있는데, 스크래치 라이브러리라는 곳에서 제공하며 기본적인 스프라이트와 사용자 정의 스프라이트, 카메라를 통해 저장된 사진, 클립 아트 등을 선택할 수 있다.
화면의 좌하단에 선택된 스프라이트와 명령어 블럭들은 블럭 팔레트(block palette)로부터 드래깅을 함으로써 실제 적용을 할 수 있는데, 화면의 우측에 놓으면 된다. 이 블럭은 선택된 스프라이트와 관계된 모든 스크립트를 포함한다. 스크랩트 탭 하단에는 모든 사용가능한 블럭이 표시돼 있으며, 모션(Motion), 외관(Looks), 소리(Sound), 펜(Pen), 데이터(Data), 이벤트(Events), 제어(Control), 센싱(Sensing), 연산자(Operators), 그리고 아래 표에 나온 것과 같은 더 많은 블럭들로 각각 카테고리가 나눠져있다. 각각은 더블클릭을 통해서 다른 조건과 파라미터로 개별적인 테스트가 가능하다.
스크립트 탭 곁에는 두 가지 탭이 더 존재한다. 하나는 코스튭 탭(Costumes tab)이고 다른 하나는 사운드 탭(Sounds tab)이다. 우측의 확대바는 도움말 영역이다. 스크립트 탭 다음에는 코스튬 (Costumes tab)이 있는데, 여기서 사용자는 스프라이트의 외형을 바꿀 수 있다. 이를 통해서 다양한 효과를 생성할 수 있으며 애니메이션도 만들 수 있다. 그리고 마지막 탭인 사운드 탭(Sounds tab)이 있는데, 여기서는 스프라이트에 소리와 음악을 삽입할 수 있다.
과거 버전의 스크래치와 비교했을 때, 2.0에서는 해당 영역이 재배치 되었다. 예전 버전에서는 블럭 팔레트(block palette)가 좌측 영역에 있었으며, 선택된 스프라이트 영역과 선택된 스프라이트와 연관된 스크립트 영역이 화면 중간에 있었다. 그리고 스프라이트 섬네일이 하단에 표시되는 스테이지 영역은 화면의 우측에 존재했다.
사용자 커뮤니티 #
스크래치는 다음과같은 다양한 곳에서 사용하고 있다 : 학교, 박물관, 도서관, 커뮤니티 센터, 그리고 가정. 예를 들어, 어린 아이들도 스크래치 쥬니어(ScratchJr 또는 Scratch Junior)를 통해서 프로젝트를 생성할 수 있다. 그리고 그들의 부모나 나이가 더 많은 형제 자매들도 매우 쉽게 사용할 수 있다. 하버드 대학생들의 경우 기초 컴퓨터 공학 수업에서 사용하고 있다. 스크래치의 로컬라이제이션 파일을 통해서 사용자 언어 설정을 변경할 수 있다. 영재들을 위한 존스홉킨스 대학 센터(Johns Hopkins University Center for Talelnted Youth)에서는 스크래치 프로그래밍을 위한 온라인 코스를 제공하는데, 시티온라인 프로그램(CITY Online program)이라고 불리며, 대상은 6학년 또는 그 이상의 학생이다.
다양한 실험적 연구가 진행되었는데, 해당 연구에서는 스크래치가 직관적인 학습을 방해하는 요소를 제거하고, 처음 시작하는 사람들에게 동기 부여가 되며, 탐구 및 지속적인 학습에 도움이된다고 말한다. 그중 몇몇 결과는 다소 놀라운데, 스크래치가 베이직(BASIC), 로고(Logo), 앨리스(Alice)와 같은 교육용 언어와는 매우 다르다고 이야기하고 있다.
온라인 커뮤니티 #
스크래치의 온라인 슬로건은 "상상하라(Imagine), 프로그램하라(Program), 공유하라(Share)"이다. 이것은 창조활동의 공유 및 사회적인 측면이 스크래치에 내재된 철학의 중요한 부분이라는 것은 말한다. 스크래치 온라인 커뮤니티의 몇몇 주요 멤버들은 스크래치 프로그래밍 방법론에 있어서 개인적인 큰 발전을 이루었다.
스크래치 프로젝트는 "블랙박스(black boxes)"가 아니다. 오히려 새로운 프로젝트를 만들기 위한 리믹싱 도구로 보인다. 프로젝트는 스크래치 개발환경에서 직접 스크래치 웹사이트로 업로드할 수 있으며, 어떤 커뮤니티 멤버든지 해당 프로젝트를 모든 소스코드를 다운로드 받아서 공부하거, 이를 기반으로 새로운 프로젝트를 생성할 수 있다. 멤버들은 프로젝트 스튜디오, 코멘트, 태그, 좋아요 그리고 사랑해요를 생성할 수 있다. 또 다른 사용자의 프로젝트와 활동을 팔로우 할 수 있으며, 아이디어를 공유할 수 있다. 프로젝트는 게임에서부터 애니메이션, 실용적인 툴까지 다양하는 범위에 걸쳐있다. 채팅 룸도 허락된다. 웹사이트의 모든 프로젝트는 크리에이티브 커먼즈(Creative Commons) 속성과 쉐어 어라크(share-alive) 라이센스로 공유되며, 플래시 플레이어를 통해서 웹브라우저를 통해 플레이할 수 있다. 불행히도 iOS 디바이스에서는 사용이 불가하다.
웹사이트는 한달에 천만명의 페이지뷰에 도달했으며, 2014년 8월 10일 3,726,565명의 등록 멤버를 보유했으며, 프로젝트 개수는 6,100,000개를 넘었다. 1분당 한 개 이상의 프로젝트가 업로드 된 셈이다. 하지만 오직 402,697 명의 사용자만 그들의 프로젝트를 공유했다. 웹사이트는 자주 "스크래치 디자인 스튜디오(Scratch Design Studio)" 챌린지를 만드는데, 이는 기본적인 디자인 개념을 제공하여 사용자들이 프로젝트를 만들고 공유하는 것을 장려하기 위함이다. 멕시코나 이스라엘은 직접 홈페이지를 만들어서 제공하고 있는데, 홈페이지 일부에 직접 제작한 내용을 제공하고 있다. 스크래치는 아우어 오브 코드(Hour of Code)에 여러번 참여해왔다. 포르투갈 및 유나이티드 아랍 에미레이트(United Arab Emirates)와 같은 나라에서 독립적인 스크래치 웹사이트를 제공하고 있다. 2008년, 스크래치 온라인 커뮤니티 플랫폼("ScatchR"이라고 부름)은 Ars Electronica Prix에서 상을 받았다. ScratchEd라는 교육자를 위한 온라인 커뮤니티도 존재한다. 스크래치는 다양한 장르의 온라인 롤플레이를 위한 재밌는 문학 형식(literary structure)이다.
(역자주) "Literary structure"를 문학 형식으로 번역했는데, 문장 전체가 정확히 무슨 의미인지 파악하기 어려워 아래 원문을 함께 적었다. Scratch is also a fun literary structure, with online roleplays, in many different genres.
특징 및 파생물 #
스크래치의 현재 버전은 프로시저를 퍼스트 클래스 스트럭쳐(first class structure)로 다루지 않고 있으며, 제한적인 파일 입출력을 제공하고 있다. 참고로 파일 입출력은 2.0 확장 프로토콜(Extension Protocol)을 통해 옵션으로 제공된다. 이것은 다소 실험적인 기능인데, 스크래치 2.0과 다른 프로그램 사이의 통신을 허용하는 기능이다. 확장 프로토콜은 레고 마인드스톰(Lego Mindstorm), 아두이노(Arduino)와 같은 하드웨어 보드와 통신하는 기능을 제공한다. 덧붙여서 스크래치2는 리스트(lists)라고 부르는 1차원 배열만을 지원한다. 실수나 문자열도 1.4 버전에서 지원되지만 스트링을 조작하는 것은 한정된 방식으로만 가능하다.
(역자주) 프로시저를 퍼스트 클래스 스트럭쳐로 다룬다는 의미는 변수에 함수를 대입하고 이를 사용할 수 있다는 의미이다. 예를 들어 자바스크립트의 경우 이름없는 함수(anonymous function)를 정의하여 이를 변수에 대입하고 변수명을 함수 이름 처럼 호출해서 사용할 수 있다. 정수, 부울린 값, 문자열 등이 대표적인 퍼스트 클래스 스트럭쳐이다. 파워풀한 멀티미디어 기능과 멀티 스레드 프로그래밍 스타일과 프로그래밍 언어 측면에 다소 제한적인 점은 참 대조적이다. 2013년 5월 6일, 스크래치는 2.0 버전으로 업데이트하기 위해서 3일간 문을 닫았다. 업데이트에서는 사이트 외관이 바뀌었고 온라인 프로젝트 에디터가 포함되었다. 새로운 스크래치2 베타 버전에서는 오프라인 에디터도 사용가능하다. 이전은 오래전 스크래치 2.0 버전을 대체한다.
스크래치 모디피케이션(Scratch Modification)이라고 불리는 다양한 스크래치 변형이 존재한다. 이들은 스크래치 1.4버전의 소소코드를 기반으로 만들어졌다. 보통 해당 프로그램들은 GUI에 변형을 주고 다양한 추가 블럭을 제공한다. 그것들 중에는 추가적으로 스냅!(Snap!)이라는 언어를 통해서 컴퓨팅에 대한 새로운 접근 방법을 제시한다. 예를 들어, 수학에는 람다 칼큘러스(lambda calculus)라고 부르는 퍼스트 클래스 프로시저와 퍼스트 클래스 리스트(리스트의 리스트를 포함), 그리고 퍼스트 클래스 스프라이트, 그리고 중첩 가능한 스프라이트를 제공한다. 퍼스트 클래스 스프라이트의 경우 프로토타입 상속과 같은 객체지향 개념을 제공하는데, 앞서 언급된 언어의 특징들은 스크래치에는 없는 것들이다. 스냅!(이전 버전에서는 BYOB이라고 부름)은 젠스 모닉(Jens Mönig)에 의해서 개발되었으며, UC 버클리(University of California, Berkeley)의 브라이언 하베이(Brian Harvey)가 관련 문서를 제공하였다. 이것은 CS 또는 CS를 전공하지 않는 학생들에게 컴퓨팅의 아름다움과 즐거움을 가르치기 위해서 사용돼왔다. 스크래치와 다른 변형 프로그램들의 소스코드는 스몰토크-80에 기반한다. 스크래치 버전2는 액션스크립트(ActionScript)를 기반으로 개발되었으며, 실험적인 자바스크립트 버전도 개발중이다.
(역자주) 2016년 4월 기준 code.org 사이트에서 이미 자바스크립트 기반 스크래치를 제공하고 있다. 카트로뱃(Catrobat)은 스크래치에서 영감을 받은 스마트폰과 태블릿을 위한 비주얼 프로그래밍 언어이다. 포캣 코드(Pocket Code)는 카트로뱃으로 만들어진 프로그램을 만들고, 다운로드 및 업로드를 할 수 있는 앱이다. 카트로뱃과 포캣 코드는 오픈소스 라이센스로 배포된다.
부록 #
다음은 MIT 평생 교육 그룹(MIT Lifelong Kindergarten Group)에서 제공하는 또다른 어린이 컴퓨터 프로젝트이다 :
- Computer Clubhouse
- Programmable Cricket
다음은 또다른 교육용프로그래밍 언어이다 :
- Alice (소프트웨어)
- Blockly, the snap-together block language (Code.org 사용)
- Etoys
- Greenfoot
- Microsoft Small Basic
- Microsoft Kodu Game Lab (상용)
- NetLogo
- RoboMind
원문 출처 : Wikipedia - https://en.wikipedia.org/wiki/Scratch_(programming_language)
- Previous: NOL2 블로깅 시작
- Next: Coastal World