{{위키데이터 속성 추적}}
{{번역 확장 필요|en|Scratch (programming language)}}
{{프로그래밍 언어 정보
| 이름 = 스크래치<br />Scratch
| 로고 = Scratchlogo.svg
| 그림 =
| 패러다임 = [[사건 기반 프로그래밍]]
| 연도 = 2006
| 설계자 = [[Mitchel Resnick]](미첼 레스닉)
| 개발자 = [[MIT 미디어 랩]](MIT 미디어 연구소) [http://llk.media.mit.edu/ Lifelong Kindergarten Group(평생유치원 그룹)]
| 최근 버전 = 3.0 (2019년)
| 형 체계= [[자료형 체계|동적 자료형]]
| 구현체 = Scratch
| 프로그래밍 언어 = [[스몰토크]] (~1.4)
[[액션스크립트]] (2.0)
[[JavaScript]] (3.0~)
| 영향을 받은 언어 = [[로고 (프로그래밍 언어)|로고]], [[스몰토크]], [[하이퍼카드]], [[StarLogo]], [[AgentSheets]], [[Etoys]]
| 라이선스               = [[GNU 일반 공중 사용 허가서]] 및 스크래치 소스 코드 라이선스(Scratch Source Code License)
| 웹사이트               = [http://scratch.mit.edu/ scratch.mit.edu]
| 파일 확장자 = .sb .sprite (~1.4)
.sb2 .sprite2 (2.0)
.sb3 (3.0~)
}}
'''스크래치'''(Scratch)는 [[MIT 미디어 랩]]에서 8세~16세의 아이들을 대상으로 만든 [[교육용 프로그래밍 언어|교육용]], [[블록형 프로그래밍 언어]]이다.<ref>[http://news.bbc.co.uk/1/hi/technology/6647011.stm Free tool offers 'easy' coding] [[BBC News]] 14 May 2007</ref> 이 사이트에서 활동하는 사람들인 '스크래쳐'({{Llang|en|Scratcher}})들은 블록을 조립하는 방식으로 프로젝트를 만든다. 만들어진 프로젝트는 스크래치 웹사이트에서 누구나 실행하거나 하트나 별, 댓글을 달고 [[리믹스]]할 수 있다.<ref name="statistics">{{웹 인용|url=https://scratch.mit.edu/statistics/|title=Community statistics at a glance|website=scratch.mit.edu|archive-url=https://web.archive.org/web/20160406023520/https://scratch.mit.edu/statistics/|archive-date=6 April 2016|url-status=live|access-date=18 May 2019}}</ref> 필요하다면 [[HTML5]]나 [[안드로이드 앱]], [[EXE]] 등의 형식으로 내보낼 수도 있다.

2024년 1월 기준, 공유된 프로젝트는 15,929,322개, 등록된 계정은 100,411,828개, 프로젝트에 달린 댓글은 총 722,213,385개로 집계되었다. 또한, 스크래치 웹사이트는 지난 한 달 동안 711,425,440번의 접속이 있었다.<ref name="statistics" /><ref>{{웹 인용|url=https://scratch.mit.edu/statistics/|제목=Scratch Statistics - Imagine, Program, Share|웹사이트=스크래치|출판사=2022-12-07}}</ref>

스크래치 체험용의 하위 버전인 1.4 버전은 [[오픈 소스]]라서 누구든지 [[스크래치 모딩]](스크래치 모드를 만드는 행위)을 할 수 있다.

== 스크래치 3.0 ==
스크래치 3.0은 스크래치 2.0의 상위 버전으로, 2018년 후반에 베타 버전이 공개되었고 2019년 1월 정식 버전이 출시되었다. 2.0에서 쓰이던 [[어도비 플래시]]를 사용하지 않고 [[HTML5]]와 [[자바스크립트]]로 새롭게 제작되었다.

=== 화면 구성 ===
[[파일:Dialogo_scratch_Best_Friends_1.png|섬네일|프로젝트가 시작되면 배경을 바꾸고 움직인 뒤 말을 하는 코드.]]
화면은 블록 모음과 블록 조립소, 화면으로 이루어져 있다. 블럭 모음에서 필요한 블록을 블럭 조립소로 꺼낸 뒤, 초록 깃발이나 블록을 눌러 실행할 수 있다. 초록 깃발을 누르면 전체가 실행되며 블록을 누르면 누른 블럭이 속한 [[블록 (프로그래밍)|블럭 뭉치]]가 실행된다. 화면은 <math>xy</math> [[좌표]]로 구성되어 있으며 동작 블럭을 이용해 움직일 수 있다. 좌표는 화면의 가운데가 <math>0, 0</math>이다.<ref name="LearnToProgram">{{서적 인용|title=Learn to Program with Scratch|url=https://archive.org/details/learntoprogramwi0000marj|last=Marji|first=Majed|year=2014|publisher=No Starch Press|location=San Francisco, California|pages=xvii, 1–9, 13–15|isbn=978-1-59327-543-3}}</ref>

=== 블럭 카테고리 ===
<div style="display: inline-block; width: 420px; max-width: 100%; vertical-align:top;">
{| class="wikitable" style="text-align: left; margin-bottom: -1px; margin-top: 0px; width: 100%;"
|-
! colspan="2" style="background: #efefef; " | 카테고리 !! 설명
|- valign="top"
| style="background:#4c97ff; height: 3em; width: 1px;" | || style="width: 75px;" | 동작 || 움직이기, 회전하기 등 움직이는 것에 관련된 블럭이다.
|- valign="top"
| style="background:#9966ff; height: 3em;" | || 형태 || 스프라이트의 형태나 효과, 말풍선 등을 지정한다.
|- valign="top"
| style="background:#cf5acf; height: 3em;" | || 소리 || 스크래치 기본 소리나 불러온 소리를 재생한다.
|- valign="top"
| style="background:#ffbf00; height: 3em;" | || 이벤트 || 키보드 입력, 프로젝트 시작 등의 사건이 일어났을 때 아래의 블록을 실행한다.
|- valign="top"
| style="background:#ffab19; height: 3em;" | || 제어 || [[조건문]], [[반복문]], 기다리기, [[복사|복제]] 등 실행을 제어한다.
|- valign="top"
| style="background:#5cb1d6; height: 3em; width: 1px;" | || style="width: 75px;" | 감지 || [[마우스 포인터]], 다른 스프라이트, 배경 등의 움직임이나 변화를 감지한다.
|- valign="top"
| style="background:#52b55a; height: 3em;" | || 연산 || [[사칙연산]]을 포함한 수학 연산자로 다른 블럭에 들어간다.
|- valign="top"
| style="background:#ff8c1a; height: 3em;" | || 변수 || 변수와 리스트를 만들고 수정한다. 클라우드 변수를 사용하면 스크래쳐 등급을 가진 사람들이 공유할 수 있지만 숫자만 저장할 수 있고 한 프로젝트당 최대 10개의 변수만 생성할 수 있다.
|- valign="top"
| style="background:#ff4d88; height: 3em;" | || 내 블록 || 자신이 [[함수]]를 만들어 사용할 수 있다.
|- valign="top"
| style="background:#0fbd8c; height: 3em;" | || 확장 기능 || 추가해서 사용할 수 있는 블록 카테고리이다.
|}
</div>

=== 데스크톱 버전 ===
인터넷 연결과 커뮤니티 기능 없이 프로젝트를 편집하고 저장할 수 있다. [[마이크로소프트 스토어]]와 [[앱 스토어]](맥 전용)에서 다운로드할 수 있다.<ref>{{웹 인용|url=https://scratch.mit.edu/download|title=Scratch Desktop|access-date=19 September 2019}}</ref> 또한 [https://scratch.mit.edu/download 공식 홈페이지](2.0과 1.4만 다운로드 가능) 또는 [https://scratcharchive.naleksuh.com/ 아카이브]에서 온라인 버전에서는 지원하지 않는 이전 버전(3.0 이하)을 다운로드할 수 있다.

=== [https://lab.scratch.mit.edu/ 스크래치 랩] ===
스크래치에서는 지원하지 않는 기능들을 시험적으로 사용할 수 있다. 2022년 12월 기준 다음과 같은 기능들이 있다.<ref name=":0">{{웹 인용|url=https://lab.scratch.mit.edu/|제목=Scratch Lab|웹사이트=|확인날짜=2022-12-07}}</ref>

* 얼굴 인식: 얼굴과 눈, 코 입 등의 위치를 감지해 안경 등의 효과를 줄 수 있다.<ref>{{웹 인용|url=https://lab.scratch.mit.edu/face/|제목=Face Sensing - Scratch Lab|웹사이트=스크래치 랩|확인날짜=2022-12-07}}</ref>
* 움직이는 글자: 변수를 보여주지 않고 글의 내용, 글꼴(스크래치에 내장된 글꼴만 가능), 색, 위치, 애니메이션 등을 설정하고 바꿀 수 있다.<ref>{{웹 인용|url=https://lab.scratch.mit.edu/text/|제목=Animated Text - Scratch Lab|웹사이트=스크래치 랩|확인날짜=2022-12-07}}</ref>
* 블록 색 바꾸기: 블록의 색을 연하게 하고 글자의 색을 검정색으로 바꾸어 읽기 쉽게 한다.<ref>{{웹 인용|url=https://lab.scratch.mit.edu/contrast-blocks/|제목=New Block Colors - Scratch Labs|웹사이트=스크래치 랩|확인날짜=2022-12-07}}</ref>

스크래치 팀에 따르면 어느 기능은 기본 스크래치에 추가될 수도 있고, 어느 기능들은 추가되지 않을 것이라고 한다.<ref name=":0" />

== 사용처 ==
[[파일:Clase de Programación con Scratch.jpg|섬네일|학교에서 스크래치를 가르치고 있다.]]
스크래치는 아이들에게 기본적인 컴퓨터 프로그래밍을 소개하는 수단으로 전 세계의 학교 등에서 사용된다. 어린이와 어른 모두 스크래치 프로그래밍의 기본 원리를 이해하면 다른 프로그래밍 언어로 옮겨가는 데 도움이 된다.

=====하지만=====

[[대한민국]]에서는 정규 교육 과정에 이와 비슷한 [[엔트리 (프로그래밍 언어)|엔트리]]를 가르친다.
이제 대한민국의 모든 학교에서 엔트리를 사용한다.

== 같이 보기 ==
* [[블록형 프로그래밍 언어]]

* [[엔트리 (교육 플랫폼)|엔트리]]
* [[스크래치 모딩]]

== 각주 ==
{{각주}}

== 외부 링크 ==
{{위키공용분류}}
* {{공식 웹사이트}}
* [http://test.scratch-wiki.info/wiki/Kor:%EC%8A%A4%ED%81%AC%EB%9E%98%EC%B9%98 스크래치 위키]
* {{Dmoz|Computers/Programming/Languages/Smalltalk/Squeak/Scratch|스크래치}}

{{전거 통제}}


[[분류:동적 타입 프로그래밍 언어]]
[[분류:시각적 프로그래밍 언어]]
[[분류:교육용 프로그래밍 언어]]
[[분류:자유 교육용 소프트웨어]]
[[분류:MIT 미디어 랩]]
[[분류:스몰토크 프로그래밍 언어 계열]]
[[분류:비디오 게임 개발 소프트웨어]]
[[분류:게임 엔진]]
[[분류:비디오 게임 IDE]]
[[분류:소프트웨어 개발 공동체]]
[[분류:2003년 개발된 프로그래밍 언어]]
[[분류:파일 포맷]]
[[분류:파일 확장자]]