APL 대 A 대 J 대 K?


78

배열 언어 환경은 매력적이지만 끝이 없을 정도로 혼란 스럽습니다. J 또는 K 또는 APL 또는 A 중 하나를 선택해야하는 이유가 있습니까? 이러한 옵션 중 어느 것도 오픈 소스가 아닌 것 같습니다. 오픈 소스 버전이 있습니까? 나는 내 마음을 넓히는 것을 좋아하지만 여전히 당황합니다.

답변:


135

이 언어들 사이의 차이점은 상대적으로 미묘합니다. APL "proper"는 원래 기호 표기법의 장점과 단점을 가지고 있습니다. (수년에 걸쳐 설정된 심볼에 약간의 변경이 있었지만 모두 원래 비전에 충분히 사실입니다.)

A + 언어는 오픈 소스로 제공됩니다. "클래식"APL에서 크게 벗어나지 만 대부분의 핵심 문자 집합을 유지하는 것과 같습니다. 내 감각은 기술 변화에 따라 최신 상태로 유지되지 않았다는 것입니다. K의 선구자였습니다.

고유 한 APL 문자 집합에서 벗어난 어레이 언어 제품군의 언어에는 J, K 및 Nial이 포함됩니다. Nial은 기호 대신 영어 단어를 사용하며 Q'Nial이라는 오픈 소스 인터프리터가 있습니다. K와 J는 주로 기호에 의존하지만 ASCII 문자 집합에서 가져옵니다. 그러나 단순히 정의를 지정하여 이러한 언어의 기호 대신 단어를 사용할 수 있습니다.

APL 프로그래밍 언어 제품군은 1964 년 IBM 제품으로 APL이 처음 등장한 이래 주로 독점적이었습니다. 독점 어레이 언어는 현재 오픈 소스 대안보다 새로운 기능을 더 많이 지원하고 더 빠르게 진화하는 것으로 보입니다. 모든 경쟁자가 서로 어떻게 경쟁하는지 잘 모르겠지만 Dyalog APL은 확실히 현재 기술로 언어 구현을 촉진하기 위해 적극적으로 노력하고 있습니다. APL2000은 .Net 용 VisualAPL (폐기) 을 포함하여 Unix, Linux 및 Windows 용 제품을 제공합니다 . MicroAPL Ltd는 APLX (은퇴)를 제공합니다 .

K는 더 이상 자체적으로 판매되지 않는 특수 언어입니다. Kx Systems는 대신 Kdb + 데이터베이스와 Q (쿼리) 언어를 마케팅하고 있으며, 둘 다 K로 작성되었습니다. 스트리밍 데이터의 고속 처리를 위해 설계된 강력한 특수 도구입니다. 원래 APL 접근 방식에서 크게 벗어납니다. Kx Systems 제품은 비싸고 사용자는 대부분 금융 분야에서 일합니다.

APL은 Ken Iverson이 구상하고 주로 설계했습니다. 상용 응용 프로그램에서 APL을 적용하고 다듬는 경력을 쌓은 후 그는 수년 동안 불만족 스러웠던 언어의 측면을 수정 한 "합리화 된"개정 작업으로 전환했습니다. 주제에 대한이 새로운 해석을 J라고합니다. J와 APL의 차이점은 J Software 위키의 논문에 스케치되어 있습니다. 눈에 띄는 변경 사항 중 하나는 배열 인덱싱 구문이 제거 된 것입니다. 그러나 가장 큰 특징은 암묵적 형식으로, 프로그램은 인수를 참조하지 않고 함수를 구성하여 작성됩니다. Tacit J는 함수형 프로그래밍 언어에서 볼 수있는 "점없는"스타일과 밀접한 관련이 있지만이 형식이 J 언어의 기본이라는 점에서 다릅니다.

배열 언어를 배우고 자하는 개인에게는 Dyalog APL, APLX, J 및 Q'Nial 중에서 선택하는 것이 좋습니다. Dyalog APL (특히 Windows의 경우) 또는 APLX (특히 Linux의 경우)는 APL 고유의 핵심 상징을 사용하고 APL 커뮤니티 전체와의 강력한 연결을 원하는 사람에게 가장 적합합니다. J는 웹 애플리케이션을 구축하거나 수학 (예 : Project Euler)에 집중하려는 사람들, 특히 강조하는 암묵적 스타일에 매료 된 사람들에게 가장 적합 할 수 있습니다. Q'Nial은 내 우선 순위가 오픈 소스 인 경우 선택하고 싶지만 해당 우선 순위가 활성 OS 커뮤니티의 지원을 기대하는 것을 의미하지 않는 경우에만 선택합니다.


업데이트 : J 7.01은 GPL 3에 따라 오픈 소스 코드와 함께 릴리스 되었습니다 . 또한 K의 변형 인 Kona 가 있습니다. 이로 인해 오픈 소스 어레이 언어에 대한 옵션이 늘어납니다.

Tobia의 업데이트 : GNU APL 은 GPL에서 사용할 수 있습니다. 확장 APL 언어에 대한 최신 게시 된 ISO 표준을 거의 따릅니다. 훌륭한 오픈 소스 APL 구현이며 적극적으로 개발 및 유지 관리되고 있습니다. 다른 흥미로운 구현도 있습니다. 예를 들어 ngn / APL , 놀랍게도 기능이 뛰어나고 CoffeeScript (JavaScript로 컴파일되는)로 작성된 APL의 현대적인 구현입니다. 배열 언어는 2015 년에도 살아 있습니다.

Adám의 업데이트 : J의 최고 구현 자이자 디자이너 중 한 명인 Roger Hui 가 Dyalog에 합류했으며 그의지도 아래 Dyalog APL은 J에서 영감을 얻은 많은 기능을 추가했습니다. 여기에는 암묵적인 함수형 프로그래밍 스타일과 여러 연산자 및 함수가 포함되며, 그 중 많은 부분이 그 과정에서 개선되었습니다. Dyalog APL은 이제 비상업적 인 용도로 무료입니다. 또한 몇 가지 새로운 APL 구현이 나타났습니다. aplwiki.com을 참조하십시오 . 배열 언어는 2020 년에 활기를 띠고 있습니다.


1
때로는 +1만으로는 충분하지 않습니다. 감사합니다, kaleidic!
blinry

1
최근 Dyalog는 Mac OSX 버전도 출시했습니다 -dyalog.com/dyalog/mac-os.htm
firesofmay

1
다른 오픈 소스 APL을 원한다면 ngn-apl도 작동합니다. 하지만 tradfns (으로 묶인 것)는 없습니다 .
Zacharý

12

더 많은 정보를 추가하려면 ...

https://github.com/kevinlawler/konaK 라는 오픈 소스 버전이 Kona 있습니다.

의 경우 q/kdb+평가판이 있습니다. http://kx.com/download/

주요 제한 사항은 2 시간 제한 시간, 32 비트 메모리, 3 개월 라이센스 만료 및 라이센스 자체입니다. 그냥 놀고 무언가를 배우고 싶다면 너무 귀찮아서는 안됩니다.

개인적으로 저는 qKX가 모나 딕 (단일 인수) 동사 K를 영어 단어로 번역하고 @ http://code.kx.com 에 문서가 많이 있기 때문에 가장 사용자 친화적이라는 것을 알았 습니다 . 또한 데이터베이스 시스템은 매우 신중하고 유연합니다.


1
또한 언급 할 수 있습니다 확인을 , NGN / K 및 생산처럼 K.
아담

9

고려할 사항은 연산자 의 어휘 (고차 함수)입니다.

원래 APL 에는 마지막 및 첫 번째 축 감소 (접기) ( f/, f⌿), 마지막 및 첫 번째 축 누적 감소 ( f\, f⍀), 그리고 내부 및 외부 제품 ( f.g, ∘.g) 만 있습니다.

대부분의 확장 된 APL (예 : GNU APL , APLX , APL + Win , APL2 )은 루프 ( ) 및 축 브래킷 사양 ( f[... ]) 만 추가합니다 .

J , 과다 추가 (부사 및 접속사라고 함)를 추가했지만 대괄호 (축과 인덱싱 모두), 각 연산자 (보다 일반적인 순위 연산자 선호) 및 마지막 축 (누적) 감소를 제거했습니다.

현재는 사라진 Sharp APL (및 이후 SAX )은 기존의 마지막 축 연산자와 대괄호 인덱싱을 모두 유지하면서 J의 새로운 연산자를 많이 추가했습니다.

Dyalog APL 은 점차 Sharp APL의 어휘에 접근하고 있지만, Sharp APL에 포함되지 않은 J 전용 연산자도 통합했습니다.

아래 표는 J, Sharp APL 및 Dyalog APL 구성 어휘를 비교합니다. 희미한 텍스트가있는 항목을 적용하려면 두 개의 기호가 필요합니다. 배경이 회색 인 항목은 제안 중입니다. J, Sharp APL 및 Dyalog APL 구성


3

J는 ASCII 문자를 사용하여 입력 및 표시되는 실행 가능한 수학 표기법입니다.

또한 완전한 기능, 객체 지향, 프로그래밍 언어입니다.

J의 JSoftware 구현 (다른 사람은 모릅니다)은 오픈 소스가 아니지만 무료로 사용할 수 있습니다.

엔진이 오픈 소스는 아니지만 사람들이 기여할 수있는 J 코드의 활성 사용자 라이브러리가 있습니다.

J는 광범위하고 간결한 문서 ( http://www.jsoftware.com/help.htm)를 보유 하고 있으며 포럼 회원은 질문이나 문제에 대해 행복하고 신속하게 응답하며 새로운 사용자가보다 진보 된 문제에 대해 집중할 수 있도록 돕고 자합니다.

그런데 오픈 소스 문제에 대해서는 J에 대한 문서 (사양)가 방대하며 이론상 누구나 원한다면 J를 구현하기 위해 오픈 소스 프로젝트를 만들 수 있습니다.


4
J 소스가 마지막 버전 jsoftware.com/source.htm
jpjacobs


3

ELI 는 새로 개발 된 무료로 사용할 수있는 크로스 플랫폼 어레이 프로그래밍 언어입니다. J 및 k와 유사하게 ASCII 문자 세트에 의존합니다. 임시 데이터 유형 및 내장 SQL 하위 집합과 같이 k / q / kdb +에 고유 한 일부 기능을 구현합니다.


0

나는 또한 당혹 스럽지만 (APL은 항상 나를 혼란스럽게했다. 다행히도 내가 마지막으로 시도한 지 20 년이 넘었다) 약간의 검색을 통해 A의 오픈 소스 버전 인 A +를 찾았다.

나는 그것이 당신 (또는 다른 사람)의 요구를 충족시킬 것이라고 생각하지 않습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.