K is a proprietary
array
An array is a systematic arrangement of similar objects, usually in rows and columns.
Things called an array include:
{{TOC right
Music
* In twelve-tone and serial composition, the presentation of simultaneous twelve-tone sets such that the ...
processing programming language developed by
Arthur Whitney and commercialized by
Kx Systems
KX is a data analysis software developer and vendor. It is a business unit of AIM-listed technology and services group FD TechnologiesLON: FDP. Its KX Insights platform is built upon the proprietary time series database kdb+ and its programming ...
. The language serves as the foundation for
kdb+, an in-memory, column-based
database
In computing, a database is an organized collection of data stored and accessed electronically. Small databases can be stored on a file system, while large databases are hosted on computer clusters or cloud storage. The design of databases sp ...
, and other related financial products. The language, originally developed in 1993, is a variant of
APL and contains elements of
Scheme A scheme is a systematic plan for the implementation of a certain idea.
Scheme or schemer may refer to:
Arts and entertainment
* ''The Scheme'' (TV series), a BBC Scotland documentary series
* The Scheme (band), an English pop band
* ''The Schem ...
. Advocates of the language emphasize its speed, facility in handling arrays, and expressive syntax.
History
Before developing K, Arthur Whitney had worked extensively with APL, first at
I. P. Sharp Associates alongside
Ken Iverson and
Roger Hui, and later at
Morgan Stanley
Morgan Stanley is an American multinational investment management and financial services company headquartered at 1585 Broadway in Midtown Manhattan, New York City. With offices in more than 41 countries and more than 75,000 employees, the fir ...
developing financial applications. At Morgan Stanley, Whitney helped to develop
A+, a variant of APL, to facilitate migrating APL applications from
IBM mainframe computer
A mainframe computer, informally called a mainframe or big iron, is a computer used primarily by large organizations for critical applications like bulk data processing for tasks such as censuses, industry and consumer statistics, enterpris ...
s to a network of Sun
workstation
A workstation is a special computer designed for technical or scientific applications. Intended primarily to be used by a single user, they are commonly connected to a local area network and run multi-user operating systems. The term ''workstat ...
s. A+ had a smaller set of primitive functions and was designed for speed and to handle large sets of time series data.
In 1993, Whitney left Morgan Stanley and developed the first version of the K language. At the same time he formed Kx Systems to commercialize the product and signed an exclusive contract with
Union Bank of Switzerland
Union Bank of Switzerland (UBS) was a Swiss Investment banking, investment bank and financial services company located in Switzerland. The bank, which at the time was the second largest bank in Switzerland, merged with Swiss Bank Corporation in ...
(UBS). For the next four years he developed various financial and trading applications using K for UBS.
The contract ended in 1997 when UBS merged with
Swiss Bank. In 1998, Kx Systems released kdb+, a database built on K. kdb was an
in-memory,
column-oriented database and included ksql, a query language with an
SQL-like syntax. Since then, several financial products have been developed with K and kdb+. kdb+/tick and kdb+/taq were developed in 2001. kdb+, a 64-bit version of kdb+ was released in 2003 and kdb+/tick and kdb+/taq were released in 2004. kdb+ included
Q, a language that merged the functions of the underlying K language and ksql.
Whitney released a derivative of K called Shakti in 2018.
Overview
K shares key features with APL. They are both
interpreted,
interactive languages noted for concise and expressive syntax. They have simple rules of precedence based on right to left evaluation. The languages contain a rich set of primitive functions designed for processing arrays. These primitive functions include mathematical operations that work on arrays as whole data objects, and array operations, such as sorting or reversing the order of an array. In addition, the language contains special operators that combine with primitive functions to perform types of iteration and recursion. As a result, complex and extended transformations of a dataset can be expressed as a chain of sub-expressions, with each link performing a segment of the calculation and passing the results to the next link in the chain.
Like APL, the primitive functions and operators are represented by single or double characters; however, unlike APL, K restricts itself to the
ASCII character set
ASCII ( ), abbreviated from American Standard Code for Information Interchange, is a character encoding standard for electronic communication. ASCII codes represent text in computers, telecommunications equipment, and other devices. Because of ...
(as does another APL variant,
J). To allow for this, the set of primitive functions for K is smaller and heavily
overloaded, with each of the ASCII symbols representing two or more distinct functions or operations. In a given expression, the actual function referenced is determined by the context. As a result, K expressions can be opaque and difficult to parse for humans. For example, in the following contrived expression the
exclamation point
The exclamation mark, , or exclamation point (American English), is a punctuation mark usually used after an interjection or exclamation to indicate strong feelings or to show emphasis. The exclamation mark often marks the end of a sentence, f ...
!
refers to three distinct functions:
2!!7!4
Reading from right to left the first
!
is modulo division that is performed on 7 and 4 resulting in 3. The next
!
is enumeration and lists the integers less than 3, resulting in the list 0 1 2. The final
!
is rotation where the list on the right is rotated two times to the left producing the final result of 2 0 1.
The second core distinction of K is that functions are
first-class object
In programming language design, a first-class citizen (also type, object, entity, or value) in a given programming language is an entity which supports all the operations generally available to other entities. These operations typically include ...
s, a concept borrowed from
Scheme A scheme is a systematic plan for the implementation of a certain idea.
Scheme or schemer may refer to:
Arts and entertainment
* ''The Scheme'' (TV series), a BBC Scotland documentary series
* The Scheme (band), an English pop band
* ''The Schem ...
.
First-class function
In computer science, a programming language is said to have first-class functions if it treats functions as first-class citizens. This means the language supports passing functions as arguments to other functions, returning them as the values from ...
s can be used in the same contexts where a data value can be used. Functions can be specified as anonymous expressions and used directly with other expressions. Function expressions are specified in K using
curly bracket
A bracket is either of two tall fore- or back-facing punctuation marks commonly used to isolate a segment of text or data from its surroundings. Typically deployed in symmetric pairs, an individual bracket may be identified as a 'left' or 'r ...
s. For example, in the following expression a quadratic expression is defined as a function and applied to the values 0 1 2 and 3:
'!4
In K, named functions are simply function expressions stored to a variable in the same way any data value is stored to a variable.
a:25
f:
Functions can be passed as an argument to another function or returned as a result from a function.
Examples
K is an interpreted language where every statement is evaluated and its results displayed immediately. Literal expressions such as strings evaluate to themselves. Consequently, the
Hello world
''Hello'' is a salutation or greeting in the English language. It is first attested in writing from 1826. Early uses
''Hello'', with that spelling, was used in publications in the U.S. as early as the 18 October 1826 edition of the '' Norwich ...
-program is trivial:
"Hello world!"
The following expression sorts a list of strings by their lengths:
x@>#:'x
The expression is evaluated from right to left as follows:
# #:'x returns the length of each word in the list x.
# > returns the indices that would sort a list of values in descending order.
# @ uses the integer values on the right to index into the original list of strings.
A function to determine if a number is prime can be written as:
The function is evaluated from right to left:
# !x enumerate the positive integers less than x.
# 2_ drops the first two elements of the enumeration (0 and 1).
# x!/: performs modulo division between the original integer and each value in the truncated list.
# &/ find the minimum value of the list of modulo result.
If x is not prime then one of the values returned by the modulo operation will be 0 and consequently the minimal value of the list. If x is prime then the minimal value will be 1, because x mod 2 is 1 for any prime greater than 2.
The function below can be used to list all of the prime numbers between 1 and R with:
2_&'!R
The expression is evaluated from right to left
# !R enumerate the integers less than R.
# ' apply each value of the enumeration to the prime number function on the left. This will return a list of 0's and 1's.
# & return the indices of the list where the value is 1.
# 2_ drop the first two elements of the enumeration (0 and 1)
K financial products
K is the foundation for a family of financial products. Kdb+ is an in-memory, column-based database with much of the same functions of a
relational database management system
A relational database is a (most commonly digital) database based on the relational model of data, as proposed by E. F. Codd in 1970. A system used to maintain relational databases is a relational database management system (RDBMS). Many relatio ...
. The database supports
SQL,
SQL-92
SQL-92 was the third revision of the SQL database query language. Unlike SQL-89, it was a major revision of the standard. Aside from a few minor incompatibilities, the SQL-89 standard is forward-compatible with SQL-92.
The standard specificatio ...
and ksql, a query language with a syntax similar to SQL and designed for column based queries and array analysis.
Kdb+ is available for several
operating system
An operating system (OS) is system software that manages computer hardware, software resources, and provides common services for computer programs.
Time-sharing operating systems schedule tasks for efficient use of the system and may also in ...
s, including
Solaris
Solaris may refer to:
Arts and entertainment Literature, television and film
* ''Solaris'' (novel), a 1961 science fiction novel by Stanisław Lem
** ''Solaris'' (1968 film), directed by Boris Nirenburg
** ''Solaris'' (1972 film), directed by ...
,
Linux
Linux ( or ) is a family of open-source Unix-like operating systems based on the Linux kernel, an operating system kernel first released on September 17, 1991, by Linus Torvalds. Linux is typically packaged as a Linux distribution, which ...
,
macOS
macOS (; previously OS X and originally Mac OS X) is a Unix operating system developed and marketed by Apple Inc. since 2001. It is the primary operating system for Apple's Mac computers. Within the market of desktop and lapt ...
, and
Windows
Windows is a group of several proprietary graphical operating system families developed and marketed by Microsoft. Each family caters to a certain sector of the computing industry. For example, Windows NT for consumers, Windows Server for serv ...
(32-bit or 64-bit).
See also
*
J, another APL-inspired language
*
Q, the language of kdb+ and a new merged version of K and ksql.
References
External links
* , Kx Systems
* , kdb+
Overview of K (with a link to K reference card)in K vs.
Java
Java (; id, Jawa, ; jv, ꦗꦮ; su, ) is one of the Greater Sunda Islands in Indonesia. It is bordered by the Indian Ocean to the south and the Java Sea to the north. With a population of 151.6 million people, Java is the world's List ...
K by Arthur Whitney (2005) REPL for a K clone
''Kona''an open-source K3 implementation
{{APL programming language
APL programming language family
Array programming languages
Data-centric programming languages
Dynamic programming languages
Function-level languages
Proprietary database management systems
Programming languages
Dynamically typed programming languages
High-level programming languages
1993 software
Programming languages created in 1993