Loading AI tools
З Вікіпедії, вільної енциклопедії
K — мова обробки масивів розроблена Артуром Уітні та комерціалізована Kx Systems. Раніше мова слугувала основою для бази даних kdb, та пов'язаних фінансових продуктів (наразі компанія використовує Q). Розроблена в 1993, є варіантом мови APL та містить елементи Scheme. Прихильники мови наголошують на її швидкості, простоті роботи з масивами та виразному синтаксисі.
Назва K є скороченням фрази «Keys for kingdom», «Ключі до королівства», «Ключі до керування»[1].
Основні особливості 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:!"/"]
Він обчислюється справа наліво таким чином:
Функцію що визначає чи число є простим можна написати так:
{&/x!/:2_!x}
Так вона обчислюється справа наліво:
Якщо x не просте, тоді одна з остач буде 0, і відповідно 0 буде найменшим значенням списку. Якщо x - просте, то мінімальним значенням буде 1, бо остача від ділення будь-якого числа на 2 дорівнює 1 для будь-якого простого числа більшого за 2.
Наступну функцію можна використати для перелічення всіх простих чисел між 1 та R:
2_&{&/x!/:2_!x}'!R
Справа наліво обчислюється так:
Це незавершена стаття про програмування. Ви можете допомогти проєкту, виправивши або дописавши її. |
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.