APL(프로그래밍 언어)
APL (programming language)![]() | |
패러다임 | 어레이, 기능, 구조, 모듈러 |
---|---|
설계자 | 케네스 E.아이버슨 |
개발자 | 래리 브리드, 딕 라스웰, 로저 무어 외 |
처음 등장한 | 1966년 11월 27일, [1] | 전(
안정된 릴리스 | ISO/IEC 13751:2001/2001년 2월 ; 전( |
타이핑 분야 | 역학 |
플랫폼 | 크로스 플랫폼 |
면허증. | 독자적인 오픈 소스 |
웹 사이트 | aplwiki |
주요 구현 | |
| |
영향을 받다 | |
수학 표기법 | |
영향받은 | |
APL(A Programming Language)[3]은 1960년대에 Kenneth E에 의해 개발된 프로그래밍 언어입니다. 아이버슨.중심 데이터형은 다차원 배열입니다.대부분의 함수 및 연산자를 나타내기 위해 광범위한 특수 그래픽[4] 기호를 사용하여 매우 간결한 코드를 생성합니다.이는 개념 모델링, 스프레드시트, 함수 프로그래밍 [5]및 컴퓨터 수학 [6]패키지의 개발에 중요한 영향을 미쳤다.그것은 또한 몇몇 다른 프로그래밍 [7][8]언어에도 영감을 주었다.
역사
수학 표기법
배열을 조작하기 위한 수학적 표기법은 케네스 E에 의해 개발되었다. 아이버슨, 1957년 하버드 대학교에서 시작됐어요.1960년, 그는 IBM에서 일하기 시작했고 Adin Falkoff와 함께 이 표기법을 개발했고 1962년 [3]그의 책 A Programming Language에 그것을 발표했다.서문에는 다음과 같은 전제가 있습니다.
응용 수학은 다양한 함수의 정확하거나 대략적인 값을 계산하기 위한 명시적 절차의 설계 및 분석과 크게 관련되어 있습니다.이러한 명시적 절차를 알고리즘 또는 프로그램이라고 합니다.프로그램 설명에 효과적인 표기법은 상당한 구문 구조를 나타내기 때문에 프로그래밍 언어라고 불립니다.
이 표기법은 Burroughs B5000 및 스택 메커니즘과 같은 컴퓨터 시스템에 대한 짧은 연구 보고서를 위해 IBM 내부에서 사용되었습니다. 스택 머신 대 레지스터 머신 대 스택 머신에 대한 IBM의 평가는 곧 시작될 것입니다.
Iverson은 또한 1963년에 [9][10]출판될 Fred Brooks와 함께 집필한 책, Automatic Data Processing을 위해 작성된 A Programming Language의 초안에서도 자신의 표기법을 사용했습니다.
1979년 아이버슨은 APL에 [11]대한 그의 업적으로 튜링상을 받았다.
컴퓨터 프로그래밍 언어로 개발
1962년에 Falkoff가 William C와 논의한 후에 완전한 컴퓨터 시스템을 설명하기 위해 표기법을 사용하려는 첫 시도가 일어났다.Carter는 나중에 IBM System/360 제품군이 된 기계에 대한 명령 집합을 표준화하는 작업을 수행했습니다.
1963년 IBM Systems Research Institute에서 일하던 Herbert Hellerman은 IBM 1620 컴퓨터에 표기법의 일부를 구현했으며, 이는 특수 고등학교 과정의 학생들이 급수 합계를 통해 초월 함수를 계산하는 데 사용되었습니다.학생들은 그들의 코드를 헬러맨의 연구실에서 테스트했다.표기법의 일부를 실장하는 것을 Personalized Array Translator(PAT)[12]라고 부릅니다.
1963년에는 Falkoff, Iverson, Edward H. 모두 IBM에서 일하는 Sussenguth Jr.는 IBM System/360 시리즈 기계 아키텍처 및 기능에 대한 공식적인 설명에 이 표기법을 사용했으며, 이는 1964년 IBM Systems Journal에 발표된 논문으로 이어졌습니다.이것이 발표된 후, 연구팀은 컴퓨터 시스템에 표기법을 구현하는 것에 관심을 돌렸다.이 실행의 초점을 맞춘 동기 중 하나는 1964년에 IBM에 의해 인수된 교육 회사인 Science Research Associates에서 새로운 임무를 맡은 John L. Lawrence의 관심이었다.로렌스는 아이버슨과 그의 그룹에게 언어를 [13]교육에서 컴퓨터를 개발하고 사용하는 도구로 사용할 수 있도록 도와달라고 요청했다.
Lawrence M 다음으로. Stanford 대학의 Breed와 Philip S. Abrams는 IBM Research 팀에 합류하여 IBSYS 운영 체제에서 실행되는 IBM 7090 컴퓨터에 대해 수행된 표기법의 일부를 위해 FORTRAN IV에서 프로그래밍된 구현에 대한 이전 작업을 계속했습니다.이 작업은 1965년 말에 완료되었으며 나중에 IVSYS(Iverson 시스템의 경우)로 명명되었습니다.이 구현의 기초는 1966년 스탠포드 대학의 기술 보고서인 "아이버슨 표기법 해석자"에서 상세하게 설명되었으며, 이에 대한 학술적 측면은 Niklaus Wirth에 [14]의해 공식적으로 감독되었습니다.이전의 Hellerman의 PAT 시스템과 마찬가지로, 이 구현에서는 APL 문자 집합은 포함되지 않았지만 함수와 연산자를 위해 특별한 영어 예약어를 사용했습니다.이 시스템은 나중에 시분할 시스템에 맞게 조정되었고, 1966년 11월에 시분할 모드로 실행되는 IBM System/360 Model 50 컴퓨터에 맞게 재프로그래밍되어 [15]IBM에서 내부적으로 사용되었습니다.
하드웨어
음극선관(CRT) 단자가 널리 사용되기 전에 APL을 효과적으로 사용할 수 있는 주요 개발은 모든 특수 APL 문자가 포함된 IBM Selectric 타자기 호환 타이핑 요소의 개발이었습니다.이것은 IBM 1050 및 IBM 2741 터미널과 같은 Selectric 타자기와 타이핑 요소 메커니즘을 사용하는 종이 인쇄 터미널 워크스테이션에서 사용되었습니다.키가 눌렸을 때 입력 및 입력되는 APL 문자를 표시하기 위해 일반 키 위에 키 캡을 배치할 수 있습니다.처음으로 프로그래머는 Iverson의 표기법에 사용되는 적절한 APL 문자를 입력하고 볼 수 있으며 어색한 영어 키워드 표현을 사용하지 않아도 된다.Falkoff와 Iverson은 특별한 APL Selectric 타이핑 요소인 987과 988을 1964년 말에 설계했지만,[16] 그것들을 사용할 수 있는 APL 컴퓨터 시스템은 없었다.Iverson은 APL [17]문자 집합에 IBM Selectric 타이핑 요소를 사용하는 아이디어의 영감으로 Falkoff를 인용했습니다.
많은 APL 기호는 Selectric 타이핑 요소의 APL 문자를 사용하더라도 두 개의 기존 요소 문자를 덮어쓰기하여 입력해야 했습니다.예를 들어 델타(shift-H)와 셰퍼 스트로크(shift-M)에서 생성해야 하는 그레이드업 문자가 있습니다.이는 APL 문자 집합이 입력 요소에서 허용되는 88자보다 훨씬 크기 때문에 필요했는데, 이는 문자가 대문자로 제한되는 경우에도 마찬가지였습니다.
상용화
APL 대화형 로그인 및 APL 작업 공간 생성은 1966년 [16]Larry Breed가 뉴욕 요크타운 하이츠의 Thomas J. Watson Research Center 근처에 있는 IBM Mohanic Labs에서 IBM 1050 단말기를 사용하여 처음 이루어졌습니다.
IBM은 주로 APL을 시장에 도입했습니다.APL의 첫 번째 공개 버전은 IBM 1130용으로 1968년에 출시되었습니다.IBM은 책임이나 [18][19]지원 없이 APL\1130을 무료로 제공했습니다.불과 8,000개의 16비트 단어로 실행되며 전용 1메가 하드 디스크를 사용했습니다.
APL은 1960년대 후반부터 1980년대 초반까지 메인프레임 시분할 시스템에 기반을 마련했는데, 이는 부분적으로 동적 주소 변환 하드웨어가 [20]없는 저사양 시스템에서 여러 사용자를 지원하기 때문입니다.일부 IBM System/370 메인프레임 시스템의 추가적인 성능 향상에는 APL Assist Microcode가 포함되었으며, 이 경우 APL 실행 지원이 프로세서의 펌웨어에 포함되었으며, 이는 상위 레벨 소프트웨어에 의해 완전히 구현되는 것과는 구별됩니다.그 후 1980년대 중후반 적절한 성능의 하드웨어가 마침내 보급되기 시작하면서 많은 사용자들이 개인용 컴퓨터 환경으로 애플리케이션을 이행했습니다.
IBM 360 및 IBM 370 하드웨어용 초기 IBM APL 인터프리터는 호스트 서비스에 의존하는 대신 자체 다중 사용자 관리를 구현하여 자체적인 시간 공유 시스템이었습니다.1966년 IBM에서 사용하기 위해 처음 도입된 APL\360[21][22][23] 시스템은 다중 사용자 인터프리터였습니다.정보를 얻기 위해 운영체제와 프로그래밍 방식으로 통신하고 인터프리터 시스템 변수를 설정하는 기능은 모노딕 연산과 다이애딕 [24]연산을 모두 사용하여 특별한 특권 "I-빔" 기능을 통해 수행되었습니다.
1973년에 IBM은 APL을 출시했다.SV는 동일한 제품의 연속이지만 운영 체제 파일 등 APL 시스템 외부의 설비에 액세스하는 수단으로 공유 변수를 제공했습니다.1970년대 중반, IBM 메인프레임 인터프리터는 IBM 5100 데스크톱 컴퓨터에서 사용할 수 있도록 조정되었습니다. IBM 5100 데스크톱 컴퓨터에는 작은 CRT와 APL 키보드가 탑재되어 있었으며, 당시 대부분의 다른 소형 컴퓨터들은 BASIC만 제공했습니다.1980년대에 VSAPL 프로그램 제품은 Conversational Monitor System(CMS), Time Sharing Option(TSO), VSPC, MUSIC/SP 및 CICS 사용자들에게 널리 사용되었습니다.
1973~1974년 패트릭 E.Hagerty는 Sperry UNIVAC 1100/2200 시리즈 메인프레임 [25]컴퓨터의 1100 라인에 대한 메릴랜드 대학 APL 인터프리터의 구현을 지휘했습니다.그 당시 스페리는 아무것도 가지고 있지 않았다.1974년, 학생 Alan Stebbens는 내부 [26]기능을 구현하는 과제를 할당받았다.Xerox APL은 1975년 6월부터 CP-V를 실행하는 Xerox 560 및 Sigma 6, 7, 9 메인프레임과 Honeywell CP-6에 [27]사용할 수 있게 되었습니다.
1960년대와 1970년대에 IBM APL\360[23] 인터프리터의 수정된 버전을 사용하여 APL 서비스를 판매하는 여러 시분할 회사가 생겨났습니다.북미에서는 IP Sharp Associates, Scientific Time Sharing Corporation(STSC), Time Sharing Resources(TSR) 및 The Computer Company(TCC)가 더 잘 알려져 있습니다.CompuServe는 1978년 DEC의 KI 및 KL 36비트 머신에서 동작하는 Digital Equipment Corp와 Carnegie Mellon의 수정 버전을 기반으로 한 APL Interpreter로 시장에 진출했습니다.CompuServe의 APL은 상용 시장과 소비자 정보 서비스 모두에서 사용할 수 있었습니다.1980년대 중반에는 IBM 4300과 같은 저렴한 메인프레임과 개인용 컴퓨터가 등장하면서 타임셰어링 산업은 거의 사라졌습니다.
Sharp APL은 IP Sharp Associates에서 1960년대에 시분할 서비스로 처음 제공되었고, 1979년경부터 프로그램 제품으로 제공되었습니다.Sharp APL은 패키지(하나 이상의 개체를 단일 변수에 넣는 기능), 파일 시스템, 중첩된 배열 및 공유 변수와 같은 많은 언어 확장자를 가진 고급 APL 구현입니다.
APL 인터프리터는 다른 메인프레임 및 미니컴퓨터 제조업체에서도 구할 수 있었습니다.특히 Burroughs, Control Data Corporation(CDC), Data General, DEC(Digital Equipment Corporation), Harris, Hewlett-Packard(HP), Siemens, Xerox 등입니다.
시러큐스 대학의 Garth Foster는 뉴욕 블루 마운틴 레이크에 있는 시러큐스 Minnowbrook Conference Center에서 APL 구현자 커뮤니티의 정기 회의를 후원했습니다.그 후, Eugene McDonnell은 캘리포니아 몬테레이 근처의 Asilomar Conference Grounds와 캘리포니아 왓슨빌 근처의 Pazaro Dunes에서 유사한 회의를 조직했습니다.SIGAPL 특별 이익 단체는 APL [28]커뮤니티를 계속 지원하고 있습니다.
마이크로컴퓨터
1970년대 중반부터 사용 가능하게 된 마이크로컴퓨터에서 BASIC은 지배적인 프로그래밍 [29]언어가 되었습니다.그러나 일부 마이크로컴퓨터는 대신 APL을 제공하고 있습니다.첫 번째는 1974년에[30][31] 출시되어 주로 교육에 [32]사용되었던 인텔8008 기반의 MCM/70입니다.이 시기의 또 다른 기계는 1977년에 출시된 비디오브레인 패밀리 컴퓨터였는데, APL/[33]S라는 APL 사투리와 함께 공급되었다.
1981년에 도입된 코모도어 슈퍼PET에는 [34]워털루 대학에서 개발한 APL 통역기가 포함되어 있습니다.
1976년 빌 게이츠는 취미생활자에게 보내는 공개 서한에서 마이크로소프트사가 인텔 8080과 모토로라 6800에 APL을 구현하고 있지만 소프트웨어 [35]불법복제로 인해 취미생활자가 이용할 수 있는 동기는 거의 없다고 주장했다.발매된 적이 없어요.
APL2
1980년대 초부터 IBM APL 개발은 Jim Brown의 주도로 새로운 버전의 APL 언어를 구현했습니다. 여기에는 어레이에 다른 어레이를 포함할 수 있는 중첩된 어레이의 개념과 중첩된 어레이를 프로그램 워크플로우에 쉽게 통합할 수 있는 새로운 언어 기능이 포함되어 있습니다.Ken Iverson은 더 이상 APL 언어 개발을 통제하지 않고 IBM을 떠나 IP. P. Sharp Associates에 입사했으며, 여기서 그의 주요 업적 중 하나는 Sharp APL의 진화를 자신의 [36][37][38]비전에 더 부합하도록 지시한 것입니다.APL2는 1984년에 [39]CMS 및 TSO용으로 처음 출시되었습니다.APL2 Workstation 에디션(Windows, OS/2, AIX, Linux 및 Solaris)은 나중에 [40][41]출시되었습니다.
다른 벤더가 새로운 하드웨어, 특히 Unix 기반 마이크로컴퓨터를 위한 APL 인터프리터를 개발하느라 바빴기 때문에, APL2는 거의 항상 새로운 APL 인터프리터 개발에 선택되는 표준이었습니다.오늘날에도 대부분의 APL 벤더 또는 사용자는 APL2 호환성을 이들 [42][43]제품의 세일즈 포인트로 꼽고 있습니다.IBM은 문제 해결, 시스템 설계, 프로토타이핑, 엔지니어링 및 과학 계산, 전문가 시스템,[44] 수학 및 기타 과목 교육, 시각화 및 데이터베이스 액세스를 [45]위한 사용을 인용합니다.
최신 구현
APLX, Dyalog 등에 의한 APL의 다양한 구현에는 객체 지향 프로그래밍의 확장, 의 지원이 포함됩니다.NET Framework, XML 배열 변환 프리미티브, 그래프, 운영 체제 인터페이스 및 람다 미적분 표현식.
파생 언어
APL은 다음과 [citation needed]같은 언어의 기초를 형성하고 있습니다.
- A 및 A+, 대체 APL, 그래픽 확장자를 가진 후자.
- 기능 프로그래밍 언어인 FP.
- Ivy는 Rob Pike가 개발한 APL과 유사한 언어의 인터프리터이며 ASCII를 [46]입력으로 사용합니다.
- J는 Iverson에 의해 설계되었으며 특수 [7]기호 대신 ASCII와 함께 Digraph를 사용합니다.
- K는 Arthur [8]Whitney에 의해 개발된 APL의 독점적 변형입니다.
- APL의 [citation needed]소련 확장판인 LYAPAS.
- 수치 계산 [6]도구인 MATLAB.
- Nial, 기능적 프로그래밍 표기법을 가진 고급 배열 프로그래밍 언어입니다.
- Polymorphic Programming Language는 유사한 기본 언어를 사용하는 인터랙티브하고 확장 가능한 언어입니다.
- S는 통계 프로그래밍 언어(일반적으로 R로 알려진 오픈소스 버전에서 볼 수 있습니다)입니다.
- Speakasy는 수치 컴퓨팅 인터랙티브 환경입니다.
- 매스매티카의 [47]프로그래밍 언어인 울프람 언어.
언어 특성
문자 집합
APL은 독특한 비표준 문자 집합을 선택했다는 점에서 비판과 찬사를 받아왔습니다.그것을 배우는 몇몇 사람들은 열렬한 지지자가 된다.1960년대와 1970년대에는 APL 문자 세트를 재현할 수 있는 단말 장치나 디스플레이가 거의 없었습니다.가장 인기 있는 것은 특수 APL 유형 요소와 함께 사용되는 IBM Selectric 인쇄 메커니즘을 사용했습니다.초기 APL 회선 단말기 중 하나(전체 화면이 아닌 회선 모드만 작동)는 Texas Instruments TI Model 745(c.1977년)로[48], 반이중 및 전이중 통신 모드를 특징으로 하며, APL 시분할 서비스 또는 원격 메인프레임과 상호 작용하여 RJE라고 불리는 원격 컴퓨터 작업을 실행하기 위해 사용되었습니다.
시간이 지남에 따라 고품질 그래픽 디스플레이, 인쇄 장치 및 Unicode 지원의 보편적 사용으로 APL 문자 글꼴 문제가 크게 해소되었습니다.그러나 APL 문자를 입력하려면 입력 방식 편집기, 키보드 매핑, 가상/온스크린 APL 기호 [49][50]세트 또는 쉽게 참조할 수 있는 인쇄된 키보드 카드를 사용해야 합니다.이는 다른 프로그래밍 [51][52][53]언어에 익숙한 초보자들로 하여금 좌절감을 느끼게 할 수 있습니다.다른 프로그래밍 언어에 대한 사전 경험이 없는 초보자들로, 고등학생들을 대상으로 한 연구는 APL 문자를 타이핑하고 사용하는 것이 학생들에게 어떠한 측정 가능한 [54]방법으로도 방해가 되지 않는다는 것을 발견했다.
APL을 방어하기 위해 입력하는 데 필요한 문자 수가 줄어들고 시간이 지남에 따라 키보드 매핑이 기억됩니다.특수한 [55]APL 키보드도 현재 제조되어 사용되고 있으며 Microsoft Windows와 같은 운영체제용 글꼴도 무료로 다운로드 할 수 있습니다.보고되는 생산성 향상은 공통 [citation needed]태스크에 대한 상당한 수의 관용구는 말할 것도 없고 기호, 의미론, 키보드 매핑을 암기할 가치가 있는 언어로 작업하는 데 충분한 시간을 보낸다고 가정합니다.
설계.
기존의 구조화된 프로그래밍 언어와는 달리, APL 코드는 일반적으로 단일 또는 이중 함수와 [57]배열에[56] 작용하는 연산자의 체인으로 구조화됩니다.APL에는 단일 기호 또는 몇 개의 기호 조합으로 표시되는 많은 비표준 원시 요소(함수 및 연산자)가 있습니다.모든 프리미티브는 동일한 우선순위를 가지도록 정의되어 있으며 항상 오른쪽에 관련지어집니다.따라서 APL은 오른쪽에서 왼쪽으로 읽히거나 가장 잘 이해됩니다.
초기 APL c.구현(1970년 정도)에는 다음과 같은 프로그래밍 루프 흐름 제어 구조가 없었습니다.do
또는while
루프 및if-then-else
구성.대신 어레이 연산을 사용했고, 하나의 스테이트먼트에서 전체 어레이에 대해 연산을 수행할 수 있었기 때문에 구조화된 프로그래밍 구조를 사용할 필요가 거의 없었습니다.예를 들어,iota
기능하다ι
는 for-loop 반복을 대체할 수 있습니다.스칼라 양의 정수에 적용하면 1차원 배열(벡터), 1 2 3 ...N. APL의 최근 구현에는 일반적으로 포괄적인 제어 구조가 포함되어 있어 데이터 구조와 프로그램 제어 흐름이 명확하고 깨끗하게 분리될 수 있다.
APL 환경을 워크스페이스라고 합니다.워크스페이스에서 사용자는 프로그램 및 데이터를 정의할 수 있습니다.즉, 데이터 값은 프로그램 외부에 존재하며 사용자는 프로그램을 [58]정의하지 않고도 데이터를 조작할 수 있습니다.다음 예제에서는 APL 인터프리터가 사용자의 입력을 대기하기 전에 먼저 6칸을 입력합니다.자체 출력은 열 1에서 시작합니다.
n ← 4 5 6 7 | 값의 벡터 {4 5 6 7}을(를) 변수에 할당합니다.n , 어레이 작성 조작.동등하지만 보다 간결한 APL 표현은 다음과 같습니다.n ← 3 + ⍳4 . 배열에 여러 개의 값이 저장됩니다.n 형식 루프 또는 제어 흐름 언어 없이 실행되는 동작입니다. |
n 4 5 6 7 | 의 내용을 표시하다n , 현재 배열 또는 벡터입니다. |
n+4 8 9 10 11 | 이제 4가 벡터의 모든 요소에 추가됩니다.n 4소문자 벡터 {8 9 10 11}을 생성합니다.위와 같이 식 값이 변수에 할당되어 있지 않기 때문에 APL의 인터프리터는 결과를 표시합니다. ← ). |
+/n 22 | APL은 벡터의 성분 합계를 표시합니다.n ,예.,22 (= 4 + 5 + 6 + 7) 매우 간결한 표기법 사용: +/를 "+, over..."로 읽고 약간의 변경은 "filter, over..."가 됩니다.." |
m ← +/3+⍳4 m 22 | APL은 식을 오른쪽에서 왼쪽으로 평가한다는 점에 유의하여 이들 연산을 하나의 스테이트먼트로 조합할 수 있습니다.첫 번째입니다.⍳4 어레이를 만듭니다.[1,2,3,4] 각 컴포넌트에 3을 더하면 합계가 되고 결과가 변수에 저장됩니다.m (마지막으로 표시됩니다). 일반 수학 표기법에서는 i ( + ){ m=\ _과 같다.수학식은 오른쪽에서 왼쪽으로 읽거나 평가되지 않습니다. |
사용자는 워크스페이스를 모든 값, 프로그램 및 실행 상태와 함께 저장할 수 있습니다.
APL은 비 ASC 세트를 사용합니다.II 기호, 이것은 전통적인 산술 및 대수 표기법의 확장입니다.단일 명령에 대한 단일 문자 이름을 가진 다중 데이터(SIMD) 벡터 함수는 APL이 Conway의 Game of Life를 코드 [59]한 줄로 계산하는 것과 같은 데이터 변환을 위한 알고리즘을 콤팩트하게 공식화할 수 있는 한 가지 방법입니다.APL의 거의 모든 버전에서 이론적으로 계산 가능한 함수를 하나의 식,[citation needed] 즉 코드 한 줄로 표현할 수 있습니다.
특이한 문자 집합 때문에 많은 프로그래머들은 APL 키톱이 있는 특수 키보드를 사용하여 APL [60]코드를 작성합니다.ASCII [61]문자만을 사용해 APL 코드를 작성하는 방법은 다양하지만, 실제로는 거의 행해지지 않는다(이는 생각의 도구로서의 표기법에 관한 아이버슨의 논제를 뒷받침한다고 생각될 수 있다).[62]최신의 실장에서는, 표준 키보드 레이아웃을 사용하고 있는 경우가 대부분이지만, ASC 이외의 시스템에 액세스 하기 위한 특수한 매핑 또는 입력 방식 에디터를 사용하고 있습니다.II 문자지금까지 APL 글꼴은 대문자 이탤릭체 알파벳 문자, 직립 숫자 및 기호로 구분되어 왔습니다.대부분의 벤더는 커스텀 글꼴로 APL 문자 세트를 계속 표시합니다.
APL의[who?] 지지자들은 소위 쓰기 전용 코드(잘못 쓰여지고 거의 이해할 수 없는 코드)의 예는 거의 항상 잘못된 프로그래밍 연습이나 초보적인 실수의 예시이며, 이는 어느 언어에서나 발생할 수 있다고 주장한다.지지자들은 또한 기존의 컴퓨터 언어보다 APL을 사용하는 것이 훨씬 더 생산적이며, 다른 [citation needed]기술을 사용하는 것보다 훨씬 적은 시간과 적은 프로그래머로 작업 소프트웨어를 구현할 수 있다고 주장한다.
또한 그들은 APL이 콤팩트하고 간결하기 때문에 코드 줄 수를 크게 줄일 수 있기 때문에 대규모 소프트웨어 개발 및 복잡성에 적합하다고 주장할 수 있다.많은 APL 지지자들과 실무자들은 또한 COBOL과 Java와 같은 표준 프로그래밍 언어를 비교적 지루하다고 본다.APL은 종종 거래 [63][64][65][66]시스템과 같이 시장 투입 시간이 중요한 곳에서 발견됩니다.
용어.
APL은 함수와 [56][67]연산자를 명확하게 구분합니다.함수는 배열(변수 또는 상수 또는 식)을 인수로 사용하고 결과로 배열을 반환합니다.연산자(고차 함수와 유사)는 함수 또는 배열을 인수로 하여 관련 함수를 도출합니다.예를 들어 가산함수에 축소연산을 적용하여 가산함수를 도출한다.최대 함수(2개의 숫자 중 큰 숫자를 반환함)에 동일한 축소 연산자를 적용하면 숫자의 그룹(벡터) 중 가장 큰 값을 반환하는 함수를 얻을 수 있습니다.J 언어에서 Iverson은 동사라는 용어가 함수, 부사 또는 접속사라는 용어로 대체되었다.
또한 APL은 언어에 내장되어 기호 또는 기호의 고정 조합으로 표시되는 특징을 원시 요소로 식별합니다.대부분의 원시 요소는 함수 또는 연산자입니다.APL의 코딩은 주로 비주요 함수 및 (APL의 일부 버전에서는) 연산자를 쓰는 프로세스입니다.그러나 일부 기본 요소는 함수도 연산자도 아닌 가장 눈에 띄는 할당으로 간주됩니다.
APL 문헌에서 사용되는 단어들은 수학과 컴퓨터 과학의 일반성 모두에서 다른 의미를 가지고 있다.
용어 | 묘사 |
---|---|
기능. | 0, 1(오른쪽) 또는 2(왼쪽과 오른쪽) 인수를 사용하여 스칼라, 배열 또는 더 복잡한 구조를 나타내며 마찬가지로 복잡한 결과를 반환할 수 있습니다.함수는 다음과 같습니다. |
배열 | 각 항목이 원시 스칼라 기준 또는 다른 [69]배열인 행-장차순으로 0 이상의 직교 치수의 데이터 값 개체. |
영점 | 어떤 주장도 받아들이지 않거나 요구하지 않는, 무효[70] |
일변도의 | 하나의 인수만 필요합니다. 함수의 경우 오른쪽, 연산자의 경우 왼쪽, 단항[70] |
쌍방향의 | 왼쪽과 오른쪽 인수를 모두 필요로 하는 바이너리[70] |
양면적인 또는 일면적인 | 단항 또는 쌍항문맥에서 사용할 수 있으며, 그 왼쪽 논거를 생략할[68] 수 있다 |
교환입니다. | 하나 또는 두 개의 함수(왼쪽 및 오른쪽) 또는 배열 값 인수(오퍼랜드)를 사용하고 함수를 파생하는 연산 또는 매핑.연산자는 다음과 같습니다. |
구문
APL은 함수, 연산자 및 구문의 명시적 표현을 가지고 있기 때문에 확장 설비의 명확하고 명시적인 문장과 이를 [71]실험하기 위한 도구를 제공합니다.
예
안녕 세계
「Hello, world」라고 표시됩니다.
'안녕, 세상아'
APL의 설계 테마는 대부분의 다른 프로그래밍 언어에서 구문 오류를 발생시키는 경우에 따라 기본 액션을 정의하는 것입니다.
위의 'Hello, world constant' 문자열이 표시됩니다. 이는 액션이 명시적으로 지정되지 않은 식(예: 할당, 함수 매개 변수)에 대한 기본 액션이 표시되기 때문입니다.
지수화
이 테마의 또 다른 예는 APL에서의 지수화는 다음과 같이 기술되는 것입니다.2*3
이는 2를 3으로 곱하는 것을 나타냅니다(이것은 다음과 같습니다).2^3
다른 언어에도 대응하고.2**3
FORTRAN 및 Python)에 있습니다.많은 언어에서 사용*
곱셈을 나타내다2*3
단, APL에서는2×3
단, 베이스가 지정되어 있지 않은 경우(문구와 같이)*3
APL 또는^3
다른 언어에서는) 대부분의 프로그래밍 언어는 이것을 구문 오류로 간주됩니다.그러나 APL은 결측 기저값을 자연 로그 상수 e로 가정하고 다음과 같이 해석합니다.*3
~하듯이2.71828*3
.
간단한 통계
라고 가정해 보자X
는 숫자의 배열입니다.그리고나서(+/X)÷⍴X
평균치를 제시합니다.오른쪽에서 왼쪽으로 읽으면서⍴X
X의 요소 수를 나타냅니다.÷
는 쌍방향 연산자이며 왼쪽의 용어도 필요합니다.그렇지 않으면 X가 찍히기 때문에 괄호로 둘러싸여 있다(합계가 다음과 같다).X÷⍴X
: X의 각 요소를 X의 요소 수로 나눈 값) 및+/X
X의 요소의 합계를 나타냅니다.이를 바탕으로 다음 식은 표준 편차를 계산합니다.
((+/((X - (+/X)÷⍴X)*2))÷⍴X)*0.5
당연히 이 표현은 매번 다시 쓰는 것이 아니라 반복적인 사용을 위한 함수로 정의된다.또한 할당은 연산자이므로 식 내에 표시될 수 있으므로 다음에서 적절한 값을 T, AV 및 SD에 배치할 수 있습니다.
SD←((+/((X - AV←(T←+/X)÷⍴X)*2))÷⍴X)*0.5
복권 번호 6개를 고르세요.
다음 즉시 모드 표현식은 1 ~40 범위의 6개의 의사 랜덤 정수, 보증된 비반복 정수를 포함한 일반적인 선택 6개의 추첨 번호 세트를 생성하여 오름차순으로 정렬하여 표시합니다.
x[⍋x←6?40]
새로운 APLer에는 복잡해 보일 수 있지만, 위의 내용은 간결하게 많은 것을 합니다.다음 APL 기능(원본[72] 및 글리프라고도[73] 함)을 결합합니다.
- 가장 먼저 실행되는 것(APL은 가장 오른쪽에서 가장 왼쪽으로 실행됨)은 쌍방향 함수입니다.
?
(이름부여)deal
diadic의 경우)는 1 ~ 지정된 최대값(이 경우 오른쪽 인수 40)의 랜덤 정수로 구성된 벡터를 반환합니다.이 경우 최대 δ 벡터 길이가 비표준이 됩니다.따라서 1~40 범위의 [74]랜덤 정수를 6개 생성/생성합니다. - 다음으로 이 벡터가 할당됩니다(
←
)를 변수와 비교합니다.x
나중에 필요하기 때문입니다. - 그런 다음 이 벡터는 모나디치에 의해 오름차순으로 정렬됩니다.
⍋
이 함수는 오른쪽의 모든 것을 올바른 인수로 하여 다음 언밸런스 근접 또는 근접 근접 인수로 지정합니다.의 결과⍋
인수를 오름차순으로 하는 인덱스입니다. - 그 후, 의 출력입니다.
⍋
변수 인덱스에 사용됩니다.x
이 목적을 위해 미리 저장해 두었기 때문에 해당 항목을 오름차순으로 선택합니다.
가장 왼쪽 x에는 결과를 어떻게 처리해야 하는지 알려주는 함수가 없기 때문에 APL은 이를 위한 명시적 지시 없이 디스플레이에 출력합니다(공백으로 구분된 한 줄에 표시).
?
라고 불리는 단수 등가물을 가지고 있다.roll
1과 그 유일한 오퍼랜드(오른쪽) 사이의 임의의 정수를 1개만 반환합니다.따라서 롤플레잉 게임 프로그램은 다음과 같은 표현을 사용할 수 있습니다.?20
20면 주사위를 굴릴 수 있습니다.
소수
다음 식은 1부터 R까지의 모든 소수를 찾습니다.시공간에서 계산의 복잡도는O2)\O(빅 O 표기)입니다.
(~R∊R∘.×R)/R←1↓⍳R
오른쪽에서 왼쪽으로 실행된다는 것은 다음을 의미합니다.
- 이오타
⍳
에서 정수를 포함하는 벡터를 만듭니다.1
로.R
(만일 경우)R= 6
프로그램을 시작할 때⍳R
이1 2 3 4 5 6
) - 이 벡터의 첫 번째 요소를 삭제합니다.
↓
기능) 즉,1
.그렇게1↓⍳R
이2 3 4 5 6
- 세트
R
새로운 벡터(←
, 할당 프리미티브) 즉,2 3 4 5 6
- 그
/
replicate 연산자는 dynadic(반복)이며 인터프리터는 먼저 왼쪽 인수(완전 괄호 안)를 평가합니다. - 외부 제품 생성
R
곱한R
즉, R에 의한 R의 곱셈표인 매트릭스)°.×
오퍼레이터), 즉,
4 | 6 | 8 | 10 | 12 |
6 | 9 | 12 | 15 | 18 |
8 | 12 | 16 | 20 | 24 |
10 | 15 | 20 | 25 | 30 |
12 | 18 | 24 | 30 | 36 |
- 같은 길이의 벡터를 작성합니다.
R
와 함께1
대응하는 번호가 있는 각 장소에서R
외부 제품 매트릭스(∈
, 또는 엡실론 연산자의 포함 또는 요소를 설정합니다. 즉,0 0 1 0 1
- 벡터의 값을 논리적으로 부정(비정)합니다(0을 1로, 1을 0으로 변경).
∼
(논리 없음 또는 Tilde 연산자), 즉,1 1 0 1 0
- 에서 항목을 선택합니다.
R
대응하는 요소가 있는 경우1
(/
복제 연산자), 즉,2 3 5
(주의: 이것은 APL 원점이 1이라고 가정합니다. 즉, 인덱스는 1로 시작합니다.APL은 원점으로0 을 사용하도록 설정할 수 있기 때문에,ι6
이0 1 2 3 4 5
(일부 계산에 편리합니다.)
정렬
다음 식은 행렬 X에 저장된 단어 목록을 단어 길이에 따라 정렬합니다.
X[⍋X+.≠' ';]
게임 오브 라이프
Dyalog APL로 [75][76]작성된 다음 함수 "life"는 부울 매트릭스를 사용하여 Conway의 Game of Life에 따라 신세대를 계산합니다.이것은 매우 적은 코드로 복잡한 알고리즘을 구현하는 APL의 힘을 보여주지만, 이를 이해하려면 (많은 언어에서 같은 프로그램이 그렇듯이) APL에 대한 고급 지식이 필요합니다.
인생 ← {⊃1 ⍵ ∨.∧ 3 4 = +/ +⌿ ¯1 0 1 ∘.⊖ ¯1 0 1 ⌽¨ ⊂⍵}
HTML 태그 삭제
다음 예에서는 Dyalog에서도 첫 번째 행이 변수에 HTML 코드를 할당합니다.txt
다음으로 APL식을 사용하여 모든 HTML 태그(설명)를 삭제합니다.
txt←'<body><p>강조된 텍스트입니다.</p> </body> </body> </body> ' {⍵ /⍨ ~{⍵∨≠\⍵}⍵∊'<>'} txt 이것. 이 강조된 본문.
명명
APL은 Iverson의 책 A Programming [3]Language의 이니셜에서 유래했습니다.이 책은 Iverson의 수학적 표기법을 기술하고 있지만, 이 기사에 기술된 구현된 프로그래밍 언어가 아닙니다.이 이름은 APL\360부터 시작하는 실제 구현에만 사용됩니다.
Adin Falkoff는 1966년 IBM에서 APL\360을 구현하면서 다음과 같은 이름을 만들었습니다.
세 학생이 함께 사무실을 지날 때 말다툼하는 소리가 들렸다.문틈에 머리를 들이밀자 에릭이 물었습니다. "우리가 사용하는 표기법이 APL이라고 부르는 것을 모두가 알고 있다는 것은 사실이지 않나요?" 저는 그런 표기법을 들어본 적이 없다고 고백해서 그를 실망시켜야 했습니다.그는 어디서 그것이 잘 알려져 있다는 생각을 했을까?누가 그렇게 부르기로 결정했을까요?사실, 왜 그렇게 불러야 했을까요?꽤 오래 후에 나는 그것이 어떻게 명명되었는지 들었다.1966년 6월에 구현 작업이 시작되었을 때 문서화 작업도 시작되었습니다."그것"에 대해 써야 했을 때, Falkoff와 Iverson은 "그것"에 이름을 붙여야 한다는 것을 깨달은 것 같습니다.그 당시에는 여러 가지 제안이 있었을지도 모르지만, 저는 두 가지밖에 듣지 못했습니다.시카고의 SRA에서 표기법을 사용하여 교육 자료를 개발하고 있던 한 그룹은 "Mathlab"이라는 이름을 선호했다.이것은 유행하지 않았다.또 다른 제안은 "Iverson's Better Math"라고 부르고 나서 사람들이 적절한 약자를 만들도록 하는 것이었다.이것은 우스운 것으로 여겨졌다.
그러던 어느 날 Adin Falkoff가 Ken의 사무실로 걸어 들어가 "A Programming Language"라고 칠판에 쓰고 그 아래에는 "APL"이라는 약자를 썼다.이렇게 탄생했다.그로부터 일주일 정도 지나서 에릭 아이버슨이 제게 질문을 던졌습니다. 당시 이름은 아직 IBM 리서치에서 IBM Mohanic까지 13마일이나 되는 타코닉 파크웨이에서 찾을 수 없었습니다.
--
APL은 어레이 프로그래밍 언어 또는 어레이 처리 [78]언어로 다시 해석될 수 있으며, 따라서 APL이 백로니어로 변환됩니다.
로고
APL 벤더간의 협력은 항상 있어, 1969년부터 [79]2010년까지 정기적으로 공동 회의가 개최되고 있다.이러한 컨퍼런스에서 APL 모티브나 벤더 로고 컬렉션을 특징으로 하는 APL 상품이 배포되는 경우가 많았다.공통점은 사과(애플과 APL의 발음 유사성에 대한 말장난)와 코드 조각이었다.⍺*⎕
APL 수정자 키를 누르고 "APL"을 입력할 때 기존의 APL 키보드 레이아웃에서 생성되는 기호입니다.
이러한 커뮤니티의 노력에도 불구하고 프로그래밍 언어의 범용 벤더에 구애받지 않는 로고는 등장하지 않았습니다.인기 있는 프로그래밍 언어들이 점점 더 눈에 띄는 로고를 확립하고,[80] Fortran이 2020년에 로고를 획득함에 따라, 영국 APL 협회는 2021년 하반기에 APL용 로고를 설립하기 위한 캠페인을 시작했고, 커뮤니티 선거와 여러 차례의 피드백을 [81]거쳐 2022년 5월에 로고를 선택했습니다.
사용하다
APL은 금융 및 보험 애플리케이션,[82] 인공지능,[83][84] 뉴럴[85] 네트워크, [86]로보틱스 등 다양한 용도로 사용됩니다.APL은 프로그래밍 [87]언어가 아닌 계산 도구라는 주장이 제기되어 왔습니다. APL의 상징성과 배열 [citation needed]기능은 컴퓨터 프로그래머의 기술이 없거나 필요한 도메인 전문가와[88] 데이터 과학자들에게 인기를 끌고 있습니다.
APL은 이미지 조작과 컴퓨터 애니메이션에 매우 적합합니다.그래픽 변환은 매트릭스 곱셈으로 인코딩할 수 있습니다.최초의 상업용 컴퓨터 그래픽 회사 중 하나인 Digital Effects는 Visions라는 이름의 APL 그래픽 제품을 생산했는데, 이 제품은 1982년 영화 Tron의 [89]텔레비전 광고와 애니메이션을 만드는 데 사용되었다.후에 Stormwind 보트 시뮬레이터는 APL을 사용하여 핵심 로직, 렌더링 파이프라인 미들웨어 및 물리 [90]엔진의 주요 부분에 대한 인터페이스를 구현합니다.
오늘날 APL은 투자 관리,[82] 자산 관리,[91] 의료,[92] DNA 프로파일링 [93][94]등 다양한 상업 및 과학 응용 분야에서 취미 생활자에 [95]의해 여전히 사용되고 있습니다.
주목할 만한 구현
APL\360
인식 가능한 APL 기호를 사용하여 APL을 최초로 구현한 것은 IBM System/360에서 실행되었으며 1966년 11월에[1] 완료되었지만 IBM [39]내에서만 사용되었습니다.1973년, 그 실시자인 Larry Breed, Dick Lathwell, 및 Roger Moore는, ACM(Association for Computing Machine)으로부터 그레이스 머레이 호퍼상을 수상했습니다."인터랙티브 [96][97][98]시스템의 단순성, 효율성, 신뢰성 및 응답 시간에 대한 새로운 표준을 수립하여 APL\360의 설계 및 구현에 대한 그들의 노력에 대한 평가"가 주어졌다.
1975년 IBM 5100 마이크로컴퓨터는 APL\360을[99] 컴퓨터에 내장된 ROM 기반 인터프리터 언어 2개 중 하나로 제공하고 해당 언어에 [100]사용되는 모든 특수 기호를 지원하는 키보드와 디스플레이를 갖추었습니다.
APL\360의 중요한 발전에는 CMS/APL이 포함되어 있으며, CMS와 APLSV의 가상 스토리지 기능을 활용하여 공유 변수, 시스템 변수 및 시스템 기능을 도입했습니다.이후 IBM System/370 및 VSPC 플랫폼으로 포팅되어 1983년 최종 출시되었으며 이후 APL2로 [39]대체되었습니다.
APL\1130
1968년, APL\1130은 IBM이 IBM 1130용으로 개발한 최초의 공개 APL [101]시스템이 되었습니다.이는 IBM이 [102]출시한 IBM Type-II 라이브러리 소프트웨어 중 가장 인기 있는 소프트웨어가 되었습니다.
APL*Plus 및 Sharp APL
APL*Plus 및 Sharp APL은 APL\360 버전으로 데이터 포맷 및 외부 파일에 APL 어레이를 저장하는 기능 등 비즈니스 지향 확장 기능을 추가합니다.이들은 IBM APL 360 개발팀의 다양한 [103]구성원을 고용하여 두 회사가 공동 개발했습니다.
두 회사는 1964년 Ian Sharp, Roger Moore 등에 의해 설립된 APL 360 서비스 회사인 IPSA(IP. P. Sharp Associates)와 1969년 Lawrence Brid 등에 의해 설립된 시분할 및 컨설팅 서비스 회사인 STSC입니다.두 회사는 APL*Plus를 공동 개발한 이후 계속 협력해 왔지만 APL*Plus와 Sharp APL로 별도로 개발했습니다.STSC는 APL*Plus를 VAX 11,[104] PC 및 UNIX용 버전으로 많은 플랫폼에 포팅했습니다.한편 IPSA는 PC의 출시에 대해 다른 접근방식을 취하여 추가 PC-XT/360 하드웨어를 사용하여 이 플랫폼에서 샤프 APL을 사용할 수 있도록 했습니다.1993년 솔리톤사는 샤프 APL을 지원하기 위해 설립됐으며 샤프 APL을 유닉스용 샤프 APL(Sharp APL)로 발전시켰다.2018년 현재[update] APL*Plus는 APL2000 APL+Win으로 계속 운영되고 있습니다.
1985년에는 STSC의 Ian Sharp과 Dan Dyer가 Kenneth E를 공동 수상했습니다. APL에 대한 탁월한 공헌에 대한 [105]Iverson Award.
APL2
APL2는 1971년부터 개발되어 1984년에 처음 출시된 IBM이 APL을 재실행한 것입니다.언어에 많은 추가 기능을 제공하며, 가장 주목할 만한 것은 네스트된(비직사형) 어레이 [39]지원입니다.2007년에는 APL2 Products and Services Team 전체가 Iverson Award를 수상했습니다.[105]
2021년 IBM은 APL2를 Log-On Software에 판매했으며, Log-On Software는 이 제품을 Log-On [106]APL2로 개발하고 판매합니다.
APLGOL
1972년 APLGOL은 언어 프레임워크에 구조화된 프로그래밍 언어 구조를 추가한 APL의 실험 버전으로 출시되었습니다.알고리즘의 [107]의도를 명확히 하기 위한 문뿐만 아니라 문장 간 제어, 조건부 문장 실행 및 문장 구조를 위한 새로운 문장이 추가되었습니다.1977년 [108]Hewlett-Packard를 위해 구현되었습니다.
Dyalog APL
Dyalog APL은 1983년 영국[110] 회사 Dyalog [109]Ltd.에 의해 처음 출시되었으며 2018년 현재[update] AIX, Linux(라즈베리 파이 포함), macOS 및 Microsoft Windows 플랫폼에서 사용할 수 있습니다.APL2에 기반하며 객체 지향 프로그래밍[111] 및 기능 [112]프로그래밍을 지원하는 확장 기능을 갖추고 있습니다.라이선스는 개인/[113]비상업적인 용도로 무료로 사용할 수 있습니다.
1995년,[105] 개발팀 중 두 팀인 존 스콜스와 피터 도넬리는 통역사에 대한 그들의 업적으로 아이버슨 상을 받았다.Gitte Christensen과 Morten Kromberg는 2016년 [114]Iverson Award를 공동 수상했습니다.
NARS2000
NARS2000은 1970년대와 1980년대에 STSC 출신의 저명한 APL 개발자이자 구현자인 Bob Smith가 작성한 오픈 소스 APL 인터프리터입니다.NARS2000은 고급 기능과 새로운 데이터 유형을 포함하고 있으며 Microsoft Windows 및 Wine의 기타 플랫폼에서 기본적으로 실행됩니다.이름은 1980년대 개발 도구인 NARS(Nested Arrays Research System)[115]에서 따온 것입니다.
APLX
APLX는 APL2에 기반한 여러 확장자를 가진 APL의 크로스 플랫폼 방언으로 2002년 영국 MicroAPL에 의해 처음 출시되었습니다.더 이상 개발 중이거나 상업적으로 판매되지 않지만,[116] 현재는 Dyalog에서 무료로 구입할 수 있습니다.
GNU APL
GNU APL은 ISO/IEC 13751:2001에 규정된 확장 APL의 무료 구현이므로 APL2의 구현입니다.Linux(라즈베리 파이 포함), macOS, 여러 BSD 방언 및 Windows(모든 시스템 기능을 완전히 지원하기 위해 Cygwin을 사용하거나 일부 시스템 기능이 누락된 네이티브 64비트 Windows 바이너리로 사용)에서 실행됩니다.GNU APL은 내부적으로 Unicode를 사용하며 스크립트가 가능합니다.그것은 위르겐 사우어만에 [117]의해 쓰여졌다.
GNU 프로젝트의 설립자인 Richard Stallman은 1969년 여름 고등학생 [118]때 APL을 텍스트 에디터로 쓰기 위해 APL을 조기 채택했습니다.
APL 해석 및 컴파일
APL은 전통적으로 해석된 언어로 [119]컴파일에 적합하지 않은 약한 변수 입력과 같은 언어 특성을 가지고 있습니다.로 핵심 데이터로 배열 structure[120] 하지만 parallelism,[121]평행 computing,[122][123]병렬 applications,[124][125]과very-large-scale 통합(VLSI)[126][127]과 에이피엘 프로그래밍 언어 예를 들어 고성능 language[128]–으로 여겨져 왔다 시작부터 그것을 통해 성능 이득 위한 기회를 제공합니다.이를 per 수 있는 속도로 이름 난."어레이 상에서 동작하며 내부적으로 매트릭스 반전과 같은 연산을 수행하기 때문에" 복잡한 매트릭스 연산을 형성합니다.[129]
그럼에도 불구하고, APL은 완전히 해석되는 경우는 거의 없으며, 사용되거나 사용되었던 컴파일 또는 부분 컴파일 기법에는 다음이 포함된다.
사자성어 인식
대부분의 APL 인터프리터는 관용구 인식을[130] 지원하며 공통 관용구를 단일 [131][132]연산으로 평가합니다.예를 들어, 사자성어를 평가함으로써BV/⍳⍴A
(여기서는) 단일 조작으로서BV
부울 벡터입니다.A
는 어레이입니다).는, 2개의 중간 어레이의 [133]작성을 회피합니다.
최적화된 바이트 코드
APL에서 약한 입력은 이름이 배열(데이터 유형), 함수 또는 연산자를 참조할 수 있음을 의미합니다.일반적으로 인터프리터는 사전에 어떤 형식이 될지 알 수 없으므로 런타임에 분석,[134] 구문 검사 등을 수행해야 합니다.단, 특정 상황에서는 어떤 유형의 이름이 참조될 것으로 예상되는지를 미리 추론하여 실행 시간 오버헤드를 줄여 실행할 수 있는 바이트 코드를 생성할 수 있습니다.이 바이트 코드는 또한 연속 폴딩 또는 공통 하위 표현식 [135]제거와 같은 컴파일 기술을 사용하여 최적화할 수 있습니다.인터프리터는 바이트 코드가 존재하거나 이미 이루어진 가정이 충족되면 바이트 코드를 실행합니다.Dyalog APL은 최적화된 바이트 [135]코드를 지원합니다.
컴파일
APL의 컴파일러는 언어가 처음 보급된 이후 연구와 실험의 대상이 되어 왔습니다.첫 번째 컴파일러는 [137]1971년경 출시된 Burroughs[136] APL-700으로 간주됩니다.APL을 컴파일하기 위해서는 [136][138]언어 제한이 부과되어야 합니다.APEX는 Robert Bernecky에 의해 작성된 연구용 APL 컴파일러로 GNU Public [139]License로 이용 가능합니다.
STSC APL 컴파일러는 바이트코드 옵티마이저와 컴파일러의 하이브리드입니다.이것은 서브함수와 글로벌이 선언된 경우 함수를 머신 코드로 컴파일할 수 있지만 인터프리터는 런타임 라이브러리로 사용되며 컴파일 요건을 충족하지 [140]못하는 함수를 실행하기 위해 사용됩니다.
표준
APL은 ANSI(American National Standards Institute) 작업 그룹 X3J10과 국제 표준화 기구(ISO) 및 국제 전기 표준 위원회(IEC), ISO/IEC 공동 기술 위원회 1 소위원회 22 작업 그룹 3에 의해 표준화되었습니다.핵심 APL 언어는 ISO 8485:1989로 지정되며 확장 APL 언어는 ISO/IEC 13751:2001로 지정됩니다.
레퍼런스
- ^ a b "APL Quotations and Anecdotes". jsoftware.com. jsoftware. Retrieved April 14, 2018.
- ^ "std::iota". cppreference.com.
- ^ a b c Iverson, Kenneth E. (1962). A Programming Language. Wiley. ISBN 978-0-471-43014-8. Archived from the original on 2014-10-27. Retrieved 2014-10-27.
- ^ McIntyre, Donald B. (1991). "Language as an Intellectual Tool: From Hieroglyphics to APL". IBM Systems Journal. 30 (4): 554–581. doi:10.1147/sj.304.0554. Archived from the original on March 4, 2016. Retrieved January 9, 2015.
- ^ "ACM Award Citation – John Backus". Awards.acm.org. 1977. Archived from the original on February 12, 2008. Retrieved February 3, 2010.
- ^ a b Moler, Cleve. "The Growth of MATLAB" (PDF). Archived from the original (PDF) on April 11, 2009. Retrieved February 3, 2010.
- ^ a b "A Bibliography of APL and J". Jsoftware.com. Retrieved March 2, 2010.
- ^ a b "An Interview with Arthur Whitney". Kx Systems. January 4, 2004. Archived from the original on April 4, 2009. Retrieved March 2, 2010.
- ^ Iverson, Kenneth E., "자동 데이터 처리: 6장: 프로그래밍 언어" 2009년 6월 4일 Wayback Machine, 1960년, Brooks and Iverson 1963년 초안 사본, Automatic Data Processing.
- ^ Brooks, Fred; Iverson, Kenneth, (1963), Automatic Data Processing, John Wiley & Sons Inc.
- ^ "Turing Award Citation 1979". Awards.acm.org. Archived from the original on 2009-12-23. Retrieved February 3, 2010.
- ^ Hellerman, H. (July 1964). "Experimental Personalized Array Translator System". Communications of the ACM. 7 (7): 433–438. doi:10.1145/364520.364573. S2CID 2181070.
- ^ Falkoff, Adin D.; Iverson, Kenneth E., "The Evolution of APL", ACM SIGPLAN Notice 13, 1978-08.
- ^ Abrams, Philip S., "Iverson 표기법" 통역사, 기술 보고서: CS-TR-66-47, 스탠포드 대학 컴퓨터 과학부, 1966년 8월
- ^ Haigh, Thomas (2005). "Biographies: Kenneth E. Iverson". IEEE Annals of the History of Computing. doi:10.1109/MAHC.2005.4.
- ^ a b 브리드, 래리, "제1회 APL 터미널 세션", APL 견적 쿼드, 컴퓨터 기계 협회, 제22권, No.1, 1991년 9월, 페이지 2-4.
- ^ 2009년 Adin Falkoff – 컴퓨터 역사 박물관."아이버슨은 그가 APL이라는 이름을 선택하고 IBM 골프공 타자기를 대체 타이프라이터로 도입하여 프로그램을 대표하는 유명한 캐릭터 세트를 제공했다고 인정했습니다."
- ^ Breed, Larry (August 2006). "How We Got to APL\1130". Vector (British APL Association). 22 (3). ISSN 0955-1433. Archived from the original on 2008-05-12. Retrieved 2007-04-02.
- ^ APL\1130 매뉴얼 2011-02-21 Wayback Machine, 1969년 5월 아카이브 완료
- ^ "Remembering APL". Quadibloc.com. Retrieved June 17, 2013.
- ^ Falkoff, Adin; Iverson, Kenneth E., "APL\360 사용자 가이드" 2012-02-29, IBM Research, Thomas J. Watson Research Center, NY, Yorktown Hightes, 1968년 8월.
- ^ "APL\360 터미널 시스템" Thomas J. Watson Research Center, IBM Research, Wayback Machine, 1967년 3월 아카이브 2010-07-11.
- ^ a b Pakin, Sandra (1968). APL\360 Reference Manual. Science Research Associates, Inc. ISBN 978-0-574-16135-2.
- ^ 팔코프, 아딘 D, 아이버슨, 케네스 E.APL의 설계, IBM 연구 개발 저널, 제17권, No.4, 1973년 7월"이러한 환경 정의 기능은 APL 프로그램과 시스템의 추상적이지 않은 부분 간의 통신을 위한 보다 일반적인 기능을 제공하는 기호 모양 때문에 "I-빔"이라고 불리는 또 다른 클래스의 기능을 사용하는 것에 기초하고 있습니다.I-빔 함수는 시스템 프로그래머가 APL 프로그램 내에서 System/360 명령을 실행할 수 있도록 하기 위해 처음 도입되었으며, 따라서 APL을 프로그래밍 활동에 직접적인 보조 도구로 사용합니다.언어의 일부로 보이는 이러한 종류의 기능의 명백한 편리함은 누구나 직접 사용할 수 있는 모노딕 아이빔 기능을 도입하게 되었다.이 함수에 대한 다양한 인수는 사용 가능한 공간과 시간 등의 환경에 대한 정보를 산출했습니다."
- ^ Minker, Jack (January 2004). "Beginning of Computing and Computer Sciences at the University of Maryland" (PDF). Section 2.3.4: University of Maryland. p. 38. Archived from the original (PDF) on June 10, 2011. Retrieved May 23, 2011.
{{cite web}}
: CS1 유지보수: 위치(링크) - ^ Stebbens, Alan. "How it all began". Archived from the original on 2016-03-04. Retrieved 2011-05-22.
- ^ "Xerox APL Language and Operations Reference Manual" (PDF).
- ^ "SIGAPL". Sigapl.org. Retrieved June 17, 2013.
- ^ "Fifty Years of BASIC, the Programming Language That Made Computers Personal". Time. April 29, 2014. Retrieved April 29, 2018.
- ^ "MCM Computers M70/M700". old-computers.com. Archived from the original on April 3, 2018. Retrieved April 8, 2018.
- ^ Stachniak, Stachniak (2011). Inventing the PC: The MCM/70 Story. McGill Queens's University Press. ISBN 978-0-7735-3852-8.
- ^ Miller, Michael (December 17, 2014). "PCs That Paved the Way for the Altair". PC Magazine. Ziff Davis. Retrieved April 29, 2018.
- ^ "VideoBrain Family Computer", Popular Science, 1978년 11월 광고.
- ^ "A Look at SuperPet". Compute!. Small System Services Inc. December 1981. Retrieved April 29, 2018.
- ^ Gates, Bill (January 31, 1976). "An Open Letter to Hobbyists". Homebrew Computer Club Newsletter. Retrieved April 29, 2018.
- ^ Hui, Roger. "Remembering Ken Iverson". keiapl.org. KEIAPL. Retrieved January 10, 2015.
- ^ ACM A.M. Turing Award. "Kenneth E. Iverson – Citation". amturing.acm.org. ACM. Retrieved January 10, 2015.
- ^ ACM SIGPLAN. "APL2: The Early Years". www.sigapl.org. ACM. Retrieved January 10, 2015.
- ^ a b c d Falkoff, Adin D. (1991). "The IBM family of APL systems". IBM Systems Journal. 30 (4): 416–432. doi:10.1147/sj.304.0416. S2CID 19030940.
- ^ "IBM APL2". EDM2. 2019-10-09. Retrieved 2021-11-17.
- ^ "APL2: What's New". ibm.com. ibm. Retrieved April 22, 2018.
- ^ Micro APL. "Overview of the APL System". www.microapl.co.uk. Micro APL. Retrieved January 10, 2015.
- ^ Robertson, Graeme. "A Personal View of APL2010". archive.vector.org.uk. Vector – Journal of the British APL Association. Archived from the original on April 2, 2015. Retrieved January 10, 2015.
- ^ Rodriguez, P.; Rojas, J.; Alfonseca, M.; Burgos, J. I. (1989). "An Expert System in Chemical Synthesis written in APL2/PC". ACM SIGAPL APL Quote Quad. 19 (4): 299–303. doi:10.1145/75144.75185. S2CID 16876053.
- ^ IBM. "APL2: A Programming Language for Problem Solving, Visualization and Database Access". www-03.ibm.com. IBM. Retrieved January 10, 2015.
- ^ Pike, Rob (2018-03-25). "Ivy". GoDoc. Archived from the original on 2019-08-13.
- ^ "Wolfram Language FAQ". Wolfram. Retrieved February 20, 2020.
LISP and APL were two early influences
- ^ Texas Instruments (1977). "TI 745 full page ad: Introducing a New Set of Characters". Computerworld. 11 (27): 32. Retrieved January 20, 2015.
- ^ Dyalog. "APL Fonts and Keyboards". www.dyalog.com. Dyalog. Retrieved January 19, 2015.
- ^ Smith, Bob. "NARS2000 Keyboard". www.sudleyplace.com. Bob Smith / NARS2000. Retrieved January 19, 2015.
- ^ MicroAPL Ltd. "Introduction to APL – APL Symbols". www.microapl.co.uk. MicroAPL Ltd. Retrieved January 8, 2015.
- ^ Brown, James A.; Hawks, Brent; Trimble, Ray (1993). "Extending the APL character set". ACM SIGAPL APL Quote Quad. 24 (1): 41–46. doi:10.1145/166198.166203.
- ^ Kromberg, Morten. "Unicode Support for APL". archive.vector.org.uk. Vector, Journal of the British APL Association. Archived from the original on January 20, 2015. Retrieved January 8, 2015.
- ^ Hsu, Aaron. "Computer Science Outreach and Education with APL". Dyalog, Ltd. Retrieved July 15, 2016.
- ^ Dyalog, Inc. APL 글꼴 및 키보드http://www.dyalog.com/apl-font-keyboard.htm
- ^ a b MicroAPL. "Operators". www.microapl.co.uk. MicroAPL. Retrieved January 12, 2015.
- ^ Primitive Functions. "Primitive Functions". www.microapl.co.uk/. Retrieved January 1, 2015.
- ^ Workspace. "The Workspace". www.microapl.co.uk. Retrieved January 1, 2015.
- ^ "example". Catpad.net. Archived from the original on July 8, 2013. Retrieved June 17, 2013.
- ^ APL Symbols. "Entering APL Symbols". www.microapl.co.uk. Retrieved January 1, 2015.
- ^ Dickkey, Lee, 2006-09-29 Wayback Machine에서 아카이브된 APL 변환 스킴 목록, 1993
- ^ Iverson K.E., "Notation as a Tool of Think Archived 2013-09-20 at the Wayback Machine", ACM Communications, 23: 444-465(1980년 8월)"
- ^ Batenburg. "APL Efficiency". www.ekevanbatenburg.nl. Retrieved January 1, 2015.
- ^ Vaxman. "APL Great Programming" (PDF). www.vaxman.de. Retrieved January 1, 2015.
- ^ Janko, Wolfgang (May 1987). "Investigation into the efficiency of using APL for the programming of an inference machine". ACM SIGAPL APL Quote Quad. 17 (4): 450–456. doi:10.1145/384282.28372.
- ^ Borealis. "Why APL?". www.aplborealis.com. Retrieved January 1, 2015.
- ^ Iverson, Kenneth E. "A Dictionary of APL". www.jsoftware.com. JSoftware; Iverson Estate. Retrieved January 20, 2015.
- ^ a b c d e f "APL concepts". Microapl.co.uk. Retrieved February 3, 2010.
- ^ "Nested array theory". Nial.com. Archived from the original on 2011-07-09. Retrieved February 3, 2010.
- ^ a b c "Programmera i APL", Bohman, Fröberg, Studentliterator, ISBN 91-44-13162-3
- ^ Iverson, Kenneth E. "APL Syntax and Semantics". www.jsoftware.com. I. P. Sharp Associates. Retrieved January 11, 2015.
- ^ MicroAPL. "APL Primitives". www.microapl.co.uk. MicroAPL. Retrieved January 11, 2015.
- ^ NARS2000. "APL Font – Extra APL Glyphs". wiki.nars2000.org. NARS2000. Retrieved January 11, 2015.
- ^ Fox, Ralph L. "Systematically Random Numbers". www.sigapl.org. SIGAPL. Retrieved January 11, 2015.
- ^ Scholes, John (January 26, 2009). Conway's Game of Life in APL (video). YouTube. Retrieved November 20, 2021.
- ^ 자세한 기술적인 내용은 APL Wiki 기사 "Conway's Game of Life"를 참조하십시오.2021년 11월 20일 취득.
- ^ 맥도넬, E.E.APL의 소스북 소개, APL Press, 1981. (풀북 스캔)
- ^ Accharya, R; Pereira, (904567457) N.E. APL 프로그래밍 언어버지니아 공대의 CS5314(프로그래밍 언어의 개념)용 페이퍼.
- ^ APL Wiki.APL 회의2021년 10월 13일 취득.
- ^ 제이콥 윌리엄스.타락한 코닉: 뉴 블러드2021년 10월 13일 취득.
- ^ APL Wiki.APL 로고2022년 5월 20일 취득.
- ^ a b "2017 Annual Report" (PDF). SimCorp. February 1, 2018. Retrieved April 3, 2018.
Sofia is a front-to-back investment management platform like SimCorp Dimension. ... Sofia is based on the APL coding language just like some parts of SimCorp Dimension.
- ^ Lee, Georges; Lelouche, Ruddy; Meissonnier, Vincent; Zarri, Gian Piero (September 1, 1982). "Using APL in an Artificial Intelligence environment". ACM SIGAPL APL Quote Quad. 13 (1): 183–191. doi:10.1145/390006.802242. Retrieved April 3, 2018.
- ^ Fordyce, K.; Sullivan, G. (1985). "Artificial Intelligence Development Aids". APL Quote Quad. APL 85 Conf. Proc. (15): 106–113. doi:10.1145/255315.255347.
- ^ Alfonseca, Manuel (July 1990). "Neural networks in APL". ACM SIGAPL APL Quote Quad. 20 (4): 2–6. doi:10.1145/97811.97816. Retrieved April 3, 2018.
- ^ Kromberg, Morten. "Robot Programming in APL". www.dyalog.com/. Retrieved January 6, 2015.
- ^ Holmes, W N (May 1978). "Is APL a Programming Language?". The Computer Journal. 21 (2): 128–131. doi:10.1093/comjnl/21.2.128.
- ^ Hsu, Aaron (November 18, 2017). "Design Patterns vs. Anti-pattern in APL". functionalconf.com. Archived from the original on March 23, 2018. Retrieved 2018-04-07.
- ^ Magnenat-Thalmann, Nadia; Thalmann, Daniel (1985). Computer Animation Theory and Practice. Springer-Verlag. p. 38. ISBN 9784431684336. Retrieved April 3, 2018.
Digital Effects is another production house that worked on Tron. They used a laser-scanning system to digitize, store and reproduce images. Judson Rosebush, president of Digital Effects, is the primary designer of APL VISION and FORTRAN VISION, two computer animation packages that are currently used.
- ^ Gutsell, Sam (October 17, 2017). "Stormwind Simulator at Dyalog '16". www.optima-systems.co.uk. Optima Systems. Retrieved April 3, 2018.
Stormwind is a [3D boating simulator] that has gained a huge amount of interest in the APL community.
- ^ "OP-Pohjola ja Tieto hoitivat sovelluksen muutostyöt sujuvalla yhteistyöllä" [Smooth cooperation between OP-Pohjola and Tieto enabled app modification] (PDF). www.tieto.com (in Finnish). Tieto. Retrieved April 3, 2018.[영구 데드링크]
- ^ "Vi idag" [We today]. profdoccare.se (in Swedish). Retrieved April 3, 2018.
Through the choice of APL as a technical platform, it is relatively easy to quickly build a solution that can be called a executable prototype (translated from the original)
- ^ Brenner, Charles. "DNA Identification Technology and APL". dna-view.com. Presentation at the 2005 APL User Conference. Retrieved January 9, 2015.
- ^ Brenner, Charles. "There's DNA Everywhere – an Opportunity for APL". www.youtube.com. YouTube. Archived from the original on 2021-11-14. Retrieved January 9, 2015.
- ^ "Tips for golfing in APL". stackexchange.com. Retrieved April 3, 2018.
- ^ "Awards – 1973 – Lawrence Breed". Association for Computing Machinery. Archived from the original on April 2, 2012.
- ^ "Awards – 1973 – Richard Lathwell". Association for Computing Machinery. Archived from the original on April 2, 2012.
- ^ "Awards – 1973 – Roger Moore". Association for Computing Machinery. Archived from the original on April 2, 2012.
- ^ "IBM 5100". old-computers.com. Archived from the original on April 30, 2018. Retrieved April 8, 2018.
- ^ "Welcome, IBM, to personal computing". Byte. December 1975. p. 90. Retrieved April 29, 2018.
- ^ "Chronology of APL and its Influences on Computer Language Development". www.sigapl.org. ACM. Retrieved April 29, 2018.
- ^ Larry Breed (August 2006). "How We Got To APL\1130". Vector (British APL Association). 22 (3). ISSN 0955-1433. Archived from the original on May 12, 2008. Retrieved April 29, 2018.
- ^ Roger Moore (2005). "History of I. P. Sharp Associates Timesharing and Network". Rogerdmoore.ca. Roger Moore. Archived from the original on April 4, 2019. Retrieved March 7, 2018.
- ^ Blumenthal, Marcia (May 18, 1981). "VAX-11s Acquire APL Processor". Computerworld. Retrieved April 22, 2018.
- ^ a b c "Kenneth E. Iverson Award for Outstanding Contribution to APL". SIGPLAN Chapter on Array Programming Languages (SIGAPL). Archived from the original on February 26, 2012.
- ^ Mark Schora (2021-01-26). "Log-On Software announces Log-On APL2". Log-On Software. Retrieved 2021-11-17.
- ^ Kelley, R.A. (1973). "APLGOL, an Experimental Structured Programming Language". IBM Journal of Research and Development. 17: 69–73. doi:10.1147/rd.171.0069.
- ^ Johnston, Ronald L. (July 1977). "APLGOL: Structured Programming Facilities for APL". Hewlett-Packard Journal.
- ^ "Dyalog Ltd website". Retrieved 6 June 2018.
- ^ "Dyalog at 25" (PDF). Vector Magazine. British APL Association. September 2008. Retrieved April 14, 2018.[영구 데드링크]
- ^ Kromberg, Morten (22 October 2007). "Arrays of Objects" (PDF). Proceedings of the 2007 Symposium on Dynamic Languages: 20. doi:10.1145/1297081.1297087. ISBN 9781595938688. S2CID 18484472. Retrieved 27 August 2018.
- ^ Scholes, John. "D: A functional subset of Dyalog APL". British APL Asscociation.
- ^ "Dyalog – Prices and Licences".
- ^ "2016 Iverson Award Recognises Dyalog's CEO and CXO". Retrieved 6 June 2018.
- ^ "Nested Arrays Research System – NARS2000: An Experimental APL Interpreter". NARS2000. Sudley Place Software. Retrieved July 10, 2015.
- ^ "APLX has been withdrawn from commercial sale but can be downloaded free of charge". Microapl.com. Retrieved April 14, 2018.
- ^ "GNU APL". directory.fsf.org. Free Software Directory. Retrieved September 28, 2013.
- ^ Stallman, Richard M. "RMS Berättar". Archived from the original on November 26, 2018. Retrieved April 22, 2018.
- ^ Budd, Timothy (1988). An APL Compiler. Springer-Verlag. ISBN 978-0-387-96643-4.
- ^ SIGAPL. "What is APL?". www.sigapl.org. SIGAPL. Retrieved January 20, 2015.
- ^ Ju, Dz-Ching; Ching, Wai-Mee (1991). "Exploitation of APL data parallelism on a shared-memory MIMD machine". Newsletter ACM SIGPLAN Notices. 26 (7): 61–72. doi:10.1145/109625.109633. S2CID 8584353.
- ^ Hsu, Aaron W.; Bowman, William J. "Revisiting APL in the Modern Era" (PDF). www.cs.princeton.edu. Indiana University / Princeton. Retrieved January 20, 2015.
- ^ Ching, W.-M.; Ju, D. (1991). "Execution of automatically parallelized APL programs on RP3". IBM Journal of Research & Development. 35 (5/6): 767–777. doi:10.1147/rd.355.0767. Retrieved January 20, 2015.
- ^ Blelloch, Guy E.; Sabot, Gary W. (1990). "Compiling Collection-Oriented Languages onto Massively Parallel Computers". Journal of Parallel and Distributed Computing. 8 (2): 119–134. CiteSeerX 10.1.1.51.5088. doi:10.1016/0743-7315(90)90087-6.
Collection oriented languages include APL, APL2
- ^ Jendrsczok, Johannes; Hoffmann, Rolf; Ediger, Patrick; Keller, Jörg. "Implementing APL-like data parallel functions on a GCA machine" (PDF). www.fernuni-hagen.de. Fernuni-Hagen.De. pp. 1–6. Archived from the original (PDF) on January 22, 2015. Retrieved January 22, 2015.
GCA – Global Cellular Automation. Inherently massively parallel. 'APL has been chosen because of the ability to express matrix and vector' structures.
- ^ Brenner of IBM T.J.Watson Research Center, Norman (1984). "VLSI circuit design using APL with fortran subroutines". Proceedings of the international conference on APL – APL '84. ACM SIGAPL APL Quote Quad. Vol. 14. ACM SIGAPL. pp. 77–79. doi:10.1145/800058.801079. ISBN 978-0897911375. S2CID 30863491.
APL for interactiveness and ease of coding
- ^ Gamble, D.J.; Hobson, R.F. (1989). "Towards a graphics/Procedural environment for constructing VLSI module generators". Conference Proceeding IEEE Pacific Rim Conference on Communications, Computers and Signal Processing. pp. 606–611. doi:10.1109/PACRIM.1989.48437. S2CID 7921438.
VLSI module generators are described. APL and C, as examples of interpreted and compiled languages, can be interfaced to an advanced graphics display
- ^ Lee, Robert S. (1983). "Two Implementations of APL". PC Magazine. 2 (5): 379. Retrieved January 20, 2015.
- ^ MARTHA and LLAMA. "The APL Computer Language". marthallama.org. MarthaLlama. Retrieved January 20, 2015.
- ^ Metzger, Robert; Wen, Zhaofang (2000). Automatic Algorithm Recognition and Replacement: A New Approach to Program Optimization. The MIT press. ISBN 9780262133685. Retrieved May 6, 2018.
- ^ Snyder, Lawrence (1982). "Recognition and Selection of Idioms for Code Optimization". Acta Informatica. 17 (3). doi:10.1007/BF00264357. S2CID 8369972.
- ^ Cheng, Feng Sheng (1981). "Idiom matching: an optimization technique for an APL compiler". Iowa State University. Retrieved May 6, 2018.
{{cite journal}}
:Cite 저널 요구 사항journal=
(도움말) - ^ "Idiom Recognition". dyalog.com. Retrieved May 6, 2018.
- ^ Strawn, George O. (March 1977). "Does APL really need run‐time parsing?". Software: Practice and Experience. 7 (2): 193–200. doi:10.1002/spe.4380070207. S2CID 1463012.
- ^ a b "Compiler User Guide" (PDF). www.dyalog.com. Dyalog Ltd. Retrieved May 7, 2018.
- ^ a b Driscoll Jr., Graham C.; Orth, Donald L. (November 1986). "Compiling APL: The Yorktown APL Translator". IBM Journal of Research and Development. 30 (6): 583–593. doi:10.1147/rd.306.0583. S2CID 2299699.
- ^ "Chronology of APL". www.sigapl.org. ACM. Retrieved May 7, 2018.
- ^ Wai-Mee, Ching (November 1986). "Program Analysis and Code Generation in an APL/370 Compiler". IBM Journal of Research and Development. 30 (6): 594–602. doi:10.1147/rd.306.0594. S2CID 17306407.
- ^ "The APEX Project".
- ^ "APL Compiler (message from Jim Weigang to the comp.lang.apl Newsgroup)". Apr 5, 1994.
추가 정보
- APL 머신(1970년 필립 에이브럼스 스탠포드 박사 논문)
- APL의 개인사(1982년 마이클 S의 기사). 몬탈바노)
- McIntyre, Donald B. (1991). "Language as an intellectual tool: From hieroglyphics to APL" (PDF). IBM Systems Journal. 30 (4): 554–581. doi:10.1147/sj.304.0554. Archived from the original (PDF) on May 4, 2006.
- Iverson, Kenneth E. (1991). "A Personal view of APL" (PDF). IBM Systems Journal. 30 (4): 582–593. doi:10.1147/sj.304.0582. Archived from the original (PDF) on February 27, 2008.
- Kenneth E의 프로그래밍 언어. 아이버슨
- Kenneth E에 의한 Exposition의 APL. 아이버슨
- 브룩스, 프레드릭 P.; 케네스 아이버슨(1965).자동 데이터 처리, System/360 Edition.ISBN 0-471-10605-4.
- Askoolum, Ajay (August 2006). System Building with APL + Win. Wiley. ISBN 978-0-470-03020-2.
- Falkoff, Adin D.; Iverson, Kenneth E.; Sussenguth, Edward H. (1964). "A Formal Description of System/360" (PDF). IBM Systems Journal. 3 (2): 198–261. doi:10.1147/sj.32.0198. Archived from the original (PDF) on February 27, 2008.
- 프로그래밍 언어의 역사, 14장[clarification needed]
- Banon, Gerald Jean Francis (1989). Bases da Computacao Grafica. Rio de Janeiro: Campus. p. 141.
- LePage, Wilbur R. (1978). Applied A.P.L. Programming. Prentice Hall.
- Mougin, Philippe; Ducasse, Stephane (November 2003). "OOPAL: Integrating Array Programming in ObjectOriented Programming" (PDF). Proceeding OOPSLA '03 Proceedings of the 18th Annual ACM SIGPLAN Conference on Object-oriented Programing, Systems, Languages, and Applications. 38 (11): 65–77. doi:10.1145/949343.949312. Archived from the original (PDF) on November 14, 2006.
- Dyalog Limited (September 2006). An Introduction to Object Oriented Programming For APL Programmers (PDF). Dyalog Limited. Archived from the original (PDF) on October 4, 2007.
- Shustek, Len (October 10, 2012). "The APL Programming Language Source Code". Computer History Museum (CHM). Archived from the original on September 6, 2017. Retrieved September 6, 2017.
- Svoboda, Antonín; White, Donnamaie E. (2016) [2012, 1985, 1979-08-01]. Advanced Logical Circuit Design Techniques (PDF) (retyped electronic reissue ed.). Garland STPM Press (original issue) / WhitePubs Enterprises, Inc. (reissue). ISBN 978-0-8240-7014-4. LCCN 78-31384. Archived (PDF) from the original on 2017-04-14. Retrieved 2017-04-15. [1] [2]
비디오
- The Origins of APL on YouTube – 1974년 APL 오리지널 개발자들과 토크쇼 형식의 인터뷰.
- YouTube에서의 APL 데모– 1975년 임페리얼 칼리지 런던의 밥 스펜스 교수에 의한 APL 라이브 데모.
- Conway's Game Of Life in YouTube – Dyalog Ltd.의 John Scholes가 2009년에 작성한 튜토리얼로 Conway's Game of Life를 APL의 한 줄에 구현합니다.
- YouTube에서의 50년간의 APL – Graeme Robertson의 2009년 APL 소개.
외부 링크
![]() | 이 문서의 외부 링크 사용은 Wikipedia의 정책 또는 지침을 따르지 않을 수 있습니다.(2020년 8월 (이 및 ) |