K (programovací jazyk) - K (programming language)

K
Paradigma pole , funkční
Navrhl Arthur Whitney
Vývojář Kx Systems
Poprvé se objevil 1993 ; Před 28 lety ( 1993 )
Kázeň při psaní dynamický , silný
webová stránka kx .com
Ovlivněn
A+ , APL , schéma
Ovlivněn
Otázka

K je proprietární programovací jazyk pro zpracování polí vyvinutý Arthurem Whitneym a prodávaný společností Kx Systems . Jazyk slouží jako základ pro kdb+ , paměťovou databázi založenou na sloupcích a další související finanční produkty. Jazyk, původně vyvinutý v roce 1993, je variantou APL a obsahuje prvky Scheme . Zastánci jazyka kladou důraz na jeho rychlost, schopnost manipulace s poli a expresivní syntaxi.

Dějiny

Před vývojem K Arthur Whitney intenzivně spolupracoval s APL, nejprve v IP Sharp Associates po boku Kena Iversona a Rogera Huiho a později v Morgan Stanley při vývoji finančních aplikací. Morgan Stanley, Whitney přispěla k rozvoji A + , variantu APL, aby se usnadnilo migraci APL aplikací od IBM sálových počítačů k síti Sun pracovním stanicím . A+ měl menší sadu primitivních funkcí a byl navržen pro rychlost a pro zpracování velkých souborů dat časové řady.

V roce 1993 Whitney opustila Morgan Stanley a vyvinula první verzi jazyka K. Současně založil Kx Systems pro komercializaci produktu a podepsal exkluzivní smlouvu s Union Bank of Switzerland (UBS). Další čtyři roky vyvíjel různé finanční a obchodní aplikace pomocí K pro UBS.

Smlouva skončila v roce 1997, kdy se UBS spojila se Swiss Bank . V roce 1998 Kx Systems vydala KDB +, databáze postavené na K. KDB bylo v paměti , sloupci orientovaná databáze a zahrnoval ksql, dotazovací jazyk, přičemž jejich SQL -jako syntax. Od té doby bylo vyvinuto několik finančních produktů s K a kdb+. kdb+/tick a kdb+/taq byly vyvinuty v roce 2001. kdb+, 64bitová verze kdb+byla vydána v roce 2003 a kdb+/tick a kdb+/taq byly vydány v roce 2004. kdb+zahrnoval Q , jazyk, který spojil funkce základní jazyk K a ksql.

Whitney vydala v roce 2018 derivát K s názvem Shakti.

Přehled

K sdílí klíčové funkce s APL. Oba jsou interpretovány , interaktivní jazyky, které se vyznačují stručnou a expresivní syntaxí. Mají jednoduchá pravidla priority založená na hodnocení zprava doleva. Jazyky obsahují bohatou sadu primitivních funkcí určených pro zpracování polí. Tyto primitivní funkce zahrnují matematické operace, které pracují na polích jako celých datových objektech, a maticové operace, jako je řazení nebo obrácení pořadí pole. Kromě toho jazyk obsahuje speciální operátory, které kombinují s primitivními funkcemi k provádění typů iterace a rekurze. V důsledku toho lze složité a rozšířené transformace datové sady vyjádřit jako řetězec dílčích výrazů, přičemž každý odkaz provede segment výpočtu a předá výsledky dalšímu odkazu v řetězci.

Stejně jako APL jsou primitivní funkce a operátory reprezentovány jednoduchými nebo dvojitými znaky; na rozdíl od APL se však K omezuje na znakovou sadu ASCII (stejně jako jiná varianta APL, J ). Aby to bylo možné, je sada primitivních funkcí pro K menší a silně přetížená , přičemž každý ze symbolů ASCII představuje dvě nebo více odlišných funkcí nebo operací. V daném výrazu je skutečná odkazovaná funkce určena kontextem. V důsledku toho mohou být výrazy K pro člověka neprůhledné a obtížně analyzovatelné. Například v následujícím strojeném výrazu vykřičník ! odkazuje na tři odlišné funkce:

2!!7!4

Čtení zprava doleva první !je modulo dělení, které se provádí na 7 a 4, což vede k 3. Další !je výčet a uvádí celá čísla menší než 3, což vede k seznamu 0 1 2. Konečný !je rotace, kde seznam na doprava se dvakrát otočí doleva a vytvoří konečný výsledek 2 0 1.

Druhým klíčovým rozlišením K je, že funkce jsou prvotřídní objekty , koncept vypůjčený ze Scheme . Prvotřídní funkce lze použít ve stejných kontextech, kde lze použít datovou hodnotu. Funkce lze zadat jako anonymní výrazy a použít je přímo s jinými výrazy. Výrazy funkcí jsou uvedeny v K pomocí složených závorek . Například v následujícím výrazu je kvadratický výraz definován jako funkce a aplikován na hodnoty 0 1 2 a 3:

{(3*x^2)+(2*x)+1}'!4

V K jsou pojmenované funkce jednoduše výrazy funkcí uložené do proměnné stejným způsobem, jakým je do proměnné uložena jakákoli datová hodnota.

a:25
f:{(x^2)-1}

Funkce mohou být předány jako argument jiné funkci nebo vráceny jako výsledek z funkce.

Příklady

K je interpretovaný jazyk, ve kterém se vyhodnocuje každý příkaz a okamžitě se zobrazují jeho výsledky. Doslovné výrazy, jako jsou řetězce, si vyhodnotí samy. V důsledku toho je program Hello world triviální:

"Hello world!"

Následující výraz seřadí seznam řetězců podle jejich délky:

x@>#:'x

Výraz je vyhodnocen zprava doleva následovně:

  1. #: 'x vrátí délku každého slova v seznamu x.
  2. > vrátí indexy, které by setřídily seznam hodnot v sestupném pořadí.
  3. @ používá celočíselné hodnoty vpravo k indexování do původního seznamu řetězců.

Funkci určující, zda je číslo prvočíslo, lze zapsat jako:

{&/x!/:2_!x}

Funkce je vyhodnocena zprava doleva:

  1. ! x vyjmenujte kladná celá čísla menší než x.
  2. 2_ zruší první dva prvky výčtu (0 a 1).
  3. x!/: provede modulové dělení mezi původní celé číslo a každou hodnotu ve zkráceném seznamu.
  4. &/ najděte minimální hodnotu seznamu výsledku modulo.

Pokud x není primární, pak jedna z hodnot vrácených operací modulo bude 0 a následně minimální hodnota seznamu. Pokud x je prvočíslo, pak bude minimální hodnota 1, protože x mod 2 je 1 pro jakékoli prvočíslo větší než 2.

Níže uvedenou funkci lze použít k výpisu všech prvočísel mezi 1 a R pomocí:

2_&{&/x!/:2_!x}'!R

Výraz je hodnocen zprava doleva

  1. ! R vyjmenujte celá čísla menší než R.
  2. 'aplikujte každou hodnotu výčtu na funkci prvočísla vlevo. Tím se vrátí seznam 0 a 1.
  3. & vrátit indexy seznamu, kde je hodnota 1.
  4. 2_ zahoďte první dva prvky výčtu (0 a 1)

K finanční produkty

K je základem rodiny finančních produktů. Kdb+ je databáze založená na sloupcích v paměti, která má téměř stejné funkce jako systém pro správu relační databáze . Databáze podporuje SQL , SQL-92 a ksql, dotazovací jazyk se syntaxí podobnou SQL a je navržena pro sloupcové dotazy a analýzu polí.

Kdb+ je k dispozici pro několik operačních systémů , včetně Solaris , Linux , macOS a Windows (32bitový nebo 64bitový).

Viz také

  • J , další jazyk inspirovaný APL
  • Q , jazyk kdb+ a nová sloučená verze K a ksql.

Reference

externí odkazy