난해한 프로그래밍 언어란
일부러 다른 프로그래밍 언어에 비해 사용하기 어렵게 만든 언어
제작 목적은 프로그래밍 언어의 한계 측정, 어떤 개념의 증명을 위해
혹은 단순한 장난으로 제작
그 중 아희라는 언어를 배워보자
아희로 코딩한 "Hello, world!"
밤밣따빠밣밟따뿌
빠맣파빨받밤뚜뭏
돋밬탕빠맣붏두붇
볻뫃박발뚷투뭏붖
뫃도뫃희멓뭏뭏붘
뫃봌토범더벌뿌뚜
뽑뽀멓멓더벓뻐뚠
뽀덩벐멓뻐덕더벅
아희
1. 자음
ㅇ, ㄱ, ㅋ: 아무 일도 하지 않는다.
ㅎ: 프로그램을 종료한다.
ㄷ, ㄸ, ㅌ, ㄴ, ㄹ: 각각 덧셈, 곱셈, 뺄셈, 나눗셈, 나머지 연산.
모두 공통적으로 저장공간에서 두 값을 뽑아낸 다음 둘을 연산한 값을 저장공간에 저장한다. 순서가 있는 연산자의 경우 나중에 꺼낸 값이 연산자의 왼쪽에 온다.
ㅁ: 출력. 받침이 ㅇ이면 숫자, ㅎ이면 문자 출력. 나머지 종성이면 출력값 없음
ㅂ: 입력. 받침이 ㅇ이면 숫자, ㅎ이면 문자 입력. 나머지 종성은 획수를 따짐
ㅃ: 중복. 스택이라면 맨 위의 값을 그 값 위에 하나 더 집어넣고
큐라면 맨 앞의 값을 앞에 하나 더 덧붙인다.
통로라면 아까 보낸 값을 한 번 더 보낸다.
ㅍ: 바꿔치기. 스택이라면 맨 위 값과 그 바로 아래 값을
큐라면 맨 앞의 값과 그 바로 뒤 값을 바꾼다.
통로일 때의 동작은 미정.
ㅅ: 선택. 종성을 통해 자료구조에서 선택 가능.
ㅆ: 이동. 지금 저장공간에서 값 하나를 뽑아내서 받침이 나타내는 저장공간에 그 값을 집어넣는다.
ㅈ: 비교. 저장공간에서 값 두 개를 뽑아 내서 비교한다.
나중에 뽑아낸 값이 더 크거나 같으면 1을, 아니면 0을 지금 저장공간에 집어넣는다.
ㅊ: 조건. 저장공간에서 값 하나를 뽑아내서 그 값이 0이 아니면 진행해야 할 방향대로, 0이면 그 반대 방향대로 간다.
2. 모음
모음의 방향이 커서의 방향이 된다
ㅏ: 오른쪽으로
ㅓ: 왼쪽으로
ㅜ : 아래로
ㅗ : 위로
ㅑ, ㅕ, ㅛ, ㅠ : 위와 같지만 2칸씩 이동
ㅣ: 커서가 세로로 들어오면 통과시키고, 가로로 들어오면 커서방향 반대로 뒤집는다.
ㅡ : 커서가 가로로 들어오면 통과시키고, 세로로 들어오면 커서방향 반대로 뒤집는다.
ㅢ : 어느방향으로 오던지 방향을 바꾼다.
이외의 모음은 아무런 기능을 하지 않습니다.
"Hello, world!"의 H 출력
밣밟따맣허
밣 : ㅀ의 획수 8을 입력
밟 : ㄼ의 획수 9을 입력
따 : 8과 9을 곱함 72
맣 : ㅁ은 출력 / 종성이 ㅎ이므로 아스키코드 72에 해당하는 H 출력
자바스크립트로 된 아희 실행기에서 한 단계씩 디버그(?) 가능
아희로 "Melon" 출력
밞북밙뚜맣뭏
붉더봀북토뭏
따빠뫃투볽뭏
북벋뻐더뽀후
타다빠밬토허
참고문헌
'etc.' 카테고리의 다른 글
스캔한 도서를 pdf로 만들어 보자 (image to pdf) (0) | 2024.10.29 |
---|---|
라즈베리파이 공유기 만들기 (Routed Wireless Access Point) (0) | 2022.08.08 |
지그재그 지그비 zigbee (0) | 2022.07.10 |
개발자를 위한 구글링 팁 (0) | 2021.11.11 |
정규 표현식(Regex)를 소개합니다 (0) | 2021.10.29 |