K(프로그래밍 언어)
K (programming language)이 글은 검증을 위해 인용구가 추가로 필요하다.– · · 책· · (2011년 8월)(이를 |
| 패러다임 | 배열, 기능 |
|---|---|
| 설계자 | 아서 휘트니 |
| 개발자 | Kx 시스템즈 |
| 첫 등장 | 1993; 전 ( |
| 타이핑 규율 | 역동적이고 강한 |
| 웹사이트 | kx |
| 영향을 받은 | |
| A+, APL, 스키마 | |
| 영향받은 | |
| Q, 샤크티 | |
K는 아서 휘트니가 개발하고 Kx시스템즈가 상용화한 전용 어레이 프로세싱 프로그래밍 언어다.언어는 인메모리, 칼럼 기반 데이터베이스, 기타 관련 금융 상품인 kdb+의 기반 역할을 한다.[1]1993년에 처음 개발된 이 언어는 APL의 변형이며, 체계적 요소를 포함하고 있다.그 언어를 옹호하는 사람들은 그 언어의 속도, 배열 처리의 기능, 그리고 표현적인 구문을 강조한다.[2]
역사
아서 휘트니는 K를 개발하기 전에는 APL에서 광범위하게 일했고, 처음에는 켄 아이버슨, 로저 후이와 함께 I. P. 샤프 어소시에이츠에서 일했으며, 나중에는 금융 애플리케이션을 개발하는 모건 스탠리에서 일했었다.Morgan Stanley에서 Whitney는 IBM 메인프레임 컴퓨터에서 Sun 워크스테이션 네트워크로 APL 응용프로그램을 쉽게 마이그레이션하기 위해 APL의 변형인 A+를 개발하는 것을 도왔다.A+는 더 작은 원시 함수의 집합을 가지고 있었으며 속도와 대규모 시계열 데이터를 처리하도록 설계되었다.[3]
1993년 휘트니는 모건 스탠리를 떠나 K 언어의 첫 버전을 개발했다.동시에 Kx시스템즈를 결성해 제품을 상용화했고 스위스 유니온뱅크(UBS)와 전속계약을 체결했다.이후 4년 동안 그는 UBS용 K를 사용하여 다양한 금융 및 거래 애플리케이션을 개발했다.
1997년 UBS가 스위스 은행과 합병하면서 계약이 종료됐다.1998년 kx시스템s는 kkdb+를 출시했는데 kkdb는 인메모리, 컬럼 중심의 데이터베이스였으며 SQL과 같은 구문을 가진 쿼리 언어인 ksql을 포함했다.이후 K, kdb+와 함께 여러 금융상품을 개발했다.kdb+/tick과 kdb+/taq는 2001년에 개발됐다.kdb+는 2003년에 64비트 버전의 kdb+가 출시되었고, kdb+tick과 kdb+/taq는 2004년에 출시되었다.kdb+는 기초 Ksq의 기능을 융합한 언어인 Q를 포함했다.[4]
휘트니는 2018년 '샤크티'라는 K의 파생상품을 출시했다.[5]
개요
K는 APL과 주요 기능을 공유한다.그들은 간결하고 표현력 있는 구문으로 알려진 쌍방향 언어로 해석되었다.그들은 우파와 좌파의 평가에 근거한 간단한 우선 순위 규칙을 가지고 있다.언어에는 배열 처리를 위해 설계된 원시 함수의 풍부한 집합이 포함되어 있다.이러한 원시 함수는 전체 데이터 개체로서 배열에서 작용하는 수학 연산, 배열 순서를 정렬하거나 역순으로 배열하는 등의 배열 연산 등을 포함한다.또한 언어에는 원시 함수와 결합하여 반복과 재귀의 유형을 수행하는 특수 연산자가 포함되어 있다.결과적으로 데이터 집합의 복잡하고 확장된 변환은 하위 추출의 체인으로 표현될 수 있으며, 각 링크는 계산의 세그먼트를 수행하고 그 결과를 체인의 다음 링크에 전달할 수 있다.
APL과 마찬가지로 원시 함수와 연산자는 단일 또는 이중 문자로 표현되지만, APL과 달리 K는 ASCII 문자 집합(다른 APL 변종 J와 마찬가지로)으로 제한한다.이를 허용하기 위해 K에 대한 원시 함수 집합은 더 작고 과부하가 심하며, 각 ASCII 기호는 둘 이상의 구별되는 함수나 연산을 나타낸다.주어진 식에서 참조되는 실제 함수는 문맥에 의해 결정된다.그 결과 K표현은 불투명하고 인간에게는 구문 분석하기 어려울 수 있다.예를 들어, 다음 표현에서 느낌표는 !다음과 같은 세 가지 구별되는 함수를 가리킨다.
2!!7!4
첫 번째 오른쪽에서 왼쪽으로 읽기!7과 4에서 3으로 이어지는 modulo division이다.다음.!열거형이고 3 미만의 정수를 나열하고, 그 결과 리스트 0 1 2가 된다.결승전!우측의 목록이 왼쪽으로 두 번 회전하여 최종 결과 2 0 1을 생성하는 회전이다.
K의 두 번째 핵심 구분은 기능이 제1종 객체라는 점, 즉 체계에서 차용한 개념이다.1등급 함수는 데이터 값을 사용할 수 있는 동일한 맥락에서 사용할 수 있다.함수는 익명 표현으로 지정할 수 있으며, 다른 표현과 함께 직접 사용할 수 있다.함수 식은 곱슬 괄호를 사용하여 K로 지정된다.예를 들어, 다음 식에서 2차 식을 함수로 정의하고 값 0 1 2와 3에 적용한다.
{(3*x^2)+(2*x)+1}!4K에서 명명된 함수는 데이터 값이 변수에 저장되는 것과 같은 방식으로 변수에 저장된 함수 식일 뿐이다.
a:25 f:{(x^2)-1}함수는 다른 함수에 인수로 전달되거나 함수의 결과로 반환될 수 있다.
예
K는 모든 문장이 평가되고 그 결과가 즉시 표시되는 해석 언어다.문자열과 같은 문자적 표현은 스스로 평가한다.따라서 Hello 월드 프로그램은 사소한 것이다.
"헬로 월드!"
다음 표현식은 문자열의 길이를 기준으로 정렬한다.
x@>>#:'x표현식은 다음과 같이 오른쪽에서 왼쪽으로 평가된다.
- #:'x'x는 리스트 x에 있는 각 단어의 길이를 반환한다.
- > 값 목록을 내림차순으로 정렬하는 지수를 반환한다.
- @ 오른쪽의 정수 값을 사용하여 문자열의 원래 목록으로 인덱싱한다.
숫자가 prime인지 판단하는 함수는 다음과 같이 쓸 수 있다.
{&/x!/:2_!x}함수는 오른쪽에서 왼쪽으로 평가된다.
- !x x보다 작은 양의 정수를 열거한다.
- 2_는 열거의 처음 두 요소(0과 1)를 삭제한다.
- x!/: 원래 정수와 잘린 목록의 각 값 사이의 modulo 분할을 수행한다.
- &/ modulo 결과 목록의 최소값을 찾는다.
x가 primary가 아닐 경우 modulo 연산에 의해 반환되는 값 중 하나가 0이 되고 결과적으로 목록의 최소값이 된다.x가 prime이면 최소값은 1이 된다. x mod 2는 2보다 큰 prime에 대해 1이기 때문이다.
아래 함수를 사용하여 1과 R 사이의 모든 소수점을 다음 항목으로 표시할 수 있다.
2_&{&/x!/:2_!x}'!r표현식은 오른쪽에서 왼쪽으로 평가된다.
- !R R보다 작은 정수를 열거한다.
- '는 열거의 각 값을 왼쪽의 prime number 함수에 적용한다.이렇게 하면 0과 1의 목록이 반환된다.
- & 값이 1인 리스트의 지수를 반환한다.
- 2_ 열거의 처음 두 요소(0 및 1)를 삭제한다.
K금융상품
K는 금융 상품 계열의 기초다.Kdb+는 관계형 데이터베이스 관리 시스템의 기능이 상당 부분 동일한 인메모리 컬럼 기반 데이터베이스다.데이터베이스는 SQL과 유사한 구문을 가진 질의어인 SQL, SQL-92, ksql을 지원하며 열 기반 질의와 배열 분석을 위해 설계된다.
Kdb+는 Solaris, Linux, MacOS, Windows(32비트 또는 64비트) 등 여러 운영 체제에서 사용할 수 있다.
참고 항목
참조
- ^ "Kx Systems".
- ^ Iverson, Kenneth. "Notation as a Tool of Thought". Archived from the original on 2013-09-20. Retrieved 2015-02-23.
- ^ "arthur bio and interview".
- ^ Garland, Simon (December 28, 2004), Q Language Widening the Appeal of Vectors, Vector UK, archived from the original on January 1, 2007
- ^ "Shakti".
외부 링크
- 공식 웹사이트, Kx 시스템즈
- 공식 홈페이지, kdb+
- K 개요 (K 참조 카드에 대한 링크 포함)
- Dennis Shasha - 프로토타이핑 언어로서의 K
- Michael Schidlowsky - K와 특정 문제의 해결책을 비교하는 스크린캐스트자바
- K by Arthur Whitney(2005)
- K 클론의 oK RET
- Kona 오픈소스 K3 구현