K (язык программирования) - Википедия - K (programming language)
Эта статья нужны дополнительные цитаты для проверка.Август 2011 г.) (Узнайте, как и когда удалить этот шаблон сообщения) ( |
Парадигма | множество, функциональный |
---|---|
Разработано | Артур Уитни |
Разработчик | Kx Systems |
Впервые появился | 1993 |
Печатная дисциплина | динамичный, сильный |
Интернет сайт | kx |
Под влиянием | |
А +, APL, Схема | |
Под влиянием | |
Q |
K проприетарный множество язык программирования обработки, разработанный Артур Уитни и коммерциализируется Kx Systems. Язык служит основой для kdb +, в памяти, на основе столбцов база данных и другие сопутствующие финансовые продукты.[1] Язык, первоначально разработанный в 1993 году, представляет собой вариант APL и содержит элементы Схема. Сторонники языка подчеркивают его скорость, удобство работы с массивами и выразительный синтаксис.[2]
История
До разработки K Артур Уитни много работал с APL, сначала в I. P. Sharp Associates рядом Кен Айверсон и Роджер Хуэй, а позже в Морган Стенли разработка финансовых приложений. В Morgan Stanley Уитни помогала развиваться А +, вариант APL, для облегчения миграции приложений APL из IBM мэйнфреймы в сеть Sun рабочие станции. A + имел меньший набор примитивных функций и был разработан для ускорения работы и обработки больших наборов данных временных рядов.[3]
В 1993 году Уитни покинул Morgan Stanley и разработал первую версию языка К. В то же время он основал Kx Systems для коммерциализации продукта и подписал эксклюзивный контракт с Юнион Банк Швейцарии (UBS). В течение следующих четырех лет он разрабатывал различные финансовые и торговые приложения, используя K для UBS.
Контракт закончился в 1997 году, когда UBS объединился с Швейцарский банк. В 1998 году Kx Systems выпустила kdb +, база данных, построенная на K. kdb была в памяти, столбчатый база данных и включенный ksql, язык запросов с SQL -подобный синтаксис. С тех пор с K и kdb + было разработано несколько финансовых продуктов. kdb + / tick и kdb + / taq были разработаны в 2001 году. kdb +, 64-разрядная версия kdb + была выпущена в 2003 году, а kdb + / tick и kdb + / taq были выпущены в 2004 году. Q, язык, который объединил функции основного языка K и ksql.[4]
Уитни выпустила производную от К. под названием Shakti в 2018 году.[5]
Обзор
K разделяет ключевые функции с APL. Они оба интерпретированный, интерактивный языки, отличающиеся кратким и выразительным синтаксисом. У них есть простые правила приоритета, основанные на оценке справа налево. Языки содержат богатый набор примитивных функций, предназначенных для обработки массивов. Эти примитивные функции включают математические операции, которые работают с массивами как целыми объектами данных, и операции с массивами, такие как сортировка или изменение порядка массива на обратное. Кроме того, язык содержит специальные операторы, которые в сочетании с примитивными функциями выполняют типы итерации и рекурсии. В результате сложные и расширенные преобразования набора данных могут быть выражены как цепочка подвыражений, при этом каждое звено выполняет сегмент вычисления и передает результаты следующему звену в цепочке.
Как и APL, примитивные функции и операторы представлены одиночными или двойными символами; однако, в отличие от APL, K ограничивается Набор символов ASCII (как и другой вариант APL, J ). Чтобы учесть это, набор примитивных функций для K меньше и сильно перегружен, где каждый из символов ASCII представляет две или более различных функций или операций. В данном выражении фактическая функция, на которую имеется ссылка, определяется контекстом. В результате K-выражения могут быть непрозрачными и трудными для анализа людьми. Например, в следующем надуманном выражении восклицательный знак !
относится к трем различным функциям:
2!!7!4
Чтение справа налево первого !
деление по модулю, которое выполняется на 7 и 4, в результате чего получается 3. Следующий !
является перечислением и перечисляет целые числа меньше 3, в результате чего получается список 0 1 2. Последний !
- это вращение, при котором список справа поворачивается два раза влево, что дает окончательный результат 2 0 1.
Второе основное отличие K состоит в том, что функции первоклассные объекты, концепция, заимствованная из Схема. Первоклассные функции могут использоваться в тех же контекстах, где могут использоваться значения данных. Функции могут быть указаны как анонимные выражения и использоваться непосредственно с другими выражениями. Функциональные выражения указываются в K с помощью фигурные скобки. Например, в следующем выражении квадратное выражение определяется как функция и применяется к значениям 0 1 2 и 3:
{(3 * x ^ 2) + (2 * x) +1} '! 4
В языке K именованные функции - это просто функциональные выражения, хранящиеся в переменной, точно так же, как любое значение данных сохраняется в переменной.
а:25ж:{(Икс^2)-1}
Функции могут быть переданы как аргумент другой функции или возвращены как результат функции.
Примеры
K - это интерпретируемый язык, в котором каждое выражение оценивается и его результаты немедленно отображаются. Литеральные выражения, такие как строки, оценивают сами себя. Следовательно, Привет, мир -программа тривиальна:
"Привет, мир!"
Следующее выражение сортирует список строк по их длине:
Икс@>#:'Икс
Выражение оценивается справа налево следующим образом:
- #: 'x возвращает длину каждого слова в списке x.
- > возвращает индексы, которые сортировали бы список значений в порядке убывания.
- @ используйте целые числа справа для индексации исходного списка строк.
Функцию, определяющую, является ли число простым, можно записать как:
{&/Икс!/:2_!Икс}
Функция оценивается справа налево:
- ! x перечисляет положительные целые числа меньше x.
- 2_ отбрасывает первые два элемента перечисления (0 и 1).
- x! /: выполняет деление по модулю между исходным целым числом и каждым значением в усеченном списке.
- & / найти минимальное значение списка результата по модулю.
Если x не является простым, тогда одно из значений, возвращаемых операцией по модулю, будет 0 и, следовательно, минимальное значение списка. Если x простое, то минимальное значение будет 1, потому что x mod 2 равен 1 для любого простого числа больше 2.
Приведенную ниже функцию можно использовать для перечисления всех простых чисел от 1 до R с помощью:
2_&{&/Икс!/:2_!Икс}'!Р
Выражение оценивается справа налево.
- ! R перечислить целые числа меньше R.
- 'применить каждое значение перечисления к функции простых чисел слева. Это вернет список из 0 и 1.
- & вернуть индексы списка, где значение равно 1.
- 2_ отбросить первые два элемента перечисления (0 и 1)
K финансовых продуктов
K - это основа семейства финансовых продуктов. Kdb + - это база данных на основе столбцов в памяти с большинством тех же функций, что и система управления реляционной базой данных. База данных поддерживает SQL, SQL-92 и ksql, язык запросов с синтаксисом, подобным SQL и разработанный для запросов на основе столбцов и анализа массивов.
Kdb + доступен для нескольких операционные системы, включая Солярис, Linux, macOS, и Windows (32-битный или 64-битный).
Смотрите также
Рекомендации
- ^ "Kx Systems".
- ^ Айверсон, Кеннет. «Нотация как инструмент мысли». Архивировано из оригинал на 2013-09-20. Получено 2015-02-23.
- ^ "Артур Био и интервью".
- ^ Гарланд, Саймон (28 декабря 2004 г.), Язык Q, расширяющий привлекательность векторов, Vector UK, архивировано из оригинал 1 января 2007 г.
- ^ https://shakti.com/history/
внешняя ссылка
- Официальный веб-сайт, Kx Systems
- Официальный веб-сайт, кдб +
- Обзор K (со ссылкой на справочную карту K)
- Деннис Шаша - K как язык прототипирования
- Майкл Шидловски - Скринкаст, сравнивающий решения конкретной проблемы в K vs. Ява
- K Артура Уитни (2005)
- Ok REPL для клона K
- Kona реализация K3 с открытым исходным кодом