Сегодня мы представляем яркого представителя NoSQL мира, kdb+ - "time series database" системы "колоночник", популярную в кругах алгоритмического трейдинга и околобиржевого процессинга. Имеет встроенные языки, называемые q (более человеческий, по публичному утверждению авторов) и k (сами догадаетесь). 32-битная версия бесплатна. 64-битная версия продаётся, по слухам, за 50000$ за рабочее место. (Я ничего такого не слышал и не знаю, где эти слухи ходят! Все имена и цифры выдуманы.) Посмотрим, какой фантастический функционал предлагают за эти, не боюсь откровенного слова, смешные деньги.
Пример кода на q:
ld:{if[not type key L::`$(-10_string L),string x;.[L;();:;()]];i::j::
-11!(-2;L);if[0<type i;-2 (string L),
" is a corrupt log. Truncate to length ",(string last i)," and restart";exit 1];
hopen L};
Эта система - для настоящих профессионалов, которые ценят свои вложенные усилия и хотят получить достойную оплату своего труда. Хотя кое-что не соблюдено: по ней печатают книги. Боюсь, зря: надо было ограничиться курсами.
Начнём с простого. Чему равно 3+4*5? Калькулятор Microsoft Windows в чайниковском режиме скажет 35, в инженерном - 23. Проверяем:
q)3+4*5
23
Кажется, что всё как обычно? Переместим умножение.
q)3*4+5
27
Вы ожидали 17 в любом случае? Вы ничего не понимаете. Надо думать как "ненаучный" режим, но считать справа налево, а не слева направо. Привыкайте к миру высоких биржевых технологий, где ask это продажа, а bid это покупка. Скобки - ваш друг:
q)(3*4)+5
17
Кстати, тут круглые скобки. Но не обольщайтесь! В отличие от ламерских языков навроде Python и Javascript, для вызова функции нужны [квадратные; скобки], а для записи списка (круглые;скобки); аргументы, естественно, разделяются не запятой, а точкой с запятой:
q)a:{x+y}
q)a[3;4]
7
q)last `a`b`c
`c
( страньше и чудесатее )
Надеемся, что наше короткое введение, особенно ценное для пользователей таких хило-студенческих и бесперспективных языков, как C++ и Java, поможет вам войти в мир настоящих профессионалов программирования. Не надо бегать за курсами на Forex, ваш удел - непосредственно создавать колебания курсов!