Как стать автором
Обновить

База данных KDB+: от финансов до «Формулы 1»

Время на прочтение12 мин
Количество просмотров9.4K
Всего голосов 13: ↑11 и ↓2+9
Комментарии14

Комментарии 14

А какой у kdb чудесный Java API (a straightforward and compact API, как написано в readme). Единственный класс kx.c с именами методов типа k или ks.

Особенно чудесные у kdb сообщения об ошибках — вот где настоящий ад. Хотя после нескольких месяцев ковыряния, я как-то стал понимать, что мне для анализа данных стало проще запустить q, а не python + pandas...

Можно сделать связку python + kdb, воспользовавшись PyQ.

Функция на K, реализующая большую часть генератора LL1 парсера по заданной грамматике

Кто-нибудь знает как можно развидеть это творение Сатаны? Есть подозрение что если этот код прочитать вслух — можно открыть портал в ад :)

Не волнуйтесь, важная особенность знания q/kdb — оно быстро исчезает, если не пользоваться каждый день. Маленький период полураспада, так сказать.

А нет идей переделать синтаксис языка? Когда один и тот же оператор делает принципиально разные вещи, это взрывает мозг.
Это сделали как раз в Q. Там только осталось несколько многозначных функций, реализующих какую-то глобальную идею, типа разбить что-то на части или наоборот собрать что-то из частей.
Да нет, я как раз про Q, что там в K творится (яркий пример в статье приведен) обычных пользователей не очень беспокоит. Хотел пример привести, но ниже ссылки дали
Очень суровая штука, язык Q, конечно, внушает…

Для работы с q в Питоне с помощью PyQ, можно и не переходить в псевдо-q режим для создания таблицы:


>>> from pyq import q
>>> q.trade = q('([]date:();sym:();qty:())')
>>> q.insert('trade', (date(2006,10,6), 'IBM', 200))
k(',0')
>>> q.insert('trade', (date(2006,10,6), 'MSFT', 100)) 
k(',1')
>>> q.trade.show()
date       sym  qty
-------------------
2006.10.06 IBM  200
2006.10.06 MSFT 100
А под «атомарными» инструкциями в статье имеются в виду реально атомарные, или всё же скалярные?
С одной стороны, атомарные реально медленные, с другой — непонятно, зачем их использовать в одном потоке.
атомарные — это особенность терминологии в Q, имеются в виду операции над атомами (не делимыми значениями vs составными — списки, таблицы и т.п.). Возможность выполнять код паралельно в потоках в Q есть, но она специфическая и подходит только для распаралеливания длительных вычислений или обращений к диску.
Раз, два — чуть больше подробностей по языку и его последствиям :)
Зарегистрируйтесь на Хабре, чтобы оставить комментарий