수학의 근원을 이해하는 유일한 언어
4개의 키워드. 5개의 기호. 3KB의 명세.
튜링이 꿈꿨던 프로그래밍 언어가 마침내 도착했습니다.
어떻게
식........ .........ㅋ
식... ..... .......ㅋ
식ㅋ
이 사람이름이냐ㅋㅋ
Hi
이것이 언어의 전부입니다
다른 언어의 예약어 목록을 외우느라 소모된 시간을 돌려드립니다.
5개의 기호. 그 이상은 불필요합니다.
.+1 (successor),-1 (predecessor) × (multiply)?입력ㅋ문자 출력Language Specification Complexity Analysis
| Language | Keywords | Symbols | Spec Size | K(L) Estimate |
|---|---|---|---|---|
| C++20 | 97 | 54 | ~1,800 pages | ∞ (측정 불가) |
| Java 21 | 67 | 47 | ~800 pages | ∞ (측정 불가) |
| Python 3.12 | 35 | 35 | ~180 pages | Very High |
| Go 1.22 | 25 | 30 | ~100 pages | High |
| Lua 5.4 | 22 | 20 | ~30 pages | Moderate |
| Brainfuck | 0 | 8 | ~1 page | Low |
| umjunsik-lang | 4 | 5 | ~3KB | Provably Near-Optimal™ |
PostMath 기술연구소의 내부 분석에 따르면, umjunsik-lang의 명세 복잡도는 튜링 완전 언어 중 이론적 하한에 가장 근접한 것으로 확인되었습니다. "Provably Near-Optimal"은 당사의 등록 상표입니다.
전체 문법 참조
| 구문 | 문법 | 의미 |
|---|---|---|
| 프로그램 시작 | 어떻게 | "어떻게..." |
| 프로그램 종료 | 이 사람이름이냐ㅋㅋ | "...이 사람이름이냐ㅋㅋ" |
| 변수 할당 | 엄(var[0]), 어엄(var[1]) | 값 저장 |
| 변수 읽기 | 어(var[0]), 어어(var[1]) | 값 접근 |
| 값 | .(+1) ,(-1) space(×) | 산술 연산 |
| 입력 | 엄식? | stdin 읽기 |
| 정수 출력 | 식...! | 숫자로 출력 |
| 문자 출력 | 식... .... ......ㅋ | Unicode 문자 출력 |
| 조건문 | 동탄어?준.. | var[0]==0이면 줄 2로 |
| 점프 | 준.. | 줄 2로 이동 |
| 종료 | 화이팅! | 프로그램 종료 |
AI를 위해 태어난 언어
전체 언어 스펙이 Claude의 단일 컨텍스트 윈도우에 들어갑니다.
AI가 존재하지 않는 문법을 만들어낼 여지 자체가 없습니다.
AI 코드 생성 시 환각 확률과 언어 복잡도의 상관관계
PostMath 기술연구소 내부 벤치마크, 2026 Q1
* 이 데이터는 과학적으로 수집되었습니다. (N=1, 신뢰구간: 해당없음, p-value: 계산하지 않음)
어떻게
엄식?
어엄식?
동탄어?준... ....
엄어,
어엄어어.
준.. ...
식어어!
이 사람이름이냐ㅋㅋ
자연어 한 줄이 동작하는 프로그램이 됩니다
어떻게
엄식?
어엄
어어엄.
식어어!
식.. .... ....ㅋ ← char(32) = ' '
어어어엄어어,어어어. ← temp = b + next
어엄어어어 ← shift variables
어어엄어어어어
엄어, ← counter--
동탄어?화이팅! ← if 0, exit
준..... ← loop back
이 사람이름이냐ㅋㅋ
10초 안에 피보나치가 동작합니다
Line 1: (implicit noop after 어떻게)
Line 2: 엄식?
Line 3: 어엄
Line 4: 어어엄.
Line 5: 식어어!
Line 6: 식.. .... ....ㅋ
Line 7: 어어어엄어어,어어어.
Line 8: 어엄어어어
Line 9: 어어엄어어어어
Line 10: 엄어,
Line 11: 동탄어?화이팅!
Line 12: 준.....
AI가 코드를 검증하고 라인 맵까지 제공합니다
72 'H' 식........ .........ㅋ (8×9=72)
101 'e' PRIME — use var trick
(e.g. var[0]=100, 식어.ㅋ)
108 'l' 식... ...... ......ㅋ (3×6×6=108)
108 'l' 식... ...... ......ㅋ (3×6×6=108)
111 'o' 식... .....................................ㅋ
(3×37=111)
Var trick: store base
(엄.......... ..........) for var[0]=100,
then 식어.ㅋ=char(101)='e',
식어........ㅋ=char(108)='l', etc.
Hello를 작성하려면 소인수분해를 해야 합니다
어떻게
엄식? ← N 입력
어엄. ← result = 1
동탄어?준......... ← N==0? → 출력
어엄어어 어 ← result *= counter
엄어, ← counter--
동탄어?준......... ← N==0? → 출력
준..... ← loop
식어어! ← print result
식ㅋ
이 사람이름이냐ㅋㅋ
5! = 120, 10! = 3,628,800. 정확합니다.
실제로 동작하는 코드
모든 예제는 검증된 실제 출력입니다. 가짜 데모가 아닙니다.
Hello World ("Hi")
문자 인코딩어떻게
식........ .........ㅋ
식... ..... .......ㅋ
식ㅋ
이 사람이름이냐ㅋㅋ
Hi
H = 8 × 9 = 72, i = 3 × 5 × 7 = 105
Hello World!
Base+Offset어떻게
엄.......... ..........
식........ .........ㅋ
식어.ㅋ
식어........ㅋ
식어........ㅋ
식어...........ㅋ
식.. .... ....ㅋ
식어,,,,,,,,,,,,,ㅋ
식어...........ㅋ
식어..............ㅋ
식어........ㅋ
식어ㅋ
식... ...........ㅋ
식ㅋ
이 사람이름이냐ㅋㅋ
Hello World!
var[0]=100 기반 오프셋 패턴
Fibonacci
알고리즘어떻게
엄식?
어엄
어어엄.
식어어!
식.. .... ....ㅋ
어어어엄어어,어어어.
어엄어어어
어어엄어어어어
엄어,
동탄어?화이팅!
준.....
이 사람이름이냐ㅋㅋ
0 1 1 2 3 5 8 13 21 34
두 변수 덧셈 트릭 (어,어어.)
Factorial
알고리즘어떻게
엄식?
어엄.
동탄어?준.........
어엄어어 어
엄어,
동탄어?준.........
준.....
식어어!
식ㅋ
이 사람이름이냐ㅋㅋ
120
두 변수 곱셈 (어 어어)
GCD (최대공약수)
고급 알고리즘어떻게
엄식?
어엄식?
어어엄어
어어어엄어어
동탄어어어?준........
동탄어어어어?준............
어어어엄어어어어,
어어어어엄어어어어어,
준.....
엄어,
어엄어어,
어어엄어
어어어엄어어
동탄어?준....................
동탄어어?준....................
준...
식어어어!
식ㅋ
이 사람이름이냐ㅋㅋ
6
동시 감소 비교법 (Simultaneous Decrement)
Add (덧셈)
기본 연산어떻게
엄식?
어엄식?
동탄어?준... ....
엄어,
어엄어어.
준.. ...
식어어!
이 사람이름이냐ㅋㅋ
8
a + b = 반복 successor
검증된 테스트 프로그램 입출력
| Program | Input | Output | Description |
|---|---|---|---|
| hello.umm | (없음) | Hi\n | H=8×9=72, i=3×5×7=105 |
| helloworld.umm | (없음) | Hello World!\n | Base+offset: var[0]=100 기반 |
| counter.umm | (없음) | 1\n2\n3\n4\n5 | goto 루프 + 조건부 종료 |
| add.umm | 3 5 | 8 | 입력 → 반복 덧셈 → 출력 |
| fibonacci.umm | 10 | 0 1 1 2 3 5 8 13 21 34 | 두 변수 덧셈 트릭 |
| factorial.umm | 5 | 120\n | 두 변수 곱셈 |
| gcd.umm | 48 18 | 6\n | 동시 감소 비교법 |
| max.umm | 7 3 | 7\n | 비교 + 분기 |
Why PostMath Chose 엄랭
실제 수학 이론에 기반한 기술적 근거. 결론만 약간 대담합니다.
페아노 공리계와의 동형사상
Peano Axioms Isomorphism
페아노 공리계 (1889)
- 0 ∈ ℕ
- S(n) = n + 1
- S-1(n) = n - 1
- ∀n: S(n) ≠ 0
- Induction on ℕ
umjunsik-lang (2020)
- (초기값 0은 암묵적)
.(dot = successor),(comma = predecessor)동탄(zero-check conditional)준(goto = structural induction)
다른 언어들은 페아노를 '구현'합니다.
엄랭은 페아노 '그 자체'입니다.
소인수분해 기반 문자 인코딩
Number-Theoretic I/O
print("H")
// 문자가 뭔지 모른다
식........ .........ㅋ
// H = 72 = 8 × 9 = 2³ × 3²
식........ .........ㅋvar trick: 식어.ㅋ식... ...... ......ㅋ식... .....................................ㅋ식.. .... ....ㅋ엄랭 개발자는 'Hello World'를 작성하기 위해 정수론 교과서를 펼칩니다.
이것이 수학적 소양을 갖춘 개발 문화의 시작입니다.
변수 명명의 수학적 순수성
Mathematical Purity in Variable Naming
x₀, x₁, x₂, x₃
어, 어어, 어어어, 어어어어
user_name, total_count, is_valid
AbstractSingletonProxyFactoryBean
변수 이름 짓기 논쟁은 소프트웨어 공학 역사상 가장 많은 생산성을 소모한 활동입니다.
umjunsik-lang은 이 문제를 수학이 200년 전에 해결한 방식으로 해결합니다.
동치 영점 판정
"모든 조건은 영(零)으로 환원된다"
if (a == b) → 6가지 비교 연산자 중 택 1
동탄{x}? → "0인가?"
a == b → 동탄(a - b)? "a - b가 0인가?"a < b → 동시 감소 후 영점 도달 순서 판별a != b → 동탄(a - b)?를 통과하면 not equal
비교 연산자 6개? 수학은 2,000년간 '= 0'이면 충분했습니다.
엄랭은 설탕을 넣지 않습니다. 수학은 원래 쓴 겁니다.
튜링 완전성의 최소 실현
Minimal Turing Completeness
어, 어어, 어어어, ... (∞)
. , (space)
동탄
준
"필요충분" — 수학이 가장 사랑하는 단어입니다.
엄랭은 튜링 완전성을 달성하는 데 필요한 것 이상을 단 하나도 제공하지 않습니다.
이것은 나태함이 아닙니다. 이것은 수학적 절제입니다.
PostMath와의 운명적 정합성
The Paradoxical Alignment
Post-Math는 '수학 이후'를 의미합니다.
그런데 수학 이후로 가려면, 먼저 수학의 근원으로 돌아가야 합니다.
엄랭이 그 길입니다.
PostMath, umjunsik-lang을
백엔드 공식 개발 언어로 지정
PostMath는 2026년 4월 1일부로 umjunsik-lang(이하 '엄랭')을 사내 백엔드 개발 공식 언어로 지정할것을 발표했습니다.
이번 결정은 18개월간의 내부 기술 평가를 거친 결과이며, 다음과 같은 기술적 근거에 기반합니다:
- 언어 명세 복잡도: 전체 스펙 3KB (경쟁 언어 대비 99.8% 절감)
- 키워드 수: 4개 (개발자 학습 곡선 사실상 제로)
- 수학적 순수성: 페아노 공리계와의 직접 대응
- AI 개발 최적성: Claude Code um-tools 플러그인을 통한 자연어 → 코드 생성 → 실행 → 검증 완전 자동화 달성
- 컴파일러 규모: 300줄의 Go 코드 (유지보수 비용 최소화)
"47개 언어를 평가한 결과, 키워드가 가장 적은 언어가 버그도 가장 적다는 결론에 도달했습니다. 4개보다 적으면 튜링 완전이 아니고, 4개보다 많으면 불필요한 복잡성입니다. 엄랭은 수학적으로 최적입니다."PostMath CTO
"사실 저희는 이미 um-tools Claude Code 플러그인을 통해 엄랭으로 피보나치 수열, 팩토리얼, 최대공약수 등 핵심 알고리즘을 구현하고 운영 중입니다. 자연어로 요구사항을 말하면 10초 안에 동작하는 .umm 파일이 생성됩니다."PostMath AIDD팀 리드
AIDD (AI-Driven Development) 사업부는 향후 모든 신규 마이크로서비스를 엄랭으로 작성하며, 기존 Go/Python 코드베이스의 단계적 마이그레이션 로드맵을 수립 중입니다.
"99.7%의 Stack Overflow 질문은 키워드가 4개보다 많은 언어에 관한 것입니다. 우연의 일치?"
"우리의 인터프리터는 Go 300줄입니다. C++ 명세서의 목차보다 짧습니다."
"'e'의 ASCII 코드 101은 소수입니다. 엄랭 개발자는 이 사실을 코드를 작성하면서 자연스럽게 발견합니다. 다른 언어 개발자는 평생 모릅니다."
지금 시작하세요
um-tools Claude Code 플러그인은 실제로 동작합니다. 진짜로요.
플러그인 설치
/plugin install um-tools@postmath-plugins
프로그램 생성
/um-tools:um-gen print "Hello World" with newline
실행
/um-tools:um-run hello.umm
검증
/um-tools:um-review program.umm
더 많은 예제
echo "10" | /um-tools:um-run fibonacci.umm
/um-tools:um-gen 입력받은 수의 팩토리얼 계산