4 ms·
About 2 years ago I discovered a programming language called K. It's a very unusual-looking, extremely terse language in the APL family. It just "clicked" for m
by RodgerTheGreat 10y ago
About 2 years ago I discovered a programming language called K. It's a very unusual-looking, extremely terse language in the APL family. It just "clicked" for me. I enjoy the ability to experiment with different algorithms and approaches in a few keystrokes, and learning to think in a "vector-oriented" fashion has opened my eyes to much more elegant formulations of old problems.
There aren't many extensive tutorial materials available for K, so when I decided to learn it I pored over the reference manual carefully and wrote an interpreter to try to match the spec. I built programming environments on top of my interpreter which are probably only suitable for my own use, but they make me deliriously happy to use. I made connections with both seasoned K programmers and other enthusiasts through my open-source projects with the language. Eventually I was approached with a few offers, and I am now gainfully employed by a firm which uses K more or less exclusively for backend work.
If you find a niche that makes you happy, and you're willing to invest the time to develop an unusual area of expertise, a career can follow naturally.
- clappski 10y agoIsn't K related to Q (and KDB)? We have one guy at work responsible for all of our KDB stuff because no one wants to learn either!
- RodgerTheGreat 10y agoQ and KDB(+) are written on top of K. The version of K which is currently commercially available from Kx Systems is K4, and it comes "hidden" within the kdb+ executable. The company I presently work for uses a customized build of K3. My interpreter targets K5/K6, the bleeding-edge release. edit: If you can get past your initial reaction to the unfamiliarity of the syntax, consider giving K an honest shot. You might find you like it.
- jnbiche 10y agoAt the risk of spamming the same question to everyone who comments here with a less common language, are you employed remotely? Someone asked a question on Ask HN a few days back about whether learning a less common language made remote work more feasible. Do you get many remote opportunities as a known K programmer?
- RodgerTheGreat 10y agoI have done some remote work related to K, but it seems that most of the places that are hiring K programmers want them physically located near finance hubs. For my current job I had to relocate to NYC. It's a bit of a mixed bag, and not my ideal place to live in the long term, but I am very much enjoying working at this company.
- mamcx 10y agoIs your interpreter available? I'm prototyping a language that will share some ideas from K but with more "normal" syntax. However all available K interpreters are as dense as K itself!
- RodgerTheGreat 10y agoCertainly. It's written in a fairly dense style by JavaScript standards, but perhaps you'll find it less impenetrable than others? https://github.com/JohnEarnest/ok/blob/gh-pages/oK.js https://github.com/JohnEarnest/ok/blob/gh-pages/oK.js I'd be happy to try to answer any questions you might have about it.
- mamcx 10y agoYes, is way more clean than others ;). Probably will help if put it in literate style or a article about how is build. Some of the functions at the start (of 2 letters) what are them? Imagine how will be do something in the style of "Building K in small pieces".
- happyslobro 10y agoK lang was featured here a few months ago: https://news.ycombinator.com/item?id=11561573 https://news.ycombinator.com/item?id=11561573
- happyslobro 10y ago(15 minutes later) Just started playing with this, it is much fun. I'll definitely be golfing more on the weekends now :) For anyone else just starting out, I suggest using readline with the REPL: `rlwrap q`. It gives you history, search, familiar line editing commands, etc.
- RodgerTheGreat 10y agoIf anyone happens to be on a mobile device, I recently put together a mobile-oriented frontend for my K interpreter. It's a somewhat different dialect (k6) and much slower than the real deal, but it makes a pleasant pocket calculator: http://johnearnest.github.io/ok/mobile.html http://johnearnest.github.io/ok/mobile.html Try entering: pl[.5*!50;sin]