스냅! (프로그래밍 언어)
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.
1. 개요
스냅!(Snap!)은 3개의 크기 조절 가능한 열과 5개의 영역으로 구성된 사용자 인터페이스를 가진 시각적 프로그래밍 언어이다. 스크래치와 유사하게 블록을 조립하여 코드를 작성하며, 익명 함수, 일급 객체 리스트, 일급 스프라이트, 하이퍼블록, 메타 프로그래밍 등의 기능을 제공한다. 파이썬, 자바스크립트, C 등 텍스트 기반 언어로 코드 생성이 가능하며, 앨런조 처치의 이름을 딴 마스코트 알론조를 사용한다. 스냅!은 GNU 아페로 일반 공중 사용 허가서(AGPL)를 따르며, 윈도우, iOS, macOS, 리눅스 등 다양한 플랫폼의 웹 브라우저에서 실행된다.
더 읽어볼만한 페이지
- 스몰토크 프로그래밍 언어 계열 - 스크래치 (프로그래밍 언어)
스크래치는 MIT 미디어 연구소에서 개발한 어린이 및 입문자를 위한 시각적 프로그래밍 언어이며, 블록 기반 방식을 통해 애니메이션, 게임, 스토리 등을 만들 수 있도록 설계되었고, 코드 공유 및 재사용을 장려하며 다양한 교육 환경에서 활용된다. - 스몰토크 프로그래밍 언어 계열 - 스퀵
앨런 케이와 댄 잉갈스 등이 개발한 스몰토크 기반 프로그래밍 환경인 스퀵은 다이나북 프로젝트의 이상 구현, 자유로운 이식성, 고기능 멀티미디어 처리를 목표로 개발되었으며, 다양한 사용자 인터페이스 프레임워크와 교육용 환경 eToys를 제공하고 MIT 및 아파치 라이선스로 자유롭게 사용 가능하다. - 비디오 게임 IDE - 언리얼 엔진
언리얼 엔진은 에픽게임즈에서 개발한 게임 엔진으로, 게임 개발을 넘어 영화, 건축 등 다양한 분야에서 활용되며, C++ 및 블루프린트 비주얼 스크립팅 시스템을 통해 게임 로직을 구현하고, 최근에는 Verse라는 새로운 스크립트 언어가 도입되었다. - 비디오 게임 IDE - 유니티 (게임 엔진)
유니티는 2005년 출시된 게임 개발 엔진으로, 2D 및 3D 게임 제작, 다양한 플랫폼 지원, C# 스크립팅, 에셋 스토어 등을 제공하며 게임 외 분야에서도 활용된다. - 소프트웨어 개발 공동체 - 마이크로소프트 개발자 네트워크
마이크로소프트 개발자 네트워크(MSDN)는 마이크로소프트가 제공했던 개발자 커뮤니티 사이트 및 유료 구독 서비스였으며, 웹사이트, 라이브러리, 포럼 등을 제공하고 API 문서, 샘플 코드, 기술 자료를 제공했으나, 2020년과 2022년에 일부 서비스가 종료되었다. - 소프트웨어 개발 공동체 - 안드로이드 소프트웨어 개발
안드로이드 소프트웨어 개발은 구글 안드로이드 운영체제용 앱을 개발하는 과정으로, SDK, NDK 등의 도구를 사용하며, USB 하드웨어 연동 지원, 에뮬레이터 제공, 개발자 챌린지 등을 통해 혁신적인 앱 개발을 장려한다.
스냅! (프로그래밍 언어) - [IT 관련 정보]에 관한 문서 | |
---|---|
기본 정보 | |
이름 | 스냅! (프로그래밍 언어) |
원래 이름 | Snap! (programming language) |
종류 | 블록 기반 프로그래밍 언어 |
![]() | |
디자인 년도 | 2011년 |
디자이너 | 브라이언 하비와 옌스 묀히 |
개발자 | 옌스 묀히 |
최신 릴리스 버전 | 9.2.17 |
최신 릴리스 날짜 | 2024년 4월 24일 |
타이핑 | 동적 |
구현 | Morphic.js (자바스크립트로 작성됨) |
영향을 받은 언어 | 스크래치 스킴 로고 스몰토크 APL |
영향을 준 언어 | BeetleBlocks NetsBlox Dragme IDE 터틀스티치 |
운영체제 | 크로스 플랫폼 |
라이선스 | AGPL |
웹사이트 | snap.berkeley.edu |
파일 확장자 | .xml (Snap!) |
2. 사용자 인터페이스
스냅!(Snap!)의 사용자 인터페이스는 크게 세 부분으로 나뉜다. 왼쪽에는 블록 팔레트, 가운데에는 스크립트 영역, 오른쪽에는 스테이지 영역이 있다. 이러한 구성은 사용자가 블록을 쉽게 찾고, 스크립트를 작성하며, 그 결과를 즉시 확인할 수 있도록 돕는다.[1]
중앙 영역에는 선택한 스프라이트에 연결된 스크립트, 의상/배경, 또는 소리를 표시할 수 있으며, 이는 상단의 탭을 이용해 전환할 수 있다.
2. 1. 화면 구성
스냅!(Snap!)의 화면은 3개의 크기 조절 가능한 열로 구성되어 있으며, 5개의 영역을 포함하고 있다.- 블록 그룹 선택기 (왼쪽 열 상단)
- 블록 팔레트 (왼쪽 열)
- 주 영역 (가운데 열)
- 스테이지 영역 (오른쪽 열 상단)
- 스프라이트 선택기 (스프라이트 우리라고도 함) (스테이지 영역 아래)[1]
대화형으로 크기 조절이 가능한 스테이지 영역에는 스크립트 영역에서 실행되는 스크립트의 그래픽 결과 및/또는 모든 팔레트에서 개별 블록을 더블 클릭하여 상호 작용하는 결과가 표시된다. 개별 블록은 팔레트에서 스크립트 영역으로 드래그하여 선택한 스프라이트에 연결할 수 있다.
스냅!(Snap!)의 블록은 동작, 모양, 소리, 펜, 제어, 감지, 연산자 및 변수의 8개 그룹으로 나뉜다. 블록 그룹 선택기에 이러한 그룹의 레이아웃은 다음과 같다.
카테고리 | 비고 | 카테고리 | 비고 | ||
---|---|---|---|---|---|
bgcolor="#4A6CD4"| | 동작 | 스프라이트 이동 및 회전 | bgcolor="#E1A91A" | | 제어 | If 문, 이벤트, 반복 구조, 장면, OOP, 메타프로그래밍 |
bgcolor="#8A55D7"| | 모양 | 가시성 제어, 의상 및 출력 | bgcolor="#2CA5E2"| | 감지 | 모든 스프라이트 히트 감지 및 사용자 입력 |
bgcolor="#BB42C3"| | 소리 | 오디오 파일 재생 및 프로그래밍 가능한 시퀀스 오디오 | bgcolor="#5CB712"| | 연산자 | 수학, 텍스트, 그리고 부울 연산자; 람다 |
bgcolor="#0E9A6C"| | 펜 | 스테이지에 쓰기, 그리기, 또는 스탬프 찍기 | bgcolor="#C88330"| | 변수 | 변수, 목록, 목록의 목록, 블록 목록 등 포함 |
중앙 영역은 선택한 스프라이트에 연결된 스크립트, 의상/배경, 또는 소리를 표시할 수 있다. 해당 영역에 표시되는 내용은 선택한 탭에 따라 다르다.
2. 2. 블록 그룹
스냅!(Snap!)의 블록은 동작, 모양, 소리, 펜, 제어, 감지, 연산자, 변수의 8개 그룹으로 나뉜다. 각 블록 그룹의 기능과 특징은 아래 표와 같다.블록 그룹 | 기능 |
---|---|
동작 | 스프라이트 이동 및 회전 |
모양 | 가시성 제어, 의상 및 출력 |
소리 | 오디오 파일 재생 및 프로그래밍 가능한 시퀀스 오디오 |
펜 | 스테이지에 쓰기, 그리기, 또는 스탬프 찍기 |
제어 | If 문, 이벤트, 반복 구조, 장면, OOP, 메타프로그래밍 |
감지 | 모든 스프라이트 히트 감지 및 사용자 입력 |
연산자 | 수학, 텍스트, 그리고 부울 연산자; 람다 |
변수 | 변수, 목록, 목록의 목록, 블록 목록 등 포함 |
스크래치와 비교했을 때 스냅!(Snap!)은 다음과 같은 주요 기능들을 제공한다:[1]
3. 특징
3. 1. 고급 기능
''Snap!''이 Scratch는 제공하지 않는 고급 기능은 다음과 같다.3. 2. 코드 생성
스냅!은 파이썬, JavaScript, C 등과 같은 텍스트 언어로 코딩할 수 있는 기능을 제공한다.[1]
3. 3. 메타 프로그래밍
메타 프로그래밍, 리플렉션 및 매크로 기능을 제공한다.[1]
4. 마스코트
스냅!의 마스코트인 알론조는 앨런조 처치의 이름을 따서 지어졌다. 앨런조 처치는 람다로 표현되는 보편적인 함수가 다양한 조합으로 자체를 호출하여 모든 함수 동작을 생성할 수 있는 계산 모델을 발명했다. 이 마스코트는 스크래치 팀의 허가를 받아 스크래치의 고보(Gobo)를 수정하여 제작되었다. 앨런조 처치의 연구를 람다 대수라고 부르기 때문에, 마스코트의 머리카락은 그리스 문자 람다 모양을 하고 있다.
5. 특수 목적 블록 (라이브러리)
스냅!(프로그래밍 언어) 라이브러리에서는 확장된 블록 집합을 찾을 수 있다. 예를 들어, '스트림' 라이브러리는 '스트림', '스트림 보기', '스트림의 꼬리', '스트림에 ( ) 적용' 블록과 같은 특수 블록을 사용하여 완전하고 무한한 피보나치 수열을 만들 수 있게 해준다.
다른 특수 목적을 위한 라이브러리로는 '리스트 유틸리티', '단어, 문장', '반복', '애니메이션', '빈도 분포', '오디오 계산', '막대 차트', '세계 지도', '색상 및 크레용', '문자열 및 여러 줄 입력', '병렬화' 라이브러리 등이 있다.
6. 한계
스냅! 소프트웨어 자체에는 제약이 거의 없지만, 몇 가지 제한 사항이 있다.
7. 역사
웹 기반의 스냅!(Snap!)과 이전의 데스크톱 기반 BYOB는 모두 옌스 뫼니히(Jens Mönig)가 윈도우, OS X 및 리눅스[4]용으로 개발했으며, 캘리포니아 대학교 버클리의 브라이언 하비[5]가 디자인 아이디어와 문서를 제공하여 비전공 학생들을 위한 컴퓨터 과학 (CS) 입문 과정인 "컴퓨팅의 아름다움과 즐거움"을 가르치는 데 사용되었다.[6] 옌스는 ''Snap!''을 만들기 전에 스크래치 팀의 일원이었다.[7] BYOB는 여전히 다운로드할 수 있다.
8. 라이선스
스냅!의 소스 코드는 GNU 아페로 일반 공중 사용 허가서(AGPL)를 따르며, GitHub에 호스팅되어 있다.[8] 이전의 데스크톱 기반 3.x 버전의 코드는 비상업적 용도로만 수정할 수 있는 라이선스로 제공되며, UC 버클리 웹사이트[9] 또는 CNET의 download.com, TechTracker 다운로드 페이지에서 내려받을 수 있다.[10][11]
9. 플랫폼
윈도우, iOS, macOS 및 리눅스 장치의 주요 웹 브라우저에서 실행된다.
지원되는 웹 브라우저는 다음과 같다.
- 파이어폭스
- 크롬 (및 대부분의 Chromium 기반 브라우저)
- 오페라 GX
- 마이크로소프트 엣지
- 사파리
10. 구현
스냅!(Snap!)은 Morphic.js[12]를 기반으로 구축되었으며, HTML5 캔버스 응용 프로그래밍 인터페이스(API)를 사용하는 등 기술적인 구현 방식을 가지고 있다. Morphic.js는 스냅! 자체와 '순수한' JavaScript 사이의 '중간 계층' 역할을 하는 Morphic GUI이다.
스냅!(Snap!)에서 보이는 모든 것은 모프(morph) 자체이다. 모든 버튼, 슬라이더, 대화 상자, 메뉴, 입력 필드, 텍스트 렌더링, 깜박이는 커서 등은 HTML DOM 요소를 사용하는 대신 morphic.js로 생성된다. 스냅!(Snap!)은 스프라이트의 모양을 캐시하므로 마우스가 경계 상자 위로 이동할 때마다 스프라이트를 새 캔버스 요소에 다시 그릴 필요가 없다. 그러나 블록은 캐시하지 않는다. 대신 모픽 "구멍" 메커니즘을 통해 C자형 블록의 내부를 관리한다.
모든 사용자 상호 작용은 이벤트에 의해 트리거되며, 이벤트는 루트 요소 "the world"에서 하위 모프로 전달된다. 모프를 드롭하면 새로운 '소유자'( '상위') 모프에 포함된다. Morphic에서 애니메이션을 실행하는 방법은 월드(World)의 애니메이션 대기열에 추가하여 월드에 등록하는 것이다. 월드는 Morphic 스테핑 메커니즘과 독립적으로 각 등록된 애니메이션을 디스플레이 주기당 한 번씩 단계를 밟는다.
11. 평가
스냅!(Snap!)은 (Logo Foundation)의 인정을 받았으며,[13] 프로그래머를 위한 온라인 잡지에서 리뷰되었다.[14] 2014년 12월 기준으로 뉴욕시(NYC) 고등학교 100곳에서 캘리포니아 대학교 버클리(University of California, Berkeley)의 “컴퓨팅의 아름다움과 즐거움(Beauty and Joy of Computing)”을 스냅!(Snap!)을 사용하여 새로운 AP 컴퓨터 과학 원리 과정으로 도입했다.[15] 옌스(Jens)와 브라이언(Brian)은 스냅!(Snap!)을 기반으로 한 평생 업적을 인정받아 2020년 국립 기술 리더십 정상 회담(NTLS) 교육 리더십 상을 수상했다.
참조
[1]
웹사이트
jmoenig/Snap
https://github.com/j[...]
2024-05-17
[2]
웹사이트
morphic.js
https://github.com/j[...]
2023-06-07
[3]
웹사이트
morphic.js
https://github.com/j[...]
2023-06-07
[4]
웹사이트
Scratch - Imagine, Program, Share
http://scratch.mit.e[...]
2017-05-21
[5]
웹사이트
HomePage for Brian Harvey (bh@cs.Berkeley.EDU)
https://people.eecs.[...]
2019-01-19
[6]
웹사이트
UC Berkeley EECS - CS10 : The Beauty and Joy of Computing - Fall 2011
http://inst.eecs.ber[...]
2017-05-21
[7]
웹사이트
Relationship With the Scratch Team - Politics - Snap! Forums
https://forum.snap.b[...]
[8]
웹사이트
jmoenig/Snap
https://github.com/j[...]
2017-05-21
[9]
웹사이트
Snap! (Build Your Own Blocks) 4.0
http://snap.berkeley[...]
2017-05-21
[10]
웹사이트
BYOB for Windows
http://download.cnet[...]
CNET Download.com and CNET TechTracker's
[11]
웹사이트
BYOB for Mac
http://download.cnet[...]
CNET's Download.com and TechTracker
[12]
웹사이트
morphic.js
https://github.com/j[...]
2023-06-07
[13]
웹사이트
Logo History
http://el.media.mit.[...]
2017-05-21
[14]
웹사이트
Visual Language Snap! Version 4.0 Released
http://www.i-program[...]
2017-05-21
[15]
웹사이트
FACT SHEET: New Commitments to Support Computer Science Education
https://obamawhiteho[...]
2019-01-20
[16]
웹인용
jmoenig/Snap
https://github.com/j[...]
2022-06-25
본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.
문의하기 : help@durumis.com