ETA (프로그래밍 언어)

위키백과 ― 우리 모두의 백과사전.

ETA는 마이크 테일러(Mike Taylor)가 만든 난해한 프로그래밍 언어이다. 이 언어의 이름은 사용하는 명령어의 목록에서 유래하기도 했으며, 7진법 수체계를 사용한다는 점에서 착안하여 일곱번째 그리스 문자인 에타에서 따 온 것이기도 하다.

목차

[편집] 언어의 구성

이 언어는 스택을 사용하는 명령형 프로그래밍 언어로, 영어에서 가장 자주 사용되는 알파벳 여덟 개, E, T, A, O, I, N, S, H를 명령어로 사용한다. 대소문자의 구별은 없으며, 명령은 아니지만 개행 문자도 언어에 포함된다. 이 문자들을 제외한 다른 모든 문자는 무시되기 때문에, 이론적으로는 ETA 코드를 알파벳을 사용하는 대부분의 자연어와 흡사하게 만들 수 있다.

[편집] 명령어들

명령 설명
E 스택에서 두 개의 숫자 ba를 순서대로 팝한 후, ab로 나눈 몫과 나머지를 순서대로 푸시한다.
T 스택에서 두 개의 숫자 addrcond를 순서대로 팝한 후, cond가 0이 아니면 프로그램의 addr번째 줄의 첫 명령어로 이동한다. addr이 0일 경우 프로그램을 종료한다.
A 그 명령어가 있는 줄 다음 줄의 번호를 스택에 푸시한다. 예를 들어서 첫 줄일 경우 2가 푸시된다.
O 스택에서 하나의 숫자를 팝해서, 그 숫자가 가리키는 ASCII 문자를 출력한다. 이 명령은 EBCDIC와 같은 다른 문자셋을 사용하는 컴퓨터에서도 똑같은 동작을 한다.
I 한 글자를 입력받아서 그 글자의 ASCII 값을 스택에 푸시한다. 이 명령은 EBCDIC와 같은 다른 문자셋을 사용하는 컴퓨터에서도 똑같은 동작을 한다.
N 지정한 숫자를 스택에 푸시한다. 자세한 것은 아래를 참고하라.
S 스택에서 두 개의 숫자 ba를 순서대로 팝한 후, b에서 a를 빼서 그 결과를 스택에 푸시한다.
H 스택에서 숫자 하나를 팝해서, 그 숫자를 사용해서 스택에 halibut 연산을 행한다. 자세한 것은 아래를 참고하라.

[편집] N 명령

이 명령은 그 뒤에 따라 오는 숫자를 스택에 푸시한다. 숫자는 7진법으로 표시되며, 숫자는 아래 표와 같은 문자로 표현한다. 숫자의 끝은 E 문자로 표시된다.

문자 H T A O I N S
숫자 0 1 2 3 4 5 6

예를 들어서 Ntone이라는 명령은 75(7진법으로 135)라는 숫자를 스택에 푸시한다.

[편집] H 명령

이 명령은 한 개의 숫자 n을 스택에서 팝한 후, 다음과 같은 방법으로 스택을 조작한다:

  • n이 양수일 경우, 스택 꼭대기부터 세어서 (n+1)번째 숫자를 스택의 꼭대기로 옮긴다. 그 위에 있던 모든 숫자들은 아래로 한 칸씩 내려가게 된다. 예를 들어서 n이 1이라면 이 명령은 꼭대기의 두 숫자의 자리를 바꾼다.
  • n이 음수이거나 0일 경우, 스택 꼭대기부터 세어서 (-n+1)번째 숫자를 스택에 꼭대기에 복사한다. 예를 들어서 n이 0이라면 이 명령은 스택 꼭대기에 있는 숫자를 복제한다.

[편집] ETA로 만든 "Hello, world" 프로그램

다음 프로그램은 "Hello, World!"라는 문장을 출력한다.

No heat: "hello.eta", written by Mike Taylor

** FUNGICIDE **
-- Fungus calendar --
CURTSEY:
        Fungal toe!  Fungal toe!  Fungal hoe!
                (Burnt programmer nucleus)
        Ooooooo!
CRUDDY 2nd TOE:
        Nine(!) fungal hyaena toe5!
        Dungy alfalfa, penalty superlunary -- Oh, blubber!
        Oo! Oooo! OW!

아래는 이 프로그램에서 실제로 명령으로 인정되는 문자를 굵은 글씨로 표현하고, N 명령과 뒤에 따르는 숫자를 Ntone과 같이 밑줄로 표현한 것이다.

No heat: "hello.eta", written by Mike Taylor

** FUNGICIDE **
-- Fungus calendar --
CURTSEY:
       Fungal toe!  Fungal toe!  Fungal hoe!
               (Burnt programmer nucleus)
       Ooooooo!
CRUDDY 2nd TOE:
       Nine(!) fungal hyaena toe5!
       Dungy alfalfa, penalty superlunary -- Oh, blubber!
       Oo! Oooo! OW!

[편집] 외부 고리

다른 언어