Jump to content

К (язык программирования)

(Перенаправлено с языка программирования K )
К
Парадигма массив , функционал
Разработано Артур Уитни
Разработчик Кх Системы
Впервые появился 1993 год ; 31 год назад ( 1993 )
Дисциплина набора текста динамичный , сильный
Веб-сайт кх
Под влиянием
А+ , APL , Схема
Под влиянием
К , мощность

K — это собственный язык программирования обработки массивов , разработанный Артуром Уитни и коммерциализируемый компанией Kx Systems . Этот язык служит основой для kdb+ на основе столбцов в памяти , базы данных и других связанных финансовых продуктов. [1] Язык, первоначально разработанный в 1993 году, является вариантом APL и содержит элементы Scheme . Сторонники языка подчеркивают его скорость, простоту обработки массивов и выразительный синтаксис. [2]

Прежде чем разработать K, Артур Уитни активно работал с APL, сначала в IP Sharp Associates вместе с Кеном Айверсоном и Роджером Хуи , а затем в Morgan Stanley, занимаясь разработкой финансовых приложений. В Morgan Stanley Уитни участвовала в разработке A+ , варианта APL, для облегчения миграции приложений APL с IBM мейнфреймов в сеть рабочих станций Sun. A+ имел меньший набор примитивных функций и был разработан для скорости и обработки больших наборов данных временных рядов. [3]

В 1993 году Уитни покинула Morgan Stanley и разработала первую версию языка K. В то же время он основал Kx Systems для коммерциализации продукта и подписал эксклюзивный контракт с Union Bank of Switzerland (UBS). В течение следующих четырех лет он разрабатывал различные финансовые и торговые приложения, используя K для UBS.

Контракт закончился в 1997 году, когда UBS объединился со Swiss Bank . В 1998 году компания Kx Systems выпустила kdb+, базу данных, построенную на K. kdb представляла собой базу данных, размещаемую в памяти , столбцово-ориентированную и включала ksql, язык запросов с синтаксисом, подобным SQL . С тех пор с использованием K и kdb+ было разработано несколько финансовых продуктов. kdb+/tick и kdb+/taq были разработаны в 2001 году. kdb+, 64-битная версия kdb+, была выпущена в 2003 году, а kdb+/tick и kdb+/taq были выпущены в 2004 году. kdb+ включал Q , язык, который объединил функции лежащий в основе язык K и ksql. [4]

Уитни выпустила производную от K под названием 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 заключается в том, что функции являются объектами первого класса — концепция, заимствованная из Scheme . Первоклассные функции можно использовать в тех же контекстах, где можно использовать значение данных. Функции можно указывать как анонимные выражения и использовать напрямую с другими выражениями. Выражения функций задаются в K с помощью фигурных скобок . Например, в следующем выражении квадратичное выражение определяется как функция и применяется к значениям 0, 1, 2 и 3:

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

В K именованные функции — это просто функциональные выражения, сохраняемые в переменной точно так же, как любое значение данных сохраняется в переменной.

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

Функции могут передаваться в качестве аргумента другой функции или возвращаться как результат функции.

K — это интерпретируемый язык, в котором оценивается каждое утверждение и немедленно отображаются его результаты. Литеральные выражения, такие как строки, вычисляются сами по себе. Следовательно, программа Hello world тривиальна:

"Hello world!"

Следующее выражение сортирует список строк по их длине:

x@>#:'x

Выражение вычисляется справа налево следующим образом:

  1. #:'x возвращает длину каждого слова в списке x.
  2. > возвращает индексы, которые сортируют список значений в порядке убывания.
  3. @ использует целочисленные значения справа для индексации исходного списка строк.

Функцию, определяющую, является ли число простым, можно записать так:

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

Функция вычисляется справа налево:

  1. !x перечисляет положительные целые числа, меньшие, чем x.
  2. 2_ удаляет первые два элемента перечисления (0 и 1).
  3. x!/: выполняет деление по модулю между исходным целым числом и каждым значением в усеченном списке.
  4. &/ находим минимальное значение списка результатов по модулю.

Если x не является простым числом, то одно из значений, возвращаемых операцией по модулю, будет 0 и, следовательно, минимальным значением списка. Если x — простое число, то минимальное значение будет равно 1, поскольку x mod 2 равен 1 для любого простого числа, большего 2.

Приведенную ниже функцию можно использовать для вывода списка всех простых чисел от 1 до R с помощью:

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

Выражение вычисляется справа налево.

  1. !R перечисляет целые числа меньше R.
  2. ' применяем каждое значение перечисления к функции простых чисел слева. Это вернет список из 0 и 1.
  3. & верните индексы списка, где значение равно 1.
  4. 2_ удалить первые два элемента перечисления (0 и 1)

К финансовые продукты

[ редактировать ]

K является основой семейства финансовых продуктов. Kdb+ — это база данных на основе столбцов, хранящаяся в памяти и обладающая практически теми же функциями, что и система управления реляционными базами данных . База данных поддерживает SQL , SQL-92 и ksql — язык запросов с синтаксисом, похожим на SQL и предназначенный для запросов на основе столбцов и анализа массивов.

Kdb+ доступен для нескольких операционных систем , включая Solaris , Linux , macOS и Windows (32- или 64-разрядные версии).

См. также

[ редактировать ]
  • J , еще один язык, вдохновленный APL.
  • Q , язык kdb+ и новая объединенная версия K и ksql.
  1. ^ «Кх Системс» .
  2. ^ Айверсон, Кеннет. «Нотация как инструмент мышления» . Архивировано из оригинала 20 сентября 2013 г. Проверено 23 февраля 2015 г.
  3. ^ «Биография Артура и интервью» .
  4. ^ Гарланд, Саймон (28 декабря 2004 г.), Q Language Widening the Appeal of Vectors , Vector UK, заархивировано из оригинала 1 января 2007 г.
  5. ^ «Шакти» .
[ редактировать ]
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 2e527f34aa6e0fc050115655ce69aade__1708151400
URL1:https://arc.ask3.ru/arc/aa/2e/de/2e527f34aa6e0fc050115655ce69aade.html
Заголовок, (Title) документа по адресу, URL1:
K (programming language) - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)