For curious, several facts i noticed by running anaconda distributed shakti:<p>1) k7 implementation obviosly is completely different codebase from current kdb+. I ran the following query on kdb+ and k7<p><pre><code> a1:1000000?1000000;b1:1000000?1000000;
\t select #a by b from (+`a`b!(a1;b1));
</code></pre>
And difference seems to be in order of magnitude (k7 is 650 msec, kdb+ is 77 msec), also on k7, time increases for subsequent execution of same query ==> memory leak? Looks like it's very early stage.<p>2) null number (0N) and infinity are now represented as non-ascii symbols Ø and ∞, also parsed as such.<p>3) type operator (@) returns symbols (`i, `j) for ints and longs etc, was returning shorts before. Interesting how do we distinguish arrays/scalars now.<p>4) default numeric type (e.g. 12345) is now int, was long.<p>5) entering overflow numeric literal returns Ø, was throwing exception.<p>6) k in anaconda is not stripped 675K linux x64 executable, stripped is 220K, while kdb+ is 657K as sold.
A concept in K that I wish more languages had is indexing with a list of indices. It always blows peoples' minds when I tell them how sorting works in K. You use grade (<) to return the indices that will sort the array if indexed in that order. Then you pass in that list as the indices to the list. They do it in the string examples in this tutorial.
It's a very good tutorial (it's not easy to find information about k7), but it is a bit outdated. For example, % is inverse and not sqrt now, and it is not possible to evaluate parsed trees with !. I am sure the differences are small, but be prepared to be surprised with some descriptive error messages like:
'nyi
What's important is that APL language family isn't a domain-specific one, suitable for some particular tasks in a narrow niche. To the contrary, they are languages of computations, allowing rather short paths from thought to implementation of an algorithm, compared to other languages.<p>I'm sure K knowledge and experience ensure the practitioner powerful tools for wide variety of problems in many areas.
The mentioned gitlab repo doesn't seem to exist anymore. One would have to download kdb+ from kx, but I am not sure if this wouldn't be K4 only. Alternatively, one could play with oK (K6) which would also give you the nice graphical iKe.
K7 like it's ancestor APL is extremely powerful language, whit great signal to noise ratios. However it is kind of "write-only" language.. When trying to read a code not written by you (or written by you couple of monthes ago) you struggle to understand it...
The language looks generally good for its goal, except these two operators<p><pre><code> |/y / maximum
&/y / minimum
</code></pre>
Those two characters have no connection with the operation they stand for and seem to be randomly picked from the available symbols on the keyboard. Why not simply max y and min y, which anybody can read and understand?
Interesting previous discussion of K programming languages (up to K5):<p><a href="https://news.ycombinator.com/item?id=16500908" rel="nofollow">https://news.ycombinator.com/item?id=16500908</a> (2005)
Yeah I could really use that. I'd like to take advantage of its enhanced BCLK capabilities but every time I mess with it it doesn't POST. <a href="https://www.assignmentland.co.uk/" rel="nofollow">https://www.assignmentland.co.uk/</a>
is it a private repo? this is asking me to login<p><a href="https://gitlab.com/k7db/k" rel="nofollow">https://gitlab.com/k7db/k</a>
Trying to learn how to use A+ from aplusdev.org to do some simple work for my personal use. A previous language designed by Arthur Whitney and GPL also. Included in Debian derived distros btw.