Snap!로 블록 코딩을 넘어 컴퓨터 과학까지

Λ Snap – An inviting programming language for kids and adults for CS study

Snap!로 블록 코딩을 넘어 컴퓨터 과학까지

UC Berkeley와 SAP가 만든 Snap!은 어린이와 성인 모두를 위한 블록 기반 프로그래밍 언어다. 낮은 진입 장벽, 넓은 확장성, 무한한 가능성을 내세우며, 단순한 코딩 교육을 넘어 컴퓨터 과학을 진지하게 연구하는 플랫폼으로 설계됐다. 사용자들은 게임, 시뮬레이션, 애니메이션 등 다양한 프로젝트를 공유하며, Snap!Con과 같은 행사를 통해 커뮤니티도 활발히 운영된다.

Snap!은 어린이와 성인 모두를 위한 폭넓게 매력적인 프로그래밍 언어이자, 컴퓨터 과학을 진지하게 연구할 수 있는 플랫폼입니다.
  1. aspizu

    Scratch는 제가 처음 프로그래밍을 배운 방법입니다. 점점 더 야심찬 프로젝트를 만들다 보니, 어느 순간 편집기 자체가 제가 싸워야 할 주된 대상이 되었습니다. 프로젝트가 약 10,000개 블록에 이르면 끔찍할 정도로 느려질 수 있었고, 결국 Scratch의 한계를 우회하는 데 많은 시간을 쏟게 되었습니다.

    그래서 결국 goboscript를 만들게 되었습니다: https://github.com/aspizu/goboscript

    저는 커리어를 Scratch에 빚진 프로그래머 중 한 명입니다. 올해 https://ente.com에 소프트웨어 엔지니어로 합류했습니다. Scratch는 제게 코딩하는 법을 가르쳐 주었고, 어쩌면 간접적으로 실제 엔지니어링도 조금 가르쳐 주었습니다.

  2. sinuhe69

    Snap은 Scratch보다 더 표현력이 풍부하고 강력하도록 설계되었습니다. 하지만 디버깅이 매우 고통스럽다고 느낍니다. 예를 들어 변수나 블록의 이름을 바꾸면 호출 지점에 '구멍'이 생길 수 있는데, 시스템이 오류를 보고할 수도 있고 안 할 수도 있으며 조용히 실패합니다. 제 생각에 Snap은 더 불안정하고, 팀은 기존 기능을 다듬거나 시스템을 더 견고하고 안정적으로 만드는 것보다 새 기능을 추가하는 데 더 열심인 것 같습니다.

  3. andrewla

    저는 이렇게 그래픽 프로그래밍 환경이나 Scratch 같은 것을 별로 좋아하지 않는데, 왜 그렇게 매력 없게 느껴지는지 정확히 설명하기 어렵습니다.

    큰 이유 중 하나는, 어느 정도까지는 이것으로 프로그래밍을 배울 수 있다는 점입니다. 하지만 이것으로 소프트웨어 엔지니어링을 배울 수는 절대 없습니다.

  4. Dwedit

    입력할 수 없는 이름은 문제가 될 수밖에 없습니다.

  5. brian_harvey

    시각적 프로그래밍이 소프트웨어 엔지니어링을 배우는 데 도움이 되지 않는다고 불평하는 댓글 작성자들에게 한마디:

    맞습니다, 여러분은 우리의 타깃 독자가 아닙니다. 우리는 대학에서 컴퓨터 과학을 전공하지 않을 사람들, 하지만 이 모든 소란이 무엇인지 궁금해하는 사람들을 대상으로 합니다. 그들은 고등학교 대수학을 배웠으니 변수가 무엇이고 함수가 무엇인지 압니다. (함수를 데이터로 다루는 것까지 알 필요는 없지만, 그것도 가르쳐 주고 싶습니다.) 요즘은 아마 초등학교에서 Scratch를 써 봤을 테니, 블록의 문법이나 스프라이트가 무엇인지 등을 가르칠 필요가 없습니다.

    우리 수업을 듣고 바로 소프트웨어 엔지니어링 직업을 갖게 될 사람은 아무도 없습니다. 그건 나중에 배울 기회가 충분히 있을 겁니다. (우리 수업 덕분에 대학에서 뭘 공부할지 마음을 바꾸는 일이 고맙게도 자주 일어나듯이 말이죠.)

    그들은 (적어도 아직은) 해커가 아닙니다. 기계를 만나면 본능적으로 분해하려는 사람들이라는 의미에서요.

    아, 덧붙이자면, 블록 언어가 소프트웨어 엔지니어링에 더 나은 점이 하나 있습니다: 이름을 한 번만 입력하면 되기 때문에 임의로 긴 이름(단어 사이 공백 포함)을 쓸 수 있습니다. 그래서 추한 "convUcLc" 대신 "convert upper case to lower case letters"처럼 자기 문서화적인 이름을 프로시저에 붙일 수 있습니다.

  6. thrtythreeforty

    이 경우 HN이 "λ"를 자동으로 대문자로 바꾸지 말았어야 한다고 생각합니다. 익명 함수는 λ이지, Λ가 아닙니다.

  7. pamelafox

    저는 일반적으로 블록 기반 코딩을 그다지 좋아하지 않지만, UC Berkeley에 있을 때 Snap 사람들과 함께 일했는데, 그들은 블록 기반 코딩과 함수 우선 접근법 모두에 대해 매우 설득력 있는 논거를 제시합니다.

    그곳에 있는 동안 저는 Snap을 위한 이 중학교 커리큘럼 개발을 도왔습니다:

    https://bjc.berkeley.edu/bjc-r/course/sparks.html

    여전히 재미있으면서도 함수 우선 접근법을 시도해 보는 것은 정말 흥미로웠습니다. 결국 함수 우선 Python 과정을 위해서도 비슷한 프로젝트를 다시 만들게 되었습니다.

  8. stymaar

    Scratch와의 차이점이 궁금한 분들을 위해, about 페이지에 나와 있습니다:

    > Snap! 소개

    > Snap! (이전 이름 BYOB)은 시각적, 드래그 앤 드롭 프로그래밍 언어입니다. Scratch(MIT Media Lab의 Lifelong Kindergarten Group 프로젝트)를 확장해 재구현한 것으로, 나만의 블록을 만들 수 있습니다. 또한 일급[1] 리스트, 일급 프로시저, 일급 컨티뉴에이션[2]을 특징으로 합니다. 이러한 추가 기능 덕분에 고등학생이나 대학생을 위한 진지한 컴퓨터 과학 입문에 적합합니다.

이 날의 다른 글

2026-09-11