A(프로그래밍 언어)
1. 개요
1960년대 만들어진 프로그래밍 언어. A Programming Language의 약자를 따서 APL이라고도 부른다.
2. 언어의 복잡함
이 언어는 여러 가지 특수문자로 이루어져 이해하기 어렵다. 현재 키보드로는 입력을 못하는 수준. 하지만 그 당시 대기업이었던 IBM이 지원했던 탓에 전용 키보드도 나왔다.
[image]
출처: computerhistory.com
그 복잡성은 악명이 높았는지 이런 시도 있다. (출처)
`Tis the dream of each programmer
Before his life is done
to write three lines of APL
And make the damn thing run.
그것은 모든 프로그래머의 꿈이라네
그의 삶이 다하기 전에
세 줄의 APL 코드를 짜고
그 망할 코드가 실행되게 하는 것
3. 예제
- 가장 기본적인 "Hello World"를 출력하는 코드.
'Hello World'
- 1부터 R까지 모든 소수를 찾는 코드. (출처 : 영문 위키백과)
이 코드는 오른쪽에서부터 왼쪽으로 실행된다.
< 해석 및 실행 순서 >
(~R∊R∘.×R)/R←1↓ιR
< 해석 및 실행 순서 >
- ιR : 1부터 R까지의 정수를 포함하는 벡터를 생성한다. (1, 2, 3, 4, 5, 6)
- 1↓ : 벡터의 첫번째 원소를 버린다. (함수) (2, 3, 4, 5, 6)
- R← : 벡터 R을 새 벡터로 한다. (2, 3, 4, 5, 6)
- / : 이항 감소 연산자로서, 인터프리터는 먼저 왼쪽 피연산자를 실행한다. (괄호 전체)
- ∘.×R : R의 외적 행렬(outer product)을 생성한다.
- ∊R : 'R과 같은 길이의 벡터'를 생성하고 R의 각각의 원소가 외적 행렬에 없는 경우에는 0, 있는 경우에는 1을 입력한다. (0, 0, 1, 0, 1)
- ~R : 백터의 값에 논리 부정 연산자(~)를 적용한다. (1, 1, 0, 1, 0)
- / : 1이 입력된 자리의 R의 원소를 선택한다. (2, 3, 5)
- 행렬 X에 포함된 단어 목록을 단어의 길이에 따라 정렬하는 코드.
X[⍋X+.≠' ';]
4. 현재 상황
2020년대 현재에는 사실상 쓰이지 않고 있다. 현대 프로그래밍 언어에 요구되는 특징들을 갖추고 있지 않으며, 입력에 전용 키보드가 필요할 정도로 특수한 문자 셋을 쓰는 실정도 키워드와 범용 특문을 위주로 사용하는 현대 프로그래밍 언어가 등장하고 나서는 APL을 사장시키는 데 지대한 역할을 했다. 다만 일부 메인프레임, 워크스테이션 등의 특수한 분야에서 여전히 사용되고는 있다.
5. A 언어에서 발전한 언어
벨연구소에서 이 A 언어를 발전시켜 B 언어를 만들었다. 이 B 언어는 C, C++, Java, C##등 많은 언어에 영향을 주었다.
또, 이 언어들과는 별개로 A 언어를 계승한 A+, A# 등이 있다.