TECH 으로 돌아가기
TECH HACKER NEWS 오늘 7분 읽기 20 READS

스크래치 다음은 뭘까? 람다까지 배우는 버클리의 블록 언어 Snap!

스크래치 다음은 뭘까? 람다까지 배우는 버클리의 블록 언어 Snap!
SOURCE IMAGE · HACKER NEWS
스크래치 다음은 뭘까? 람다까지 배우는 버클리의 블록 언어 Snap!

프로그래밍 교육 얘기가 나오면 항상 스크래치(Scratch)가 먼저 언급되죠. 그런데 스크래치 다음 단계, 그러니까 블록 코딩의 재미는 유지하면서 대학 수준의 컴퓨터과학 개념까지 배울 수 있는 언어가 있다는 건 의외로 모르는 분이 많아요. UC 버클리에서 만든 Snap!이 바로 그거예요. 로고에 그리스 문자 람다(λ)가 박혀 있는데, 이게 이 언어의 정체성을 그대로 보여줘요.

Snap!이 뭐냐면

Snap!은 브라우저에서 바로 실행되는 블록 기반 프로그래밍 언어예요. 설치 없이 snap.berkeley.edu에 접속하면 바로 쓸 수 있고, 오픈소스라 코드도 다 공개돼 있어요. 겉모습은 스크래치와 아주 비슷해요. 색깔별로 구분된 블록을 끌어다 조립해서 프로그램을 만들고, 무대 위의 스프라이트를 움직이는 방식이죠. 원래는 스크래치를 확장한 BYOB(Build Your Own Blocks)라는 프로젝트로 시작했다가 자바스크립트로 완전히 다시 만들어지면서 Snap!이라는 이름을 갖게 됐어요. 개발을 이끈 옌스 뫼니히(Jens Mönig)와 브라이언 하비(Brian Harvey)는 컴퓨터과학 교육 분야에서 오래 활동해온 사람들이에요.

스크래치와 결정적으로 다른 점

스크래치는 아이들이 쓰기 쉽게 하려고 일부러 언어 기능을 제한했어요. 그런데 Snap!은 반대로 「진짜 프로그래밍 언어가 할 수 있는 건 다 할 수 있어야 한다」는 철학이에요. 가장 큰 차이가 일급 함수(first-class procedures)예요.

이게 뭐냐면, 함수를 숫자나 문자열처럼 「값」으로 다룰 수 있다는 뜻이에요. 함수를 변수에 넣을 수도 있고, 다른 함수에 인자로 넘길 수도 있고, 함수가 함수를 만들어서 돌려줄 수도 있어요. 자바스크립트에서 배열에 .map()을 쓰거나 파이썬에서 lambda를 쓰는 게 바로 이 개념이죠. Snap!에서는 회색 고리 모양의 블록 안에 다른 블록을 넣으면 그게 「실행되지 않은 채로 값이 된 함수」, 즉 람다가 돼요. 그래서 로고에 λ가 있는 거예요.

이 기능 하나가 있으면 할 수 있는 게 확 달라져요. 리스트의 모든 항목에 어떤 처리를 적용하는 map, 조건에 맞는 것만 남기는 keep(다른 언어의 filter), 전부 합치는 combine(다른 언어의 reduce) 같은 고차 함수를 블록으로 직접 쓸 수 있어요. 재귀도 자연스럽게 되고, 리스트 안에 리스트를 넣는 중첩 자료구조도 일급으로 지원돼요. 심지어 자기만의 제어 구조를 새로 만드는 것도 가능해요. 예를 들어 「n번 반복하는데 홀수 번째만 실행하는 블록」 같은 걸 사용자가 직접 정의할 수 있는 거죠. 스크래치에서는 애초에 불가능한 일이에요.

교육 현장에서 어떻게 쓰이나

Snap!은 「The Beauty and Joy of Computing(BJC)」이라는 커리큘럼의 공식 언어예요. 이 과정은 미국 고등학교 AP 컴퓨터과학 원리(AP CS Principles) 과목으로 채택돼 있고, UC 버클리의 비전공자 대상 컴퓨터과학 입문 수업에서도 써요. 대학 신입생이 블록 언어로 컴퓨터과학을 배운다는 게 어색하게 들릴 수 있는데, 오히려 핵심이 여기 있어요. 세미콜론 위치나 괄호 짝 맞추기 같은 문법 때문에 막히지 않고, 추상화, 재귀, 고차 함수 같은 「개념」 자체에 집중할 수 있거든요. 문법은 나중에 텍스트 언어로 넘어갈 때 배우면 되고요.

업계 맥락: 블록 언어들의 스펙트럼

블록 기반 언어를 한 줄로 세워보면 이해가 쉬워요. 스크래치는 초등학생부터 쓸 수 있게 만든 창작 도구이고, 구글의 Blockly는 다른 서비스에 블록 편집기를 끼워 넣는 라이브러리, 마이크로소프트 MakeCode는 마이크로비트 같은 하드웨어 교육용이에요. 앱인벤터는 안드로이드 앱을 블록으로 만들죠. 이 중에서 「언어 자체의 표현력」이 가장 높은 게 Snap!이에요. 사실상 블록 모양을 한 Scheme(리스프 계열 언어)에 가깝다고 보는 사람도 있어요. 블록 코딩에서 텍스트 코딩으로 넘어가는 단계에서 아이들이 많이 이탈하는데, Snap!은 그 사이의 간극을 개념 수준에서 메워주는 위치에 있어요.

한국 개발자에게 주는 시사점

한국에는 네이버가 만든 엔트리가 있어서 초중등 정보 교육은 대부분 엔트리나 스크래치로 이뤄져요. 2025년부터 초중등 정보 교육 시수가 늘면서 「블록 코딩 다음에 뭘 가르쳐야 하나」가 학교와 학원 모두의 고민이 됐는데, Snap!은 그 답 중 하나가 될 수 있어요. 파이썬으로 바로 넘어가기 전에 함수형 개념을 블록으로 먼저 익히는 경로가 생기는 거죠.

현업 개발자에게도 의미가 있어요. 자녀나 후배에게 프로그래밍을 가르칠 때 「map이 뭔지」를 코드 없이 설명하기 어려웠다면 Snap!으로 눈에 보이게 보여줄 수 있어요. 그리고 솔직히, 일급 함수와 클로저 개념이 아직 흐릿한 주니어 개발자라면 본인이 한번 해보는 것도 나쁘지 않아요. 문법을 걷어내고 개념만 남기면 의외로 금방 이해되거든요. 30분만 만져봐도 「아, 함수를 값으로 넘긴다는 게 이런 거구나」 하는 순간이 와요.

마무리

한 줄 정리하면, Snap!은 「블록 코딩은 애들 장난감」이라는 편견을 깨는 언어예요. 여러분은 프로그래밍을 처음 배울 때 문법이 먼저였나요, 개념이 먼저였나요? 블록 언어로 컴퓨터과학 개념을 배우는 방식에 대해 어떻게 생각하세요?


🔗 출처: Hacker News

SOURCE · HACKER NEWS
원문 전체 보기 → https://snap.berkeley.edu/
SHARE
NEXT · CHOOSE

변화를 읽었다면,
내가 만들 수익 구조를 고릅니다.

정보를 더 모으는 데서 멈추지 않고, 광고·외주·판매·중개·구독 중 내 상황에 맞는 출발점을 정해보세요.

21가지 수익 구조 살펴보기
처리 중...