동현랭TM DOI10.5281/zenodo.23689480

World's Most Quirky Esoteric Language:
동현랭TM

지금은 미리보기 화면이라 코드가 실행되지 않는다. 아이폰의 카카오톡·파일 앱 미리보기는 JavaScript를 실행하지 않기 때문이다. 코드와 예제 명세는 그대로 볼 수 있다. 실행하려면 웹 주소로 열거나, PC·안드로이드 브라우저에서 이 파일을 연다.
도오오옹 = 3꽥꽥 = 입력뿡뿡 = 출력신중동 = 조건신중동역 = 이동오겡끼데스까 = 즉시 중단뚱띠 = 나누기또치 = 나머지뭉치 = 음수면포동이 = 소수 출력
대기 중 0걸음
예제 명세Hello, World!

코드 생성기로 만든 'Hello, World!' 출력 프로그램이다. 글자마다 유니코드 값을 만들어 뿡뿡뿡으로 출력한다.

입력
없음
출력
Hello, World!
줄코드의미
1나는 동현이냐?프로그램 시작
2뿡뿡뿡 도오오오오오오오옹 도오오오오오오오오옹'H' = 72 = 8 × 9 — 12 이하 두 수의 곱이면 한 줄로 끝난다
3동현아 도옹'e' = 101은 곱으로 안 나와 동현에 10진수로 쌓는다: 동현 = 1
4동현아 동현 도오오오오오오오오오옹동현 = 동현 × 10 → 10
5동현아 동현 도오오오오오오오오오옹동현 = 동현 × 10 → 100
6동현아 동현도옹동현 = 동현 + 1 → 101
7뿡뿡뿡 동현동현(101 = 'e')을 문자로 출력
……총 38줄

이후 글자도 같은 두 방식(곱 한 줄, 또는 10진수 쌓기)으로 이어진다. 아래 코드 생성기에서 다른 글로 직접 만들어 볼 수 있다.

아스키 변환기
72 105 33

3글자

꽥꽥 입력공백·줄바꿈으로 구분, 다 쓰면 0
뿡뿡 출력
실행하면 여기서 뿡뿡 뀐다.
동현이들 (변수)
아직 아무 동현이도 없다.

문법

원자(原子)는 도옹·ㅠ·동현·꽥꽥처럼 값 하나를 나타낸다. 원자를 붙여 쓰면 더하고, 띄어 쓰면 곱한다. 아래 순서대로 읽으면 동현랭의 모든 문법을 익힐 수 있다. 예제마다 '편집기에서 실행'을 누르면 플레이그라운드에서 바로 돌려 볼 수 있다.

1프로그램의 뼈대

모든 동현랭 프로그램은 같은 틀 안에 들어간다. 줄 번호를 세는 법을 알아 두면 신중동역(이동)을 쓸 때 헷갈리지 않는다.

  • 첫 줄은 나는 동현이냐?, 마지막 줄은 동현이구나 — 둘 중 하나라도 틀리면 실행하지 않는다.
  • 한 줄에 문장 하나 — ~로 나누면 한 줄에 여러 문장을 쓸 수 있다.
  • ㅋㅋ 뒤는 주석 — 줄 끝까지 무시한다. 설명을 적어 두는 자리다.
  • 줄 번호 = 문장 번호 — 나는 동현이냐?가 1번이다. ~로 나눈 문장, 빈 줄, 주석만 있는 줄도 번호를 하나씩 차지한다. 첫 줄 앞의 빈 줄만 세지 않는다.
실제 줄내용문장 번호
1나는 동현이냐?1
2ㅋㅋ 3을 출력하고 끝낸다2 (주석만 있어도 센다)
3(빈 줄)3
4동현아 도오오옹 ~ 뿡뿡 동현4, 5 (~로 나눈 두 문장)
5동현이구나6
뼈대와 줄 번호
  1. 나는 동현이냐?
  2. ㅋㅋ 3을 출력하고 끝낸다
  3. 동현아 도오오옹 ~ 뿡뿡 동현
  4. 동현이구나
뿡뿡 출력 정상 종료 · 종료 코드 0
3

2원자(atom)란?

식을 이루는 가장 작은 값 하나다. 동현랭의 원자는 네 가지다.

원자값예
도(오…)옹오의 개수 + 1도옹 = 1, 도오오옹 = 3
ㅠ−1동현ㅠ = 동현 − 1
동…현그 번호의 변수 값 (동의 개수가 번호)동동현 = 2번 변수
꽥꽥입력에서 읽은 정수 하나동현아 꽥꽥
  • 붙여 쓰면 더한다 — 도오옹도옹 = 2 + 1 = 3, 동현ㅠ = 동현 − 1
  • 띄어 쓰면 곱한다 — 도오옹 도오오옹 = 2 × 3 = 6
  • 붙인 덩어리를 먼저 더하고, 덩어리끼리 곱한다 — 도오옹도옹 도오옹 = (2 + 1) × 2 = 6
  • 뚱띠·또치는 원자가 아니다 — 덩어리 사이에 넣는 나눗셈 기호다. 도오오오오오오옹 뚱띠 도오옹 = 7 ÷ 2의 몫 3

3식의 계산 순서

식은 두 단계로 계산한다. 덧셈은 붙인 덩어리 안에서만 일어나고, 덩어리 사이는 곱셈·나눗셈이다. 괄호가 없으니 이 순서가 괄호 역할을 한다.

  1. 1단계 — 덩어리 만들기 붙어 있는 원자를 모두 더해 덩어리(항) 하나로 만든다.
  2. 2단계 — 덩어리 잇기 덩어리를 왼쪽부터 차례로 곱한다. 중간에 뚱띠가 있으면 나누고(몫), 또치가 있으면 나머지를 낸다.
식계산값
도오옹도옹 도오옹(2 + 1) × 26
ㅠ 도오오옹(−1) × 3 — 음수 만들기-3
도오오옹ㅠ 도오옹(3 − 1) × 24
도오오오오오오옹 뚱띠 도오옹7 ÷ 2의 몫3
도오오오오오오옹 또치 도오옹7 ÷ 2의 나머지1
ㅠ 도오오오오오오옹 뚱띠 도오옹−7 ÷ 2 → 0 쪽으로 버려 −3-3
도오옹 도오오옹 뚱띠 도오오오옹(2 × 3) ÷ 4 → 11
도오옹 뚱띠 도오오오옹 도오오옹(2 ÷ 4) × 3 → 0 × 3 = 00
도오오오오오오오오오옹 도오오오오오오오오오옹10 × 10 — 큰 수는 곱으로100
(빈 식)빈 식은 00
  • 순서가 결과를 바꾼다 — 위 표의 7·8번째 줄처럼 같은 수라도 나누는 위치에 따라 1과 0으로 갈린다. 나눗셈은 되도록 마지막에 두라.
  • 몫은 0 쪽으로 버린다 — C·자바스크립트와 같다. −7 뚱띠 2 = −3, −7 또치 2 = −1.
  • 곱 두 개를 더하려면 변수에 나눠 담는다 — 3×4 + 5×6 같은 '곱의 합'은 한 식에 쓸 수 없다. 곱을 각각 변수에 담은 뒤 붙여 쓰면 더해진다(아래 예제).
  • 큰 수는 곱으로, 소수(素數)는 곱 + 덧셈 두 줄로 — 97은 곱으로 안 되니 동현아 도오오오오오오오옹 도오오오오오오오오오오오옹(8 × 12 = 96) 다음 줄에 동현아 동현도옹(+1). 코드 생성기가 이 일을 대신 해 준다.
  • 수의 범위 — ±9,007,199,254,740,991(약 ±9007조)까지. 넘으면 오류가 난다.
3×4 + 5×6 = 42 계산하기
  1. 나는 동현이냐?
  2. 동현아 도오오옹 도오오오옹 ㅋㅋ 동현 = 3 × 4 = 12
  3. 동동현아 도오오오오옹 도오오오오오옹 ㅋㅋ 동동현 = 5 × 6 = 30
  4. 뿡뿡 동현동동현 ㅋㅋ 붙여 쓰면 덧셈: 12 + 30
  5. 동현이구나
뿡뿡 출력 정상 종료 · 종료 코드 0
42

4변수와 대입

변수는 이름 대신 번호로 부른다. 동의 개수가 번호다. 동현은 1번, 동동현은 2번, 동동동현은 3번 변수다.

  • 대입은 동…현아 <식> — 변수 이름에 아를 붙여 부르면서 값을 준다. 동현아 도오오옹 → 동현 = 3
  • 처음 값은 모두 0 — 대입하지 않은 변수를 써도 오류가 아니라 0이다.
  • 오른쪽을 먼저 계산한다 — 동현아 동현도옹은 지금 동현에 1을 더해 다시 동현에 넣는다. 반복문의 카운터가 이렇게 움직인다.
  • 개수 제한이 없다 — 동을 열 번 쓰면 10번 변수다. 플레이그라운드의 '동현이들 (변수)' 칸에서 값을 바로 볼 수 있다.
하고 싶은 것동현랭
1 더하기동현아 동현도옹
1 빼기동현아 동현ㅠ
2배동현아 동현 도오옹
부호 바꾸기동현아 동현 ㅠ
복사동동현아 동현
두 변수 더하기동동동현아 동현동동현
0으로 지우기동현아
반으로 (몫)동현아 동현 뚱띠 도오옹
두 변수의 값 바꾸기 (임시 변수 사용)
  1. 나는 동현이냐?
  2. 동현아 도오오옹 ㅋㅋ 동현 = 3
  3. 동동현아 도오오오오오오옹 ㅋㅋ 동동현 = 7
  4. 동동동현아 동현 ㅋㅋ 임시로 3번에 복사
  5. 동현아 동동현
  6. 동동현아 동동동현
  7. 뿡뿡 동현 ~ 뿡뿡뿡 도오옹 도오오오옹 도오오오옹 ~ 뿡뿡 동동현
  8. 동현이구나
뿡뿡 출력 정상 종료 · 종료 코드 0
7 3

5입력과 출력

입력은 꽥꽥 한 가지, 출력은 네 가지다. 출력 명령은 자동으로 띄어쓰기나 줄바꿈을 넣지 않는다.

입력 — 꽥꽥

  • 식 안에 쓰는 원자다 — 계산될 때마다 입력 칸에서 정수를 하나씩 꺼낸다. 동현아 꽥꽥
  • 공백·줄바꿈으로 구분한다 — 입력 칸에 12 34를 넣으면 첫 꽥꽥은 12, 다음은 34다.
  • 다 쓰면 0 — 더 꺼낼 수가 없으면 오류 대신 0을 준다. "0이 나오면 끝" 같은 반복에 쓴다.
  • 한 식에 여러 번 쓸 수 있다 — 꽥꽥꽥꽥는 두 입력의 합, 꽥꽥 꽥꽥는 두 입력의 곱이다.
  • 정수만 받는다 — 3.5나 abc를 넣으면 오류가 난다. 소수는 1000배 해서 넣는다.

출력 — 뿡뿡 · 뿡뿡뿡 · 포동이

명령하는 일예출력
뿡뿡 <식>정수로 출력뿡뿡 도오옹 도오오옹6
뿡뿡뿡 <식>그 번호의 유니코드 문자 출력뿡뿡뿡 도오오옹 도오오오옹 도오오오오오옹H
뿡뿡뿡식 없이 쓰면 줄바꿈뿡뿡뿡↵
포동이 <식>1000으로 나눠 소수 셋째 자리까지 (v1.2)포동이 도오오옹 도오오오옹 도오오오오옹0.072

자주 쓰는 문자 코드

아래 식을 뿡뿡뿡 뒤에 그대로 쓰면 된다. 한글처럼 곱으로 안 되는 글자는 코드 생성기가 만들어 준다.

문자코드식
␣ 공백32도오옹 도오오오옹 도오오오옹
! 느낌표33도오오옹 도오오오오오오오오오오옹
, 쉼표44도오오오옹 도오오오오오오오오오오옹
. 마침표46도오옹 도오오오오오오오오오오오옹도오오오오오오오오오오옹
0 숫자 048도오오옹 도오오오옹 도오오오옹
? 물음표63도오오옹 도오오옹 도오오오오오오옹
A 대문자 A65도오오오오옹 도오오오오오오오오오오오옹도옹
H 대문자 H72도오오옹 도오오오옹 도오오오오오옹
i 소문자 i105도오오옹 도오오오오옹 도오오오오오오옹
두 수를 받아 합 출력하기
  1. 나는 동현이냐?
  2. 동현아 꽥꽥꽥꽥 ㅋㅋ 두 입력의 합
  3. 뿡뿡뿡 도오오옹 도오오오옹 도오오오오오옹 ㅋㅋ H
  4. 뿡뿡뿡 도오오옹 도오오오오옹 도오오오오오오옹 ㅋㅋ i
  5. 뿡뿡뿡 도오오옹 도오오오오오오오오오오옹 ㅋㅋ !
  6. 뿡뿡뿡 도오옹 도오오오옹 도오오오옹 ㅋㅋ 공백
  7. 뿡뿡 동현
  8. 뿡뿡뿡 ㅋㅋ 줄바꿈
  9. 동현이구나
꽥꽥 입력 12 30 · 뿡뿡 출력 정상 종료 · 종료 코드 0
Hi! 42

6조건과 이동

동현랭에는 if·for·while이 없다. 대신 "조건이 맞으면 한 문장 실행"과 "몇 번 줄로 이동" 두 가지를 조합해 모든 흐름을 만든다.

명령언제 실행하나예
신중동 <식>? <명령>식이 0일 때만 명령을 실행신중동 동현? 뿡뿡 도옹
뭉치 <식>? <명령>식이 음수일 때만 명령을 실행 (v1.2)뭉치 동현? 뿡뿡 도옹
신중동역 <식>식 값 번호의 문장으로 이동신중동역 도오오오옹
  • ? 뒤에는 문장 하나 — 출력, 대입, 이동, 오겡끼데스까, 심지어 또 다른 신중동도 올 수 있다.
  • 조건이 틀리면 다음 줄로 — 실행하지 않고 그냥 지나간다.
  • 이동할 곳은 문장 번호 — 1번 틀(뼈대)에서 센 번호다. 번호도 식이라 도오옹 도오오옹(6)처럼 곱으로 쓸 수 있다.

비교하는 법

뺄셈 기호가 없으니 b에 −1을 곱해 두고(동동동현아 동동현 ㅠ) a와 붙여 쓰면 a − b가 된다. 이 값이 0인지, 음수인지로 모든 비교를 한다. 아래에서 a = 동현, b = 동동현, −b = 동동동현이다.

비교동현랭원리
a = b신중동 동현동동동현? …a − b = 0
a < b뭉치 동현동동동현? …a − b < 0
a ≤ b뭉치 동현동동동현ㅠ? …a − b − 1 < 0
a > b뭉치 동동현동동동동현? …b − a < 0 (−a를 4번 변수에)
a가 짝수신중동 동현 또치 도오옹? …a ÷ 2의 나머지 = 0
a ≠ b같을 때 건너뛰기아래 '만약…아니면' 틀 참고
A 그리고 B신중동 A? 신중동 B? …조건을 겹쳐 쓴다
A 또는 B두 줄로신중동 A? 신중동역 n 다음 줄에 신중동 B? 신중동역 n

흐름의 기본 틀

만들고 싶은 것동현랭 틀
만약 조건이면 A, 아니면 B
  1. 신중동 <조건>? 신중동역 <A 줄>
  2. B 문장들 …
  3. 신중동역 <끝 줄>
  4. A 문장들 … (A 줄)
  5. (끝 줄) 다음 할 일
n번 반복
  1. 동현아 <n>
  2. (시작 줄) 신중동 동현? 신중동역 <끝 줄>
  3. 반복할 문장들 …
  4. 동현아 동현ㅠ
  5. 신중동역 <시작 줄>
  6. (끝 줄) 다음 할 일
입력이 0일 때까지 반복
  1. (시작 줄) 동현아 꽥꽥
  2. 신중동 동현? 신중동역 <끝 줄>
  3. 처리할 문장들 …
  4. 신중동역 <시작 줄>
1부터 6까지 짝수엔 *, 홀수엔 - 붙이기 (반복 + 만약…아니면)
  1. 나는 동현이냐?
  2. 동현아 도옹 ㅋㅋ 2: i = 1
  3. 뿡뿡 동현 ㅋㅋ 3: 반복 시작 — i 출력
  4. 신중동 동현 또치 도오옹? 신중동역 도오오오오오오오옹 ㅋㅋ 4: 짝수면 8번 줄로
  5. 뿡뿡뿡 도오옹 도오오오옹 도오오오옹 ㅋㅋ 5: (홀수) 공백
  6. 뿡뿡뿡 도오오옹 도오오옹 도오오오오옹 ㅋㅋ 6: '-' (3 × 3 × 5 = 45)
  7. 신중동역 도오오오오오오오오오옹 ㅋㅋ 7: 짝수 칸을 건너뛰어 10번 줄로
  8. 뿡뿡뿡 도오옹 도오오오옹 도오오오옹 ㅋㅋ 8: (짝수) 공백
  9. 뿡뿡뿡 도오오오오오옹 도오오오오오오옹 ㅋㅋ 9: '*' (6 × 7 = 42)
  10. 뿡뿡뿡 ㅋㅋ 10: 줄바꿈
  11. 신중동 동현ㅠㅠㅠㅠㅠㅠ? 오겡끼데스까 ㅋㅋ 11: i − 6 = 0이면 끝
  12. 동현아 동현도옹 ㅋㅋ 12: i + 1
  13. 신중동역 도오오옹 ㅋㅋ 13: 3번 줄로 돌아간다
  14. 동현이구나
뿡뿡 출력 오겡끼데스까로 중단 · 종료 코드 0
1 -
2 *
3 -
4 *
5 -
6 *

4번 줄이 '만약', 5~7번이 '아니면', 7번의 이동이 짝수 칸을 건너뛰는 다리다. 11~13번은 반복문의 꼬리다.

7끝내는 세 가지 방법

프로그램은 셋 중 하나로 끝난다. 플레이그라운드의 상태 줄에 어떻게 끝났는지와 종료 코드가 나온다.

방법언제종료 코드화면
동현이구나마지막 줄에 닿았을 때0동현이구나 — 정상 종료
오겡끼데스까 [<식>]어디서든 이 문장을 만나면 즉시식의 값 (없으면 0)…와타시와 겡끼데스.
범위 밖으로 이동신중동역의 번호가 0 이하이거나 마지막 줄보다 클 때0정상 종료로 표시
  • 오겡끼데스까는 가장 강력하다 — 반복문 한가운데서도, 신중동의 ? 뒤에서도 바로 끝낸다. 신중동 동현? 오겡끼데스까는 "동현이 0이면 끝"이라는 관용구다.
  • 플레이그라운드의 오겡끼데스까 버튼 — 실행 중인 프로그램을 밖에서 멈춘다. 종료 코드는 130이다.
  • 너무 오래 돌면 멈춘다 — 플레이그라운드는 500만 걸음을 넘으면 무한 반복으로 보고 멈춘다.
종료 코드 7로 끝내기
  1. 나는 동현이냐?
  2. 뿡뿡 도옹
  3. 오겡끼데스까 도오오오오오오옹 ㅋㅋ 여기서 끝, 종료 코드 7
  4. 뿡뿡 도오옹 ㅋㅋ 실행되지 않는다
  5. 동현이구나
뿡뿡 출력 오겡끼데스까로 중단 · 종료 코드 7
1

8관용구 모음

자주 쓰는 표현을 모았다. 그대로 복사해서 변수 번호만 바꿔 쓰면 된다.

하고 싶은 것동현랭메모
변수에 1 더하기 / 빼기동현아 동현도옹동현아 동현ㅠ
두 변수의 차 (a − b)동동동현아 동동현 ㅠ ~ 동동동현아 동현동동동현−b를 만든 뒤 붙여 쓴다
100 만들기도오오오오오오오오오옹 도오오오오오오오오오옹10 × 10
−100 만들기ㅠ 도오오오오오오오오오옹 도오오오오오오오오오옹(−1) × 10 × 10
1000배 고정소수점 출력포동이 동현동현이 3142면 3.142
0이면 끝내기신중동 동현? 오겡끼데스까
입력 다 읽었으면 끝내기동현아 꽥꽥 ~ 신중동 동현? 오겡끼데스까다 쓰면 꽥꽥 = 0
짝수일 때만 실행신중동 동현 또치 도오옹? …
n의 배수일 때만 실행신중동 동현 또치 동동현? …동동현 = n
공백 / 쉼표 출력뿡뿡뿡 도오옹 도오오오옹 도오오오옹뿡뿡뿡 도오오오옹 도오오오오오오오오오오옹
돌아올 줄을 적어 두는 '함수 호출'동×9현아 <돌아올 줄> ~ 신중동역 <함수 줄>함수 끝에서 신중동역 동×9현

9자주 하는 실수와 오류 메시지

오류가 나면 출력 칸에 [동현이 아님 · N번 줄] 형식으로 어디서 무엇이 틀렸는지 알려 준다. 아래 메시지는 모두 실제 실행기가 내는 문구다.

실수오류 메시지고치는 법
첫 줄을 빼먹음첫 줄은 반드시 '나는 동현이냐?' 여야 한다. 넌 동현이가 아니다.맨 위에 나는 동현이냐?를 쓴다.
마지막 줄을 빼먹음마지막 줄은 반드시 '동현이구나' 여야 한다.맨 아래에 동현이구나를 쓴다.
신중동 뒤 ?를 빼먹음이건 동현이 말투가 아니다: '뿡뿡 도옹'조건 끝에 ?를 붙인다: 신중동 동현? 뿡뿡 도옹
도와 옹 사이를 띄움 / 오타이건 동현이 말투가 아니다: '도 오옹'도오옹처럼 띄우지 않고 붙여 쓴다.
변수 바로 뒤에 '이'를 붙임이건 동현이 말투가 아니다: '동현이'동현이·동현아는 예약된 말이다. 변수는 '동현'까지만 쓴다.
모르는 명령동현이는 그런 말 안 한다: '출력 도옹'명령은 동…현아, 뿡뿡, 뿡뿡뿡, 포동이, 신중동, 뭉치, 신중동역, 오겡끼데스까뿐이다.
0으로 나눔0으로 뚱띠하면 동현이도 운다.나누는 수가 0이 아닌지 먼저 신중동으로 확인한다.
뚱띠를 맨 뒤에 둠뚱띠·또치 뒤에 나눌 수가 없다.뚱띠 뒤에 나눌 수(항)를 쓴다.
입력에 숫자가 아닌 것숫자를 달라고 했지 '3.5'를 달라고 안 했다.정수만 넣는다. 소수는 1000배 해서 넣는다.
음수를 문자로 출력-1는 문자로 뀔 수 없다.뿡뿡뿡에는 0 이상의 문자 코드를 준다.

10명령어 한눈에 보기

시작 / 끝
나는 동현이냐?동현이구나

첫 줄과 마지막 줄. 첫 줄이 틀리면 "넌 동현이가 아니다".

숫자
도옹 · 도오옹 · 도오오옹

오의 개수 + 1. 각각 1, 2, 3. ㅠ는 −1.

변수
동현 · 동동현 · 동동동현

동의 개수가 변수 번호. 처음엔 모두 0.

대입
동현아 <식>

동현이를 부르면서 값을 쥐여준다.

입력
꽥꽥

식 안에서 정수 하나를 입력받는다. 동현아 꽥꽥

출력
뿡뿡 <식>뿡뿡뿡 <식>

정수 / 유니코드 문자. 식 없이 뿡뿡뿡은 줄바꿈.

조건
신중동 <식>? <명령>

식이 0일 때만 신중하게 실행한다.

이동
신중동역 <식>

해당 번호 줄로 간다. 7호선 신중동역에서 환승.

최강 중단
오겡끼데스까 [<식>]

어디서든 즉시 종료. 식은 종료 코드. 막을 방법이 없다. 답은 "…와타시와 겡끼데스."

나누기 · v1.2
<식> 뚱띠 <항><식> 또치 <항>

뚱띠는 몫, 또치는 나머지. 왼쪽부터 차례로 계산하고 0 쪽으로 버린다. 도오오오오오오옹 뚱띠 도오옹 = 3

음수 조건 · v1.2
뭉치 <식>? <명령>

식이 음수일 때만 실행한다. a < b는 a + (−b)가 음수인지로 본다.

소수 출력 · v1.2
포동이 <식>

값을 1000으로 나눠 소수 셋째 자리까지 출력한다. 3142 → 3.142. 실수는 1000배 정수로 다룬다.

주석
ㅋㅋ 이후

줄 끝까지 무시된다.

HTML에 넣기

JavaScript처럼 웹페이지 안에 동현랭을 직접 쓴다. donghyun.js를 불러오면 페이지의 동현랭 스크립트가 자동 실행되고, 결과가 그 자리에 나타난다.

<!doctype html>
<html lang="ko">
<head><meta charset="utf-8"><title>나는 동현이냐?</title></head>
<body>
  <script src="donghyun.js"></script>

  <!-- 결과가 이 스크립트 바로 뒤에 나타난다 -->
  <script type="text/donghyun" data-input="6">
나는 동현이냐?
  동현아 꽥꽥
  동동현아 도옹
  신중동 동현? 신중동역 도오오오오오오오옹
  동동현아 동동현 동현
  동현아 동현ㅠ
  신중동역 도오오오옹
  뿡뿡 동동현
  뿡뿡뿡
동현이구나
  </script>

  <!-- data-output="html": 뿡뿡한 글자를 HTML로 렌더링 -->
  <script type="text/donghyun" data-output="html">
나는 동현이냐?
  뿡뿡뿡 도오오오오오옹 도오오오오오오오오오옹
  동현아 도오오오오오오오오옹
  동현아 동현 도오오오오오오오오오옹
  동현아 동현도오오오오오오오옹
  뿡뿡뿡 동현
  동현아 도오오오오오옹
  동현아 동현 도오오오오오오오오오옹
  동현아 동현도오옹
  뿡뿡뿡 동현
  동현아 도오오오옹
  동현아 동현 도오오오오오오오오오옹
  동현아 동현도오오오오오옹
  동현아 동현 도오오오오오오오오오옹
  동현아 동현 도오오오오오오오오오옹
  동현아 동현도오오오옹
  동현아 동현 도오오오오오오오오오옹
  동현아 동현도옹
  뿡뿡뿡 동현
  동현아 도오오오오옹
  동현아 동현 도오오오오오오오오오옹
  동현아 동현도오오오옹
  동현아 동현 도오오오오오오오오오옹
  동현아 동현도오오오오오오옹
  동현아 동현 도오오오오오오오오오옹
  동현아 동현도오오오오오오오옹
  동현아 동현 도오오오오오오오오오옹
  동현아 동현도오오오오오오오옹
  뿡뿡뿡 동현
  뿡뿡뿡 도오오오오오옹 도오오오오오오오오오옹
  동현아 도오오오옹
  동현아 동현 도오오오오오오오오오옹
  동현아 동현도오오오오오오옹
  뿡뿡뿡 동현
  동현아 도오오오오오오오오옹
  동현아 동현 도오오오오오오오오오옹
  동현아 동현도오오오오오오오옹
  뿡뿡뿡 동현
  동현아 도오오오오오옹
  동현아 동현 도오오오오오오오오오옹
  동현아 동현도오옹
  뿡뿡뿡 동현
동현이구나
  </script>
</body>
</html>
  • data-input="5 3" — 꽥꽥에 넣을 값
  • data-output="html" — 뿡뿡한 글자를 HTML로 렌더링한다. 동현랭으로 웹페이지를 그린다
  • data-target="#id" — 결과를 넣을 요소 (없으면 스크립트 바로 뒤)
  • Donghyun.run(code, {input}) — JavaScript에서 직접 호출
이 페이지에 실제로 심어 둔 동현랭 — 팩토리얼 (data-input="6")
720
data-output="html" — 동현랭이 그린 HTML
꽥꽥! 동현랭이 그린 HTML

코드 생성기

글자나 HTML을 넣으면 그대로 뿡뿡하는 동현랭 코드를 만든다.

나는 동현이냐?
  뿡뿡뿡 도오오오오오옹 도오오오오오오오오오옹
  동현아 도옹
  동현아 동현 도오오오오오오오오오옹
  동현아 동현 도오오오오오오오오오옹
  동현아 동현도오오오옹
  뿡뿡뿡 동현
  뿡뿡뿡 도오오오오오오옹 도오오오오오오옹
  동현아 도오오오오오옹
  동현아 동현 도오오오오오오오오오옹
  동현아 동현도오옹
  뿡뿡뿡 동현
  동현아 도오오오옹
  동현아 동현 도오오오오오오오오오옹
  동현아 동현도오오오오옹
  동현아 동현 도오오오오오오오오오옹
  동현아 동현도오옹
  동현아 동현 도오오오오오오오오오옹
  동현아 동현 도오오오오오오오오오옹
  동현아 동현도오오오오오오오옹
  뿡뿡뿡 동현
  동현아 도오오오옹
  동현아 동현 도오오오오오오오오오옹
  동현아 동현도오오오오옹
  동현아 동현 도오오오오오오오오오옹
  동현아 동현도오오오오오오옹
  동현아 동현 도오오오오오오오오오옹
  동현아 동현도옹
  동현아 동현 도오오오오오오오오오옹
  동현아 동현도오오오오오옹
  뿡뿡뿡 동현
  뿡뿡뿡 도오오오옹 도오오오오오오오옹
  동현아 도오오오옹
  동현아 동현 도오오오오오오오오오옹
  동현아 동현도오오오오오옹
  동현아 동현 도오오오오오오오오오옹
  동현아 동현 도오오오오오오오오오옹
  동현아 동현도오오오옹
  동현아 동현 도오오오오오오오오오옹
  동현아 동현도옹
  뿡뿡뿡 동현
  동현아 도오오오오옹
  동현아 동현 도오오오오오오오오오옹
  동현아 동현도오오오옹
  동현아 동현 도오오오오오오오오오옹
  동현아 동현도오오오오오오옹
  동현아 동현 도오오오오오오오오오옹
  동현아 동현도오오오오오오오옹
  동현아 동현 도오오오오오오오오오옹
  동현아 동현도오오오오오오오옹
  뿡뿡뿡 동현
  동현아 도오오오오옹
  동현아 동현 도오오오오오오오오오옹
  동현아 동현도옹
  동현아 동현 도오오오오오오오오오옹
  동현아 동현 도오오오오오오오오오옹
  동현아 동현도오오오오오옹
  동현아 동현 도오오오오오오오오오옹
  뿡뿡뿡 동현
  동현아 도오오오옹
  동현아 동현 도오오오오오오오오오옹
  동현아 동현도오오오오옹
  동현아 동현 도오오오오오오오오오옹
  동현아 동현도오오오오오오옹
  동현아 동현 도오오오오오오오오오옹
  동현아 동현도오오오오오오오오옹
  동현아 동현 도오오오오오오오오오옹
  동현아 동현도오오오오오옹
  뿡뿡뿡 동현
  뿡뿡뿡 도오오오오오옹 도오오오오오오오오오옹
  동현아 도오오오옹
  동현아 동현 도오오오오오오오오오옹
  동현아 동현도오오오오오오옹
  뿡뿡뿡 동현
  동현아 도옹
  동현아 동현 도오오오오오오오오오옹
  동현아 동현 도오오오오오오오오오옹
  동현아 동현도오오오옹
  뿡뿡뿡 동현
  뿡뿡뿡 도오오오오오오옹 도오오오오오오옹
  동현아 도오오오오오옹
  동현아 동현 도오오오오오오오오오옹
  동현아 동현도오옹
  뿡뿡뿡 동현
동현이구나

만든 사람

김동현

인하대학교 의과대학 교수, 백신학·감염학을 연구한다. 아내와 두 아들, 그리고 뚱뚱한 강아지와 함께 살고 있다. 난해한 프로그래밍 언어인 동현랭을 만들었다. 몰입과 불면을 즐긴다. 능률과 실질을 숭상한다. 명랑하고 따뜻한 개발을 지향한다.