K — мова обробки масивів розроблена та комерціалізована Kx Systems. Раніше мова слугувала основою для бази даних kdb, та пов'язаних фінансових продуктів (наразі компанія використовує Q). Розроблена в 1993, є варіантом мови APL та містить елементи Scheme. Прихильники мови наголошують на її швидкості, простоті роботи з масивами та виразному синтаксисі.
K | |
---|---|
Парадигма | векторна, функційна |
Дата появи | 1993 |
Творці | |
Розробник | Kx Systems |
Система типізації | динамічна, строга |
Під впливом від | , APL, Scheme |
Вебсайт | kx.com |
Назва K є скороченням фрази «Keys for kingdom», «Ключі до королівства», «Ключі до керування».
Огляд
Основні особливості K спільні з APL. Обоє вони інтерпретовані, інтерактивні, з виразним синтаксисом. Також вони мають прості правила пріорітетів операцій: обчислення проводяться справа наліво. Мови містять багатий набір примітивних функцій для роботи з масивами. Вони включають математичні операції які працюють над масивами, операції з масивами, такі як сортування чи реверс. Також існують спеціальні оператори, що в комбінації з примітивними функціями дають певну подобу ітерацій та рекурсії. В результаті складні перетворення набору даних можуть виражатись ланцюгом виразів, в якому кожен елемент виконує певну частину роботи, і передає результат наступному.
Як і в APL, примітивні функції та оператори представлені одинарними та подвійними символами, але на відміну від APL, K обмежився набором символів ASCII (як і в J). Щоб це стало можливим, набір примітивних функцій в K менший, і дуже перевантажений, кожен ASCII символ позначає дві, чи більше різних операцій. В результаті K вирази можуть бути незрозумілими й складними для аналізу. Наприклад в наступному виразі, знак оклику “!” позначає три різні функції:
2!!7!4
Якщо читати справа наліво, то перший ! - остача від ділення. Остача від ділення 7 на 4 - 3. Наступний знак оклику - створює впорядкований список всіх цілих що менші за 3, і дає в результаті список 0 1 2. Останній знак оклику - циклічний зсув вліво, на 2 позиції, який дає нам список 2 0 1.
Іншою ключовою відмінністю K є те, що функції теж є звичайними даними. Такий підхід запозичений з Scheme. Функції можуть описуватись за допомогою виразів, і підставлятись в інші вирази. Функції в K задаються фігурними дужками. Наприклад в наступному виразі квадратичний вираз записується як функція і застосовується до значень 0 1 2 3:
{(3*x^2)+(2*x)+1}'!4
В K, іменовані функції - це просто результати обчислення функційного виразу, записаний в змінну, так само як і інші значення змінних.
x:25 f:{(x^2)-1}
На додачу, функції можна передавати як аргументи іншим функціям, чи повертати як результат функції.
Приклади
K - інтерпретована мова програмування, і кожен вираз обчислюється й миттєво відображається. Рядки обчислюються самі в себе. Тому програма Hello world виглядає тривіально:
"Hello world!"
Список рядків можна задати так:
("row1";"row2";"row3")
Наступний вираз сортує список каталогів у корені файлової системи Linux (у реалізації kona):
folders[<#:'folders:!"/"]
Він обчислюється справа наліво таким чином:
- !"/" повертає список назв каталогів у "/"
- folders: !"/" записує цей список у змінну "folders"
- #:' працює як функція map у Лісп - застосовує оператор # (визначити довжину вектора) до кожного елементу справа. Оскільки справа у нас folders, це означає що на виході ми отримуємо список довжин назв каталогів.
- < повертає порядкові індекси елементів відсотрованих за зростанням. Наприклад, < 1 2 3 0 4 поверне 3 0 1 2 4. Сортування індексів відбувається за розрядами
- folders[x] робить вибірку з списку folders по індексам, вказаним у x. Оскільки індекси відображають правильний порядок елементів, на виході отримується список сортованих по довжині рядків.
Функцію що визначає чи число є простим можна написати так:
{&/x!/:2_!x}
Так вона обчислюється справа наліво:
- !x створює список додатних цілих менших за x.
- 2_ викидає зі списку два перші елементи (0 та 1).
- x!/: знаходить остачу від ділення початкового числа, і кожного значення в списку.
- &/ знаходить мінімальне значення в списку остач.
Якщо x не просте, тоді одна з остач буде 0, і відповідно 0 буде найменшим значенням списку. Якщо x - просте, то мінімальним значенням буде 1, бо остача від ділення будь-якого числа на 2 дорівнює 1 для будь-якого простого числа більшого за 2.
Наступну функцію можна використати для перелічення всіх простих чисел між 1 та R:
2_&{&/x!/:2_!x}'!R
Справа наліво обчислюється так:
- !R список чисел менших за R.
- ' передати кожне число списку функції зліва. Це дасть список нулів та одиниць.
- & поверне індекси списку зі значенням 1. Вони водночас і будуть відповідними простими числами
- 2_ викреслить 0 і 1 зі списку простих
Див. також
Це незавершена стаття про програмування. Ви можете проєкту, виправивши або дописавши її. |
Посилання
- K (by Arthur Whitney, language creator) [ 20 січня 2014 у Wayback Machine.] (англ.)
- kona - Вільна реалізація K3.2 [ 16 травня 2011 у Wayback Machine.]
- code.kx.com username:anonymous, password:anonymous [ 15 серпня 2011 у Wayback Machine.]
- K not C [ 3 грудня 2017 у Wayback Machine.] (укр.)
- Q For Mortals: A Tutorial in Q Programming, by Jeffry A Borror, AISBN 78-1434829016.
- Dennis Shasha - K as a Prototyping Language [ 17 лютого 2020 у Wayback Machine.]
- A Shallow Introduction to the K programming language [ 9 листопада 2020 у Wayback Machine.]
- Michael Schidlowsky - Screencast comparing solutions of a specific problem [ 1 листопада 2017 у Wayback Machine.] in K vs. Java
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
K mova obrobki masiviv rozroblena ta komercializovana Kx Systems Ranishe mova sluguvala osnovoyu dlya bazi danih kdb ta pov yazanih finansovih produktiv narazi kompaniya vikoristovuye Q Rozroblena v 1993 ye variantom movi APL ta mistit elementi Scheme Prihilniki movi nagoloshuyut na yiyi shvidkosti prostoti roboti z masivami ta viraznomu sintaksisi KParadigma vektorna funkcijnaData poyavi 1993TvorciRozrobnik Kx SystemsSistema tipizaciyi dinamichna strogaPid vplivom vid APL SchemeVebsajt kx com Nazva K ye skorochennyam frazi Keys for kingdom Klyuchi do korolivstva Klyuchi do keruvannya OglyadOsnovni osoblivosti K spilni z APL Oboye voni interpretovani interaktivni z viraznim sintaksisom Takozh voni mayut prosti pravila prioritetiv operacij obchislennya provodyatsya sprava nalivo Movi mistyat bagatij nabir primitivnih funkcij dlya roboti z masivami Voni vklyuchayut matematichni operaciyi yaki pracyuyut nad masivami operaciyi z masivami taki yak sortuvannya chi revers Takozh isnuyut specialni operatori sho v kombinaciyi z primitivnimi funkciyami dayut pevnu podobu iteracij ta rekursiyi V rezultati skladni peretvorennya naboru danih mozhut virazhatis lancyugom viraziv v yakomu kozhen element vikonuye pevnu chastinu roboti i peredaye rezultat nastupnomu Yak i v APL primitivni funkciyi ta operatori predstavleni odinarnimi ta podvijnimi simvolami ale na vidminu vid APL K obmezhivsya naborom simvoliv ASCII yak i v J Shob ce stalo mozhlivim nabir primitivnih funkcij v K menshij i duzhe perevantazhenij kozhen ASCII simvol poznachaye dvi chi bilshe riznih operacij V rezultati K virazi mozhut buti nezrozumilimi j skladnimi dlya analizu Napriklad v nastupnomu virazi znak okliku poznachaye tri rizni funkciyi 2 7 4 Yaksho chitati sprava nalivo to pershij ostacha vid dilennya Ostacha vid dilennya 7 na 4 3 Nastupnij znak okliku stvoryuye vporyadkovanij spisok vsih cilih sho menshi za 3 i daye v rezultati spisok 0 1 2 Ostannij znak okliku ciklichnij zsuv vlivo na 2 poziciyi yakij daye nam spisok 2 0 1 Inshoyu klyuchovoyu vidminnistyu K ye te sho funkciyi tezh ye zvichajnimi danimi Takij pidhid zapozichenij z Scheme Funkciyi mozhut opisuvatis za dopomogoyu viraziv i pidstavlyatis v inshi virazi Funkciyi v K zadayutsya figurnimi duzhkami Napriklad v nastupnomu virazi kvadratichnij viraz zapisuyetsya yak funkciya i zastosovuyetsya do znachen 0 1 2 3 3 x 2 2 x 1 4 V K imenovani funkciyi ce prosto rezultati obchislennya funkcijnogo virazu zapisanij v zminnu tak samo yak i inshi znachennya zminnih x 25 f x 2 1 Na dodachu funkciyi mozhna peredavati yak argumenti inshim funkciyam chi povertati yak rezultat funkciyi PrikladiK interpretovana mova programuvannya i kozhen viraz obchislyuyetsya j mittyevo vidobrazhayetsya Ryadki obchislyuyutsya sami v sebe Tomu programa Hello world viglyadaye trivialno Hello world Spisok ryadkiv mozhna zadati tak row1 row2 row3 Nastupnij viraz sortuye spisok katalogiv u koreni fajlovoyi sistemi Linux u realizaciyi kona folders lt folders Vin obchislyuyetsya sprava nalivo takim chinom povertaye spisok nazv katalogiv u folders zapisuye cej spisok u zminnu folders pracyuye yak funkciya map u Lisp zastosovuye operator viznachiti dovzhinu vektora do kozhnogo elementu sprava Oskilki sprava u nas folders ce oznachaye sho na vihodi mi otrimuyemo spisok dovzhin nazv katalogiv lt povertaye poryadkovi indeksi elementiv vidsotrovanih za zrostannyam Napriklad lt 1 2 3 0 4 poverne 3 0 1 2 4 Sortuvannya indeksiv vidbuvayetsya za rozryadami folders x robit vibirku z spisku folders po indeksam vkazanim u x Oskilki indeksi vidobrazhayut pravilnij poryadok elementiv na vihodi otrimuyetsya spisok sortovanih po dovzhini ryadkiv Funkciyu sho viznachaye chi chislo ye prostim mozhna napisati tak amp x 2 x Tak vona obchislyuyetsya sprava nalivo x stvoryuye spisok dodatnih cilih menshih za x 2 vikidaye zi spisku dva pershi elementi 0 ta 1 x znahodit ostachu vid dilennya pochatkovogo chisla i kozhnogo znachennya v spisku amp znahodit minimalne znachennya v spisku ostach Yaksho x ne proste todi odna z ostach bude 0 i vidpovidno 0 bude najmenshim znachennyam spisku Yaksho x proste to minimalnim znachennyam bude 1 bo ostacha vid dilennya bud yakogo chisla na 2 dorivnyuye 1 dlya bud yakogo prostogo chisla bilshogo za 2 Nastupnu funkciyu mozhna vikoristati dlya perelichennya vsih prostih chisel mizh 1 ta R 2 amp amp x 2 x R Sprava nalivo obchislyuyetsya tak R spisok chisel menshih za R peredati kozhne chislo spisku funkciyi zliva Ce dast spisok nuliv ta odinic amp poverne indeksi spisku zi znachennyam 1 Voni vodnochas i budut vidpovidnimi prostimi chislami 2 vikreslit 0 i 1 zi spisku prostihDiv takozhAPL persha vektorna mova programuvannya J insha mova stvorena pid vplivom APL Ce nezavershena stattya pro programuvannya Vi mozhete dopomogti proyektu vipravivshi abo dopisavshi yiyi PosilannyaK by Arthur Whitney language creator 20 sichnya 2014 u Wayback Machine angl kona Vilna realizaciya K3 2 16 travnya 2011 u Wayback Machine code kx com username anonymous password anonymous 15 serpnya 2011 u Wayback Machine K not C 3 grudnya 2017 u Wayback Machine ukr Q For Mortals A Tutorial in Q Programming by Jeffry A Borror AISBN 78 1434829016 Dennis Shasha K as a Prototyping Language 17 lyutogo 2020 u Wayback Machine A Shallow Introduction to the K programming language 9 listopada 2020 u Wayback Machine Michael Schidlowsky Screencast comparing solutions of a specific problem 1 listopada 2017 u Wayback Machine in K vs Java