Our great sponsors
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
kdb
- Q Coding Guidelines by Finos
-
Ngn/k (free K implementation)
> let's say I have a finance team that have never heard of it - why might they be interested?
In my experience it's very good at quickly developing real-time analytics applications with only a small set of developers. A couple of q developers can develop, maintain and operate the server side of 5 or 6 separate applications without breaking a sweat. Changes come in at a high speed too.
It's a highly interactive language. A bit like a lisp, you start up a q process, open a port and then you iterate and update your application live without needing to restart. Typically on our projects we've had a well iterated program running in QA for a day or 2 before opening a PR (which becomes more of a formality for getting the solution to the problem into prod at that stage).
The q language itself is quite wordy. Check the reference page: https://code.kx.com/q/ref/ Many programs written in q consist mainly of the key words with the special operators interspersed. Also see some example libraries: https://github.com/finos/kdb
It's been a fairly stable language to work with, having few breaking changes between successive versions. q code written 8/9/10 years ago on older versions will most likely still run the same today. We have source code on one project at work which hasn't had a code change in 6 years now (despite moving through different versions 2.8->3.0->3.3->3.5->4.0) and it runs daily without a hiccup.
Mostly it's a joy working with it because I feel like I get to tell the computer what I want it to do, without also having to tell it how to do it.
aoc2017
-
Ngn/k (free K implementation)
In case you've jumped straight to the comments, here are some 'intro' links. Many of these also appear in ngn/k's readme.
First, direct links to ngn/k in the browser:
- REPL: https://ngn.bitbucket.io/k/#r
- editor: https://ngn.bitbucket.io/k/
Second, the best one-stop shop for an overview of k6's primitives (both ngn/k and oK are based on k6). https://github.com/JohnEarnest/ok/blob/gh-pages/docs/Manual....
The best k intro examples are in John Earnest's k editor iKe - there's a dropdown at the bottom right. http://johnearnest.github.io/ok/ike/ike.html
ngn/k's editor also has an 'examples' dropdown in its menu.
Next, some Advent of Code solutions, to show that k doesn't have to look like a mass of meaningless symbols: https://github.com/chrispsn/aoc2017/blob/main/answers.k
For an illustration of k's strengths,
What are some alternatives?
ngn-k-tutorial - An ngn/k tutorial.
Kbd - Alternative unified APL keyboard layouts (AltGr, Backtick, Compositions)
kona - Open-source implementation of the K programming language
array - Simple array language written in kotlin
ok - An open-source interpreter for the K5 programming language.
kerf1 - Kerf (Kerf1) is a columnar tick database and time-series language for Linux/OSX/BSD/iOS/Android. It is written in C and natively speaks JSON and SQL. Kerf can be used for trading platforms, feedhandlers, low-latency networking, high-volume analysis of realtime and historical data, logfile processing, and more.
PDP_11_Simulator - PDP11 Simulator written in APL
april - The APL programming language (a subset thereof) compiling to Common Lisp.
bqn-libs - Informal collection of BQN utilities