Snap!, Scratch 확장에서 출발한 블록 언어로 일급 프로시저·연속성까지 지원
- Snap!은 어린이와 성인을 위한 시각적 드래그앤드롭 프로그래밍 언어이며, 컴퓨터 과학을 본격적으로 학습하는 플랫폼이라고 소개함
- Snap!은 MIT Media Lab의 Scratch를 확장해 다시 구현한 프로젝트로, 이전 이름은 BYOB(Build Your Own Blocks)였음
- 사용자가 직접 블록을 만들 수 있고 일급 리스트, 일급 프로시저, 일급 연속성을 지원해 고교·대학 수준 컴퓨터 과학 입문에 쓸 수 있다고 설명함
- 웹에서 바로 실행할 수 있으며, 예제 프로젝트와 학습 자료, 사용자가 올린 게임·애니메이션 등의 프로젝트 모음을 제공함
Hacker News opinions
Snap!은 Scratch를 확장해 다시 구현한 프로젝트임. 사용자가 블록을 직접 만들 수 있고, 일급 리스트·프로시저·연속성을 지원해서 고교나 대학 CS 입문에도 맞춘다는 설명임.
Scratch도 사용자 정의 블록과 리스트는 이미 지원하는데, 이건 바퀴를 다시 만들면서 개발 커뮤니티만 나누는 것처럼 보임.
Snap!이 Scratch보다 표현력은 높지만 디버깅이 너무 고통스러웠음. 변수나 블록 이름을 바꾸면 호출부에 구멍이 생기기도 하고, 오류를 알리지 않은 채 조용히 실패해서 기능 추가보다 안정성과 완성도를 먼저 다듬었으면 함.
시각 프로그래밍이라면 블록은 이름 문자열이 아니라 특정 변수 객체를 가리켜야 함. 이름을 바꿨다고 참조가 깨지는 건 이상함.
예전의 이상한 점은 꽤 고쳤지만, 새 기능에 문서를 안 붙이는 게 가장 불만임. 오래된 블록의 help 메뉴도 split/join 같은 기능은 설명이 낡았고, 새 블록은 메뉴를 눌러도 아무 내용이 안 나옴.
배울 때 몇 장을 해봤는데 좋았음. 아이에게도 이런 환경을 접하게 하고 싶어서 새 업데이트가 있는지 다시 볼 생각임.
조카들과 Scratch와 Snap!을 오래 써봤는데, 지역 수업 교사들은 더 단순하고 아이들이 잘 붙는다고 Microsoft MakeCode로 바꿨음.
내 조카도 Scratch를 좋아했지만 MakeCode에는 완전히 빠졌음. 만든 게임을 실행하는 작은 Game Boy 기기를 줬더니 계속 게임을 보내고 내가 못한다고 놀림. 어릴 때는 타이핑 손동작이 아직 서툴러서, 뭘 입력할지 말로 지시하며 Flexbox Froggy를 풀었는데 블록 방식이 발달 단계상 도움이 되는 이유를 알겠더라.
대학도 대기업만큼 NIH 증후군에 빠지는 모양임.
이 경우는 아님. BYOB는 원래 Scratch 확장으로 만들었고, Scratch 팀이 병합하지 않자 이미 작동하던 코드를 버리지 않고 Snap!으로 발전시킨 것임.
그래픽 프로그래밍 환경이 싫은 이유를 정확히 말하기 어렵지만, 여기서 프로그래밍 일부는 배워도 소프트웨어 공학은 못 배운다는 느낌이 듦.
내 경험상 이런 건 현실과 연결되지 않은 장난감 같음. 나는 '이게 뭐지?', '이런 걸 어떻게 만들지?'에서 많이 배웠는데, 이 환경은 그런 호기심을 이끌 방법이 잘 안 보임.
알파벳 노래만으로 훌륭한 소설가는 못 되지만, 그래도 알파벳 노래가 쓸모없는 건 아님.
코드를 직접 쓰는 데 익숙하면 시각 환경은 모든 게 방해물처럼 느껴짐. 빨리 고치고 옮기기 어렵고 결국 화면이 어수선함.
Snap!은 고차 함수를 직접 만들게 해주니 소프트웨어 공학도 배울 수 있음. 문법 오류가 안 나는 점은 아이들 교실을 교사 한 명이 운영할 때 특히 유용함.
키보드 조작이 GUI에 들어갈 때를 좋아한다면, 그래픽 언어는 텍스트 기반 작업에서 키보드 상호작용을 빼는 반대 방향으로 느껴질 수 있음.
나는 12살에 블록 프로그래밍으로 시작했고 지금은 정규직 개발자이자 투자받은 스타트업 창업자임. 단순한 구성 요소로 복잡한 개념을 배울 수 있고, Scratch에서 RISC-V 위의 Linux를 돌리는 프로젝트도 있음.
Snap!은 Scheme을 아는 사람에게는 시각 블록 문법의 Scheme처럼 보임. Scratch의 무대와 터틀 그래픽을 웹 브라우저에서 쓰고, 마우스 없이 편집할 수 있을 만큼 키보드 지원도 갖췄음.