로그인하고 있지 않습니다. 편집하면 당신의 IP 주소가 공개적으로 기록됩니다. 계정을 만들고 로그인하면 편집 시 사용자 이름만 보이며, 위키 이용에 여러 가지 편의가 주어집니다.중간의 다른 편집과 충돌하여 이 편집을 되돌릴 수 없습니다. 스팸 방지 검사입니다. 이것을 입력하지 마세요!{{인용문|“한글로 쓰는 난해한 프로그래밍 언어”|Puzzlet Chung}} == 소개 == 엔하위키 미러 개발자인 [[Puzzlet Chung]]이 [[한글]]로 만든 [[난해한 프로그래밍 언어]]. 한글 모든 글자가 코드에 쓰일 수 있는 특성으로 인해, 언어 이름이 동작하는 언어의 코드기도 하다. 한국 웹에서 묘하게 컬트적인 인기를 얻고 있다. [[비펀지]]와 동작이 유사하다. 한글 낱자의 디자인을 살릴 수 있는 프로그래밍 언어라는 목적을 가지고 고안되었다. 코드 공간 안에 커서가 존재해 커서가 위치한 곳에 적혀 있는 명령을 수행하고, 명령에 따라 다시 커서를 움직이는 방식으로 동작한다. 홀소리는 커서가 이동할 방향을 지정하고, 닿소리는 수행할 명령을 지정한다. 받침이 있는 경우 받침은 수행할 명령의 인자로 사용된다. 홀소리, 닿소리만 있는 경우를 포함해 한글이 아닌 문자는 코드 공간 상의 빈 공간으로 취급된다. 아희 인터프리터가 사용하는 저장 공간은 여러 가지가 있는데, 이중 대부분이 스택이고, 큐 하나, 확장기능과 소통하는 통로가 하나 있다. 최근에는 [https://github.com/aheui/rpaheui JIT이 가능한 구현체]가 만들어지기도 했다. 트위터에 멘션을 보내면 코드를 실행시켜주는 [https://twitter.com/aheui 트위터 봇]까지 존재한다. == 문법 == [http://aheui.github.io/specification.ko 아희 스펙] 참고 ===닿소리 === ㅇ: 아무것도 하지 않는다. 여기에 오는 받침은 모두 무시한다. ㅎ: 종료, 선택된 저장 공간에 값이 하나 이상 남아 있으면 ㅁ 명령으로 뽑아낼 수 있는 값을 뽑아내 반환. 저장 공간이 비어 있으면 0 값을 반환한다. 여기에 오는 받침은 모두 무시한다. ㄷㄸㅌㄴㄹ: 순서대로 덧셈, 곱셈, 뺄셈, 나눗셈, 나머지 연산이며, 저장공간에서 두 값을 뽑아낸 다음 둘을 연산한 값을 저장공간에 저장한다. 순서가 있는 연산자의 경우 나중에 꺼낸 값이 연산자의 왼쪽에 온다. 여기에 오는 받침은 모두 무시한다. * '받밞라'는 3 mod 9 이므로 3을 저장하지만 '밞받라'는 9 mod 3 이므로 0을 저장한다. ㅁ: 뽑기, ㅇ 받침이 오면 뽑아낸 값을 10진수로 출력, ㅎ 받침이 오면 뽑아낸 값에 해당하는 코드포인트의 유니코드 문자를 UTF-8로 출력한다. 다른 받침이 오면 뽑아낸 값을 버린다. *밣발따밞발밟받따따따따'''망'''했다 : 48600 *밣발따밞발밟받따따따따'''맣'''했다 : 뷘(48600은 16진법으로 BDD8 이고, U+BDD8 값에 해당되는 문자) ㅂ: 집어넣기. 지금 저장공간이 스택이라면 맨 위에, 큐라면 맨 뒤에 값을 집어넣는다.(push) 통로라면 값을 하나 보낸다. ㅇ 받침이 오면 표준 입력에서 정수 문자열을 받아 이에 해당하는 값을 지금 저장공간에 집어넣고, ㅎ 받침이 오면 표준 입력에서 UTF-8로 유니코드 문자를 받아 이에 해당하는 유니코드 코드포인트를 지금 저장공간에 집어넣고, ㅇ이나 ㅎ이 아닌 받침에 대해서는 각각 상수를 저장공간에 집어넣는다. {|class="wikitable" |입력값 |출력값 |입력값 |출력값 |- |ㄱ,ㄴ,ㅅ |2 |ㄷ,ㅈ,ㅋ |3 |- |ㅁ,ㅂ,ㅊ,ㅌ,ㅍ,ㄲ,ㄳ,ㅆ |4 |ㄹ,ㄵ,ㄶ |5 |- |ㅄ |6 |ㄺ,ㄽ, |7 |- |ㅀ |8 |ㄻ,ㄼ,ㄾ,ㄿ, |9 |} 1은 바로 입력할 수 없고, 3-2(받반타) 나 2/2(반반나) 식으로 구현한다. *방망희: 숫자를 입력받아 출력한다. *밯망희: 문자를 입력받아 유니코드 값을 저장한다. 감을 입력하면 44048(AC10)이 출력된다. *박망희: ㄱ이 2에 해당하므로 2를 출력한다. ㅃ: 중복 명령. 지금 저장공간이 스택이라면 맨 위의 값을 그 값 위에 하나 더 집어넣고, 큐라면 맨 앞의 값을 앞에 하나 더 덧붙인다. *발빠닥망했다: 10 → 발로 5를 집어넣고(5), 빠로 5를 또 넣고(5 5), 다로 두 값을 더하고(ㄱ 무시, 5+5 =10) 망으로 숫자출력. ㅎ으로 종료. ㅍ: 교환 명령. 스택이라면 맨 위 값과 그 바로 아래 값을, 큐라면 맨 앞의 값과 그 바로 뒤 값을 바꾼다. *발박받으로 5 2 3을 순서대로 저장했는데, 파를 넣어서 발박받파라고 하면 5 2 3 저장 이후 3과 2를 바꾸라는 의미이므로 5 3 2가 된다. ===홀소리=== 아희에서는 홀소리로 커서를 이동한다. *ㅏ, ㅓ, ㅗ, ㅜ : 커서를 각각 오른쪽, 왼쪽, 위, 아래로 한 칸 이동 *ㅑ, ㅕ, ㅛ, ㅠ : 커서를 각각 오른쪽, 왼쪽, 위, 아래로 두 칸 이동 *ex) '아뱜이밝다망했다'는 뱜에서 커서를 두칸 오른쪽으로 이동하므로 다른 코드가 없으면 '아밤밝다망했다'와 같게 동작 *ㅡ - 커서가 가로로 왔으면 통과, 세로로 왔으면 전에 있던 자리로 커서를 옮기고 진행 방향도 뒤집는다. *ㅣ - 커서가 세로로 왔으면 통과, 가로로 왔으면 전에 있던 자리로 커서를 옮기고 진행 방향도 뒤집는다. *ㅢ - 커서를 전에 있던 자리로 옮기고 진행 방향도 뒤집는다. *그밖의 다른 홀소리는 기능이 없다. == 예문 == *주의: 여러줄로 되어있는 코드를 한줄에 붙여 그대로 실행하면 작동이 되지 않는다. 그 반대도 마찬가지. {|class="wikitable" |입력 |style="width:120px"|출력 |해설 |- |<pre> 밤밣따빠밣밟따뿌 빠맣파빨받밤뚜뭏 돋밬탕빠맣붏두붇 볻뫃박발뚷투뭏붖 뫃도뫃희멓뭏뭏붘 뫃봌토범더벌뿌뚜 뽑뽀멓멓더벓뻐뚠 뽀덩벐멓뻐덕더벅 </pre> |Hello, world! |아희 스펙에서 제공하는 기본 코드, 개발자인 Puzzlet Chung은 똑같은 출력을 위해 왼쪽의 64자가 아닌, 28자(86바이트)+2바이트로 작성했다는 기록이 있다<ref>[http://golf.shinh.org/l.rb?aheui], 아희로 작성하기 순위표,</ref> (2016년 기준, 최소 크기 코드) |- |발받악에 땀 망희 났어 |15 |네이버 웹툰, <공대생 너무만화> #15, vol.(?)으로 되어있는데, 옆 코드를 실행하면 15가 나온다. <ref>http://comic.naver.com/webtoon/detail.nhn?titleId=678499&no=15</ref> |- |<pre> 밥밖딱밙밗밚발딱뚝 뚝벌뻘벌벌떨떵떡벖 밦탁딱딱밝탕탕빡뭏 뿐덤떡떪떱벍벌범벓 맣밣받땅밣딱밣딱붐 두벍떠벌벌멓뻐터덩 맣밤밭밖딱딱받딱불 붐멓뻑터범덕떠범떠 밣딱밝밝밤당땉땅둣 출력리브레위키희멓 </pre> |리브레 위키 |한국어 출력을 위한 유니코드 참조, 맨 밑줄의 '출력리브레위키'는 '''아무런 영향을 미치지 않는다.''' |- |밯망희 |'리' 입력시 : 47532 |입력한 [[유니코드]]/UTF-8 문자에 해당하는 유니코드/UTF-8 수치값(10진수)을 보여준다. '리'는 유니코드 문자 U+B9AC에 해당되므로<ref>[http://www.unicode.org/charts/PDF/UAC00.pdf Hangul Syllables] The Unicode Standard, Version 9.0 , unicode.org</ref>, 16진수 B9AC를 10진수로 변환하면 47532 |- | <pre>반발따반발따따반불 분떠벌떠떠벌번떠떠 발따반발따따반발뚜 불번떠벌번더떠법떠 따따밥밪다따다반불 뭏더법더떠더벋벋떠 반발따반발따따반불 분떠법떠떠벌번떠떠 발따반발따따반발뚜 뚜벌번더떠더벋범떠 반발따따다반발따불 뭏더더더벅벝떠더벝 아희</pre> |헬로 |이렇게 길게써서 두 문자만 출력도 가능하다. |} == 구현체 == * [http://puzzlet.org/doc/aheui/jsaheui_ko.html 자바스크립트로 된 아희 처리기] * [https://github.com/aheui/caheui Aheui in C] * [https://github.com/aheui/aheui.aheui 아희아희 aheui.aheui] - 아희로 구현한 아희 인터프리터 * [https://github.com/aheui/rpaheui 알파희 - 알파희썬(rpython)으로 만든 엔터프라이즈급 고성능 아희] * [http://yoo2001818.github.io/AheuiChem/ AheuiChem] - 아희 실행 흐름을 시각적으로 보면서 코드를 편집하도록 돕는 개발 도구 == 바깥 링크 == * [http://aheui.github.io 아희 - 한글로 쓰는 난해한 프로그래밍 언어] * [http://aheui.github.io/aheuicon 국제 아희 개발자 대회] {{각주}} {{프로그래밍}} [[분류:난해한 프로그래밍 언어]] 요약: 리브레 위키에서의 모든 기여는 크리에이티브 커먼즈 저작자표시-동일조건변경허락 3.0 라이선스로 배포됩니다(자세한 내용에 대해서는 리브레 위키:저작권 문서를 읽어주세요). 만약 여기에 동의하지 않는다면 문서를 저장하지 말아 주세요. 글이 직접 작성되었거나 호환되는 라이선스인지 확인해주세요. 리그베다 위키, 나무위키, 오리위키, 구스위키, 디시위키 및 CCL 미적용 사이트 등에서 글을 가져오실 때는 본인이 문서의 유일한 기여자여야 하고, 만약 본인이 문서의 유일한 기여자라는 증거가 없다면 그 문서는 불시에 삭제될 수 있습니다. 취소 편집 도움말 (새 창에서 열림) | () [] [[]] {{}} {{{}}} · <!-- --> · [[분류:]] · [[파일:]] · [[미디어:]] · #넘겨주기 [[]] · {{ㅊ|}} · <onlyinclude></onlyinclude> · <includeonly></includeonly> · <noinclude></noinclude> · <br /> · <ref></ref> · {{각주}} · {|class="wikitable" · |- · rowspan=""| · colspan=""| · |} {{lang|}} · {{llang||}} · {{인용문|}} · {{인용문2|}} · {{유튜브|}} · {{다음팟|}} · {{니코|}} · {{토막글}} {{삭제|}} · {{특정판삭제|}}(이유를 적지 않을 경우 기각될 가능성이 높습니다. 반드시 이유를 적어주세요.) {{#expr:}} · {{#if:}} · {{#ifeq:}} · {{#iferror:}} · {{#ifexist:}} · {{#switch:}} · {{#time:}} · {{#timel:}} · {{#titleparts:}} __NOTOC__ · __FORCETOC__ · __TOC__ · {{PAGENAME}} · {{SITENAME}} · {{localurl:}} · {{fullurl:}} · {{ns:}} –(대시) ‘’(작은따옴표) “”(큰따옴표) ·(가운뎃점) …(말줄임표) ‽(물음느낌표) 〈〉(홑화살괄호) 《》(겹화살괄호) ± − × ÷ ≈ ≠ ∓ ≤ ≥ ∞ ¬ ¹ ² ³ ⁿ ¼ ½ ¾ § € £ ₩ ¥ ¢ † ‡ • ← → ↔ ‰ °C µ(마이크로) Å °(도) ′(분) ″(초) Α α Β β Γ γ Δ δ Ε ε Ζ ζ Η η Θ θ Ι ι Κ κ Λ λ Μ μ(뮤) Ν ν Ξ ξ Ο ο Π π Ρ ρ Σ σ ς Τ τ Υ υ Φ φ Χ χ Ψ ψ Ω ω · Ά ά Έ έ Ή ή Ί ί Ό ό Ύ ύ Ώ ώ · Ϊ ϊ Ϋ ϋ · ΐ ΰ Æ æ Đ(D with stroke) đ Ð(eth) ð ı Ł ł Ø ø Œ œ ß Þ þ · Á á Ć ć É é Í í Ĺ ĺ Ḿ ḿ Ń ń Ó ó Ŕ ŕ Ś ś Ú ú Ý ý Ź ź · À à È è Ì ì Ǹ ǹ Ò ò Ù ù · İ Ż ż ·  â Ĉ ĉ Ê ê Ĝ ĝ Ĥ ĥ Î î Ĵ ĵ Ô ô Ŝ ŝ Û û · Ä ä Ë ë Ï ï Ö ö Ü ü Ÿ ÿ · ǘ ǜ ǚ ǖ · caron/háček: Ǎ ǎ Č č Ď ď Ě ě Ǐ ǐ Ľ ľ Ň ň Ǒ ǒ Ř ř Š š Ť ť Ǔ ǔ Ž ž · breve: Ă ă Ğ ğ Ŏ ŏ Ŭ ŭ · Ā ā Ē ē Ī ī Ō ō Ū ū · à ã Ñ ñ Õ õ · Å å Ů ů · Ą ą Ę ę · Ç ç Ş ş Ţ ţ · Ő ő Ű ű · Ș ș Ț ț 이 문서에서 사용한 틀: 틀:Skin (원본 보기) (준보호됨)틀:각주 (원본 보기) (준보호됨)틀:둘러보기 상자 (원본 보기) (보호됨)틀:둘러보기 상자/중첩 (원본 보기) (준보호됨)틀:둘러보기 상자/핵심 (원본 보기) (보호됨)틀:인용문 (원본 보기) (준보호됨)틀:틀바 (원본 보기) (준보호됨)틀:프로그래밍 (편집)