맨위로가기

난해한 프로그래밍 언어

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

난해한 프로그래밍 언어는 프로그래밍을 어렵게 만드는 것을 목표로 하는 언어들을 통칭한다. 1972년 INTERCAL이 등장한 이후, 패러디, 미니멀리즘, 난독화 등을 특징으로 하는 다양한 언어들이 개발되었다. 브레인퍽, Befunge, Chef, Piet, 셰익스피어 프로그래밍 언어 등 여러 종류가 있으며, 튜링 완전성을 가지면서도 코드의 난해성을 극대화하는 것이 특징이다. 이러한 언어들은 코드 예술, 문화적 표현의 수단으로도 활용되며, 튜링 난관이라는 개념과도 관련된다.

더 읽어볼만한 페이지

  • 난해한 프로그래밍 언어 - HQ9+
    HQ9+는 간단한 인터프리터 구현이 가능한 난해한 프로그래밍 언어로, 'Hello, world!' 출력, 소스 코드 출력, "99 Bottles of Beer" 가사 출력, 누산기 값 증가의 네 가지 명령을 제공한다.
  • 난해한 프로그래밍 언어 - FRACTRAN
    FRACTRAN은 정수의 소인수 지수를 레지스터로 활용하여 분수 목록을 곱하는 과정을 반복하며 다양한 계산을 수행하는 계산 모델이다.
  • 프로그래밍 언어 분류 - 하드웨어 기술 언어
    하드웨어 기술 언어(HDL)는 전자 시스템의 구조와 동작을 텍스트 기반으로 표현하는 언어로, 디지털 회로 설계의 핵심 도구로 사용되며, 시뮬레이션 및 디버깅을 통해 설계 검증을 수행한다.
  • 프로그래밍 언어 분류 - 고급 프로그래밍 언어
    고급 프로그래밍 언어는 기계어보다 높은 수준의 추상화를 제공하며, 변수, 객체, 함수 등의 개념을 사용하여 프로그래머가 기계의 세부 사항에서 분리되어 편리하게 프로그래밍할 수 있도록 하는 언어이다.
난해한 프로그래밍 언어
개요
유형프로그래밍 언어
설계 목표재미
난해함
자기 표현
특징비표준적 구문
복잡한 의미 체계
제한된 기능
활용프로그래밍 언어 이론 연구
프로그래밍 교육 (비주류)
예술적 표현
역사
기원1990년대
발달 배경기존 프로그래밍 언어의 한계에 대한 반발, 새로운 표현 방식 탐구
특징
철학적 기반반미학
의도적 난해화가독성 및 생산성 저하
극단적 단순성최소한의 기능만 제공
예시
Brainfuck극단적으로 단순한 명령 집합
INTERCAL"읽을 수 없음"을 목표로 설계
Malbolge가장 난해한 언어 중 하나
Whitespace공백 문자로만 코드를 작성
LOLCODE고양이 밈 기반
Shakespeare셰익스피어 희곡 스타일
Piet추상 회화 스타일
난해한 프로그래밍 언어의 영향
긍정적 영향창의적 문제 해결 능력 향상
프로그래밍 언어 디자인에 대한 새로운 시각 제시
부정적 영향실용성 부족
학습 곡선이 가파름
생산성 저하
참고
관련 용어에소테릭 아트

2. 역사

INTERCAL[2]은 가장 초창기이자 현재까지도 난해한 프로그래밍 언어의 전형적인 예시이다. 1972년 돈 우즈와 제임스 M. 리옹(James M. Lyon)이 설계했으며, 그들은 그들이 익숙한 어떤 프로그래밍 언어와도 다른 프로그래밍 언어를 만들고자 했다.[3][4]

1990년 유닉스 환경에서 C로 구현되면서 난해한 컴퓨터 언어의 의도적인 디자인에 대한 관심이 다시 높아졌다.

1993년, Wouter van Oortmerssen은 코드를 본질적으로 난해하고 혼란스럽고 읽을 수 없도록 설계된 구문을 가진 작은 스택 지향 프로그래밍 언어인 FALSE를 만들었다. 컴파일러 크기는 1024바이트에 불과했다.[5] 이는 Urban Müller가 단 8개의 문자로 구성된, 현재 악명 높은 Brainfuck를 만들도록 영감을 주었다. Chris Pressey의 Befunge (FALSE와 유사하지만 2차원 명령 포인터를 가짐)와 함께 Brainfuck는 현재 최소 튜링 타르핏의 전형적인 예와 불필요하게 난해한 언어 기능을 가진 가장 잘 지원되는 난해한 프로그래밍 언어 중 하나이다. Brainfuck는 튜링 머신의 P′′ 계열과 관련이 있다.

2. 1. 초기 역사

INTERCAL은 초기부터 현재에 이르기까지 표준적인 난해한 프로그래밍 언어 중 하나이다.[2][36] 1972년 돈 우즈와 제임스 리언이 당시 널리 사용되던 포트란, COBOL, 어셈블리어 등의 언어들을 패러디하여, 기존 프로그래밍 언어와는 전혀 다른 문법과 기능을 가지도록 설계했다.[37][38]

오랫동안 INTERCAL은 매뉴얼로만 존재했으나, 1990년 유닉스 환경에서 C로 구현되면서 난해한 프로그래밍 언어에 대한 관심이 다시 높아졌다.

3. 특징

난해한 프로그래밍 언어는 패러디, 미니멀리즘, 프로그래밍을 어렵게 만드는 것을 목표로 하는 등 몇 가지 공통적인 특징을 보인다.[6] 대부분 비펀지의 영향을 받아 1차원이 아닌 자료 및 코드 영역을 사용한다. 0차원 프로그래밍 언어 NULL은 하나의 숫자가 하나의 프로그램이며 소인수 분해를 통해 명령을 생성한다.

일부 난해한 프로그래밍 언어는 비결정적으로 동작한다. Java2K나 Thue는 같은 프로그램을 실행해도 다른 결과를 낼 수 있다. 셰익스피어처럼 사용자가 프로그래밍 코드임을 쉽게 알아차리지 못하게 하는 경우도 있다.

3. 1. 미니멀리즘

많은 수의 난해한 프로그래밍 언어는 최소한의 요소만을 가지고도 튜링 완전한 언어를 추구한다. 여기에는 브레인퍽(명령 8개, 피연산자 없음), OISC(명령 1개, 피연산자 3개), Thue(명령 1개, 피연산자 2개) 등이 속한다.

3. 2. 다양한 프로그래밍 패러다임

난해한 프로그래밍 언어는 특정 프로그래밍 패러다임에 얽매이지 않고 다양한 패러다임을 활용한다. 예를 들어, 자료를 어떻게 다룰지 명령으로 기술하는 명령형 언어(예: 브레인퍽)[1], 데이터와 코드를 교환 가능하며 함수 적용을 반복하여 실행하는 함수형 언어(예: 언람다)[1], 시작 상태에 변환 함수를 적용하는 재작성 언어(예: Thue)[1] 등이 있다.

3. 3. 독특한 자료 및 명령어 표현

난해한 프로그래밍 언어는 데이터를 저장하고 접근하는 독특한 방식을 사용한다. Brainfuck 및 Malbolge와 같은 언어는 단일 포인터를 통해서만 데이터를 읽을 수 있으며, 데이터를 읽으려면 해당 포인터를 원하는 위치로 이동해야 한다. Befunge 및 셰익스피어와 같은 다른 언어는 하나 이상의 스택을 사용하여 데이터를 저장하며, 이는 후위 표기법과 유사한 실행 방식을 낳는다. Brainfuck 변형인 Boolfuck은 단일 비트에 대한 연산만 허용하는 반면, Malbolge 및 INTERCAL 변형 TriINTERCAL은 비트를 삼진법 시스템으로 대체한다.[7]

Befunge와 Piet와 같은 일부 난해한 프로그래밍 언어는 프로그램을 2차원 이상으로 표현하며, 프로그램 제어는 프로그램 내에서 여러 방향으로 이동한다. 이는 순차적으로 나타나는 일련의 명령어로 구성된 기존 언어와 다르다. 셰익스피어는 모든 프로그램을 셰익스피어 연극과 유사하게 만들며, 셰프는 모든 프로그램을 레시피로 만들어 프로그램과 레시피로 모두 기능하는 이중 의미를 생성하기도 한다.[7] [8]

3. 4. 난독성

많은 수의 난해한 프로그래밍 언어는 읽고 쓰기 어렵게 만드는, 심하게 난독화(Obfuscation (software))된 코드를 생성하도록 설계되었다.[9] 이는 프로그래머에게 흥미로운 퍼즐이나 도전을 제공하기 위한 목적일 수 있다. 예를 들어, 말볼지(Malbolge)는 도전적인 언어로 명시적으로 설계되었으며, 자기 수정 코드와 매우 직관적이지 않은 연산과 같은 기능을 가지고 있다.[9] 반면에, 어떤 난해한 언어는 다른 설계 선택 때문에 쓰기 어려워진다. 브레인퍽(Brainfuck)은 최소한의 명령어 집합이라는 아이디어에 충실하며, 비록 그 명령어들이 원칙적으로는 간단하지만, 결과적으로 인간이 읽기 어려운 코드가 생성된다. 인터칼(INTERCAL)의 어려움은 다른 프로그래밍 언어에서 사용되는 연산을 피하려는 선택의 결과로 발생하는데, 이는 다른 언어에 대한 패러디에서 비롯되었다.[9]

3. 5. 패러디와 풍자

난해한 프로그래밍 언어는 기존 프로그래밍 언어나 프로그래밍 분야의 트렌드를 패러디하거나 풍자하는 것을 목표로 하기도 한다.[9] 예를 들어 최초의 난해한 언어인 INTERCAL은 APL, 포트란, 코볼과 같은 1960년대 언어를 풍자하기 위해 만들어졌다. INTERCAL의 규칙은 이러한 다른 언어의 규칙과 정반대인 것처럼 보인다.[10] 패러디의 대상이 항상 다른 기존 프로그래밍 언어인 것은 아니다. 예를 들어, 셰익스피어는 셰익스피어 극의 구조를 풍자하는 것으로 볼 수 있다. Ook! 언어는 브레인퍽을 패러디한 것으로, 브레인퍽의 8가지 명령어가 "Ook. Ook?"와 같은 다양한 오랑우탄 소리로 대체된다.[7]

3. 6. 비결정적 동작

일부 난해한 프로그래밍 언어는 비결정적으로 동작한다. 즉, 같은 프로그램을 실행할 때마다 다른 결과를 낼 수 있다. Java2K나 Thue 등이 이러한 예시에 속한다.

4. 종류

다음은 난해한 프로그래밍 언어의 종류이다.


  • Befunge: 명령 포인터가 코드를 통해 여러 차원으로 이동할 수 있도록 허용하는 난해한 프로그래밍 언어이다.[11]
  • 브레인퍽: 극단적인 미니멀리즘을 위해 설계되었으며, 단 8개의 고유한 문자를 사용한다.[13]
  • Chicken: "chicken", 공백, 줄 바꿈의 세 가지 토큰만을 사용하여 프로그램을 작성한다.[14]
  • Chef: 데이비드 모건-마가 만든 스택 지향 프로그래밍 언어로, 레시피처럼 보이도록 설계되었다.[18]
  • FRACTRAN: 존 호턴 콘웨이가 발명했으며, 초기 양의 정수 입력과 함께 양의 분수의 정렬된 목록으로 구성된다.[21]
  • GolfScript: 코드 골프를 위해 만들어졌다.[22]
  • INTERCAL: "발음할 수 없는 약어를 가진 컴파일러 언어"의 줄임말로, 1972년 돈 우즈와 제임스 M. 리옹이 설계했다.[2]
  • JSFuck: [, ], (, ), !, + 단 여섯 개의 문자만을 사용하여 JavaScript 코드를 작성하는 난해한 프로그래밍 방식이다.[23][24]
  • LOLCODE: lolcat의 언어를 모방하여 설계되었다.[26]
  • 말볼지: (지옥의 8번째 고리에서 이름을 따옴) 가장 어렵고 난해한 프로그래밍 언어로 설계되었다.
  • Piet: 데이비드 모건-마가 설계했으며, 프로그램은 추상 미술과 같은 모양을 한 비트맵이다.[28]
  • 셰익스피어 프로그래밍 언어(SPL): 프로그램을 셰익스피어극처럼 보이도록 설계했다.
  • 언랭다: SKI 콤비네이터 계산법을 기반으로 하지만, 일급 지속과 명령형 I/O를 결합한 미니멀리스트 함수형 프로그래밍 언어이다.[31]
  • Whitespace: 공백 문자(스페이스, 탭, 개행 문자)만을 사용하며, 다른 모든 문자는 무시한다.

4. 1. Befunge

Befunge는 명령 포인터가 코드를 통해 여러 차원으로 이동할 수 있도록 허용하는 난해한 프로그래밍 언어이다. 예를 들어, 다음 프로그램은 "Hello World"를 표시한다.

```befunge

"dlroW olleH">:v

^,_@

|befunge

```

이 프로그램은 문자를 역순으로 스택에 넣은 다음 `>` ,`:` ,`v`, `_`, `,`, `^` 명령을 통해 시계 방향으로 순환하는 루프에서 문자를 인쇄한다.[11]

Befunge에는 여러 버전이 있으며, 가장 일반적인 버전은 출시 연도를 따서 Befunge-93으로 명명되었다.[11]

4. 2. Brainfuck

브레인퍽은 극단적인 미니멀리즘을 위해 설계되었으며, 단 8개의 고유한 문자를 사용하는 난해한 코드이다.[13] 다음은 "Hello, world!"를 출력하는 프로그램이다.

```bf

++++++++++[>+++++++>++++++++++>+++<<<-]>++.>+.+++++++

..+++.>++.<<+++++++++++++++.>.+++.------.--------.>+.

```

`+`, `-`, `<`, `>`, `[`, `]`, `,`, `.` 이외의 모든 문자는 무시된다.

4. 3. Chicken

Chicken은 "chicken", 공백, 줄 바꿈의 세 가지 토큰만을 사용하여 프로그램을 작성하는 언어이다. 컴파일러는 한 줄에 있는 "chicken"의 수를 연산 코드 명령어로 해석하여 스택의 데이터를 조작한다. 간단한 Chicken 프로그램은 "chicken"이라는 단어가 수없이 반복되는 수십 줄을 포함할 수 있다.[14] Chicken은 Torbjörn Söderstedt에 의해 발명되었으며, 그는 과학 논문의 패러디에서 이 언어에 대한 영감을 얻었다.[15][16][17]

4. 4. Chef

데이비드 모건-마가 만든 스택 지향 프로그래밍 언어인 Chef는 레시피처럼 보이도록 설계되었다.[18] 프로그램은 제목, 변수 목록과 데이터 값, 스택 조작 명령 목록으로 구성된다.[19] 유머러스한 설계 원칙에 따르면 "프로그램 레시피는 유효한 출력을 생성할 뿐만 아니라 준비하기 쉽고 맛있어야 한다"고 하며, 모건-마는 "101개의 달걀"과 "111컵의 기름"이 있는 예시 "Hello, World!" 프로그램이 "한 사람을 위한 많은 음식"을 생산할 것이라고 언급한다.[19][20]

4. 5. FRACTRAN

FRACTRAN 프로그램은 초기 양의 정수 입력 n과 함께 양의 분수의 정렬된 목록으로 구성된다. 프로그램은 목록에 있는 첫 번째 분수 f에 정수 n을 곱하여 nf가 정수이면 실행된다. 그런 다음 정수 nnf로 대체되고 규칙이 반복된다. 목록에 있는 분수를 n에 곱했을 때 정수가 생성되지 않으면 프로그램이 중지된다. FRACTRAN은 존 호턴 콘웨이에 의해 발명되었다.[21]

4. 6. GolfScript

GolfScript는 코드 골프를 위해 만들어진 언어로, 프로그램은 항목 목록으로 구성된다. 각 항목은 변수를 제외하고 발견되는 즉시 스택에 푸시된다. 변수는 코드 블록을 값으로 가지며, 이 경우 코드가 실행된다.[22]

4. 7. INTERCAL

INTERCAL은 "발음할 수 없는 약어를 가진 컴파일러 언어"(Compiler Language With No Pronounceable Acronym)의 줄임말로, 1972년 돈 우즈와 제임스 M. 리옹이 설계한 난해한 프로그래밍 언어이다.[2] 이들은 당시 포트란, COBOL, 어셈블리어와 같은 기존 프로그래밍 언어의 요소들을 패러디하여, 그들이 익숙한 어떤 프로그래밍 언어와도 다른 프로그래밍 언어를 만들고자 했다.[3][4]

오랫동안 INTERCAL은 INTERCAL 매뉴얼의 종이 복사본으로만 존재했다. 그러나 1990년 유닉스 환경에서 C로 구현되면서 난해한 컴퓨터 언어의 의도적인 디자인에 대한 관심이 높아지는 계기가 되었다.[36]

4. 8. JSFuck

JSFuck은 [, ], (, ), !, + 단 여섯 개의 문자만을 사용하여 JavaScript 코드를 작성하는 난해한 프로그래밍 방식이다. Brainfuck과 달리 JSFuck은 유효한 JavaScript 코드이므로, JSFuck 프로그램은 JavaScript를 해석하는 모든 웹 브라우저나 엔진에서 실행할 수 있다.[23][24] 이베이와 같은 웹사이트에서 크로스 사이트 스크립팅(XSS) 감지 필터를 우회할 수 있는 능력 때문에 여러 번 XSS 공격에 사용되었다.[25]

4. 9. LOLCODE

LOLCODE는 lolcat의 언어를 모방하여 설계된 언어이다.[26] 다음은 "Hello World" 예시이다.

```

HAI

CAN HAS STDIO?

VISIBLE "HAI WORLD!"

KTHXBYE

```

LOLCODE의 의미론(컴퓨터 과학)은 특이하지 않지만, 그 문법은 프로그래밍에서 특이한 예시인 비격식적 언어와 인터넷 슬랭을 나타내는 언어학적 현상으로 묘사되었다.[26]

4. 10. Malbolge

말볼지 (지옥의 8번째 고리에서 이름을 따옴)는 가장 어렵고 난해한 프로그래밍 언어로 설계되었다. 코드는 설계상 자기 수정적이며, 명령어의 효과는 메모리 내에서의 주소에 따라 달라진다.[27] Malbolge는 3진수만 다룰 수 있으며, 프로그램의 의미가 순차적으로 바뀌기 때문에 인간의 손으로는 작성할 수 없다고 여겨진다.

4. 11. Piet

'''Piet'''는 데이비드 모건-마가 설계한 난해한 프로그래밍 언어로, 그 프로그램은 추상 미술과 같은 모양을 한 비트맵이다.[28] 실행은 이미지 주변을 이동하는 "포인터"에 의해 안내되며, 하나의 연속적인 색상 영역에서 다음 영역으로 이동한다. 프로시저는 포인터가 영역을 벗어날 때 수행된다.

동작이 지정된 색상은 20가지가 있으며, 6단계 색상 주기와 3단계 밝기 주기로 정렬된 18가지 "다채로운" 색상과 정렬되지 않은 검은색과 흰색이 있다. "다채로운" 색상을 벗어나 다른 색상으로 들어갈 때, 수행되는 프로시저는 색상과 밝기의 변화 단계 수에 따라 결정된다. 검은색은 들어갈 수 없으며, 포인터가 검은색 영역으로 들어가려고 시도하면 다음 블록을 선택하는 규칙이 변경된다. 가능한 모든 규칙을 시도하면 프로그램이 종료된다. 이미지 경계 밖의 영역도 검은색으로 처리된다. 흰색은 연산을 수행하지 않지만 포인터가 "통과"하도록 한다. 지정된 20가지 색상 이외의 색상의 동작은 컴파일러 또는 인터프리터에 의해 결정된다.[28]

변수는 단일 스택에 부호 있는 정수로 메모리에 저장된다. 대부분의 지정된 프로시저는 해당 스택에 대한 연산을 처리하는 반면, 다른 프로시저는 입/출력과 컴파일 포인터가 이동하는 규칙을 처리한다.[29]

Piet는 네덜란드 화가 피에트 몬드리안의 이름을 따서 명명되었다.[30] 원래 의도했던 이름은 ''Mondrian''이었지만, 이미 오픈 소스 통계 데이터 시각화 시스템에 의해 사용되었다.[28]

4. 12. Shakespeare

셰익스피어 프로그래밍 언어(SPL)는 프로그램을 셰익스피어극처럼 보이도록 설계한 언어이다. 예를 들어, 다음 문은 GOTO-형 문을 통해 도달할 수 있는 프로그램의 지점을 선언한다.

1막: 햄릿의 모욕과 아첨.

4. 13. Unlambda

언랭다는 SKI 콤비네이터 계산법을 기반으로 하지만, 일급 지속과 명령형 I/O(일반적으로 지속을 사용해야 하는 입력 포함)를 결합한 미니멀리스트 함수형 프로그래밍 언어이다.[31]

4. 14. Whitespace

Whitespace는 공백 문자(스페이스, 탭, 개행 문자)만을 사용하며, 다른 모든 문자는 무시하므로 주석으로 사용할 수 있다. 이는 여러 전통적인 언어와는 반대되는 특징인데, 전통적인 언어들은 서로 다른 공백 문자를 구분하지 않고 탭과 스페이스를 동일하게 취급한다. 또한, Whitespace 프로그램을 C와 같은 언어의 소스 코드 안에 숨길 수 있게 해준다.

5. 문화적 맥락

제프 콕스(Geoff Cox)는 난해한 프로그래밍 언어가 "명령과 통제에서 문화적 표현과 거부로 주의를 돌린다"고 평가했으며,[32] 메즈 브리즈(Mez Breeze)의 mezangelle과 같은 코드 예술 및 코드 시와 유사하게 보고 있다.[33] 다니엘 템킨(Daniel Temkin)은 브레인퍽(Brainfuck)을 "인간의 표현과 어셈블리 코드 사이의 경계를 완화하는 것을 거부하고, 이를 통해 우리를 터무니없는 논리의 여정으로 이끈다."[34]라고 묘사하며, 인간의 사고와 컴퓨터 논리 사이의 내재된 갈등을 드러낸다고 보았다. 그는 난해한 프로그래밍 언어 내에서의 프로그래밍을 플럭서스(Fluxus) 운동의 이벤트 스코어 수행에 연결하는데, 여기서 코드 내의 불규칙한 규칙을 실행하는 것이 언어의 관점을 명확하게 한다.[35]

6. 튜링 난관

튜링 난관은 임의의 계산 가능한 기능을 기술할 수 있지만, 그 기술이 비실용적일 정도로 어려운 튜링 완전 프로그래밍 언어를 말한다. 난해한 프로그래밍 언어에 대해 언어 기능을 최소화하려는 경우, 튜링 난관이라고 평가받기도 한다.

참조

[1] 간행물 "Visualisation of Live Code" London 2010
[2] 서적 Software Studies https://mitpress.mit[...] MIT Press 2008
[3] 서적 The New Hacker's Dictionary https://books.google[...] MIT Press
[4] 간행물 The INTERCAL Programming Language Reference Manual https://muppetlabs.c[...] Muppetlabs.com 2023-05-01
[5] 학술지 Interview with Wouter van Oortmerssen https://esoteric.cod[...] 2023-05-01
[6] 서적 Software studies: a lexicon MIT Press 2008
[7] 문서 Esoteric Programming Languages 2015
[8] 웹사이트 Baking a Hello World Cake https://www.mike-wor[...] 2023-05-01
[9] 간행물 A Box, Darkly: Obfuscation, Weird Languages, and Code Aesthetics Copenhagen, Denmark 2005
[10] 서적 The Routledge Companion to Media Studies and Digital Humanities Routledge 2018
[11] 웹사이트 Languages https://catseye.tc/a[...]
[12] 웹사이트 Most functional https://www.ioccc.or[...] The International Obfuscated C Code Contest
[13] 웹사이트 El Brainfuck https://copy.sh/brai[...] 2022-11-30
[14] 웹사이트 "Hello world" in Esoteric Programming Languages? (Esolangs) https://dev.to/jbc7a[...] 2022-12-04
[15] 웹사이트 Weirdest Programming Languages https://www.omnesgro[...] 2022-12-04
[16] 웹사이트 8 Goofy Programming Languages https://www.thecodin[...] 2022-04-27
[17] 웹사이트 10 Most Bizarre Programming Languages, Vol. 2 https://www.hongkiat[...] 2022-12-04
[18] 서적 Advanced Perl programming O'Reilly Media
[19] 웹사이트 Chef https://dangermouse.[...] Self-published 2023-05-01
[20] 웹사이트 Chef - Hello World https://dangermouse.[...] Self-published 2023-05-01
[21] 서적 Strange Code: Esoteric Languages That Make Programming Fun Again No Starch Press 2022
[22] 웹사이트 GolfScript Tutorial http://www.golfscrip[...]
[23] 웹사이트 Bidding on Security https://thedailywtf.[...] 2020-03-02
[24] 웹사이트 Exploring JSF*ck https://alligator.io[...] 2020-03-02
[25] 웹사이트 eBay has no plans to fix "severe" bug that allows malware distribution [Updated] https://arstechnica.[...] 2016-02-03
[26] 학술지 Esoteric programming languages as a state-of-the-art semiotic trend http://dspace.bsu.ed[...] Belgorod State University 2014
[27] 웹사이트 Interview with Ben Olmstead https://esoteric.cod[...] 2021-01-07
[28] 웹사이트 Piet https://dangermouse.[...] 2023-05-01
[29] 서적 Strange Code: Esoteric Languages That Make Programming Fun Again No Starch Press 2022
[30] 문서 2013
[31] 웹사이트 Friday Pathological Programming: Unlambda, or Programming Without Variables http://scienceblogs.[...] ScienceBlogs 2006-08-11
[32] 문서 2013
[33] 웹사이트 The true meaning of esoteric programming languages https://www.apifonic[...] 2023-11-30
[34] 학술지 Glitch && Human/Computer Interaction https://nooart.org/p[...] 2014-01-15
[35] 학술지 brainfuck https://median.newme[...] 2023-05-01
[36] 서적 Software Studies https://mitpress.mit[...] MIT Press
[37] 서적 The New Hacker's Dictionary https://books.google[...] MIT Press
[38] 간행물 The INTERCAL Programming Language Reference Manual http://www.muppetlab[...] Muppetlabs.com 2009-04-24
[39] 웹사이트 Interview with Wouter van Oortmerssen http://esoteric.code[...] 2015-07-01
[40] 문서
[41] 학술지 Glitch && Human/Computer Interaction http://nooart.org/po[...] 2014-01-15
[42] 학술지 brainfuck http://median.s15196[...] 2014-05-06



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com