https://www.dyalog.com/case-studies/index.htm https://github.com/interregna/arraylanguage-companies
121 karma · joined June 11, 2021
https://www.dyalog.com/case-studies/index.htm https://github.com/interregna/arraylanguage-companies
> One misconception is that languages like J are in the same caliber as less practical languages (esoteric languages like brainf*k) that use symbols more than words. The assumption is that these are mostly for recreational programming.
Making some crude assumptions here, I believe you've already invested a lot of time into studying python, or some other well known language. Understanding python or C gives you an idea of hundreds of other languages because they use similar keywords and structures to represent their code. English also helps a great deal in understanding these languages.
Now, looking at this, giving a language like APL or J a chance means that you have to spend time learning their kind of notation. If you spend your time looking at APL without making an effort to understand it, then you cannot be surprised that it looks like regex to you.
APL also has support for GUI apps (Windows only) using .NET, but graphics takes some additional effort: https://www.youtube.com/watch?v=iC9floP7POU
https://docs.google.com/document/d/1W83ME5JecI2hd5hAUqQ1BVF3...
https://github.com/tlack/b-decoded
https://chat.stackexchange.com/rooms/90748/conversation/ngn-...
They're not 1.5 paragraphs per line, but enough to give a taste of the implementation style.
In K, terseness is part of the package, and it is considered good, because you can see the innards of your code at a glance, there's lesser text to change if you mess up, so on, so forth. Some time investment in the language may or may not help with this.
K2-K4
K5-K6
K7-K9
From my knowledge. Each group has the same general primitives and syntax, and major changes happen between those eras. Since K's design allows removal and addition of features, this is very hard to document. This, combined with Arthur Whitney's rocky relationship with documentation makes most sources of changes anecdotal. Most changes to primitives have been documented in the wiki's primitive pages. I'll have to summarize them in the history pages.
K4 has good docs, and K6 has a well-written manual on oK's repository. The rest are a fill-in-the-blanks game which have to be fished from archive pages and a lot of trial and error. K9, the latest one is still undergoing changes, but there are ongoing efforts to make tutorials in kparc/kcc and estradajke/k9-simples on github.
If you'd like some examples of traditionally literate array programming, you can see:
- tangentstorm's J streams: https://www.twitch.tv/tangentstorm
- tangentstorm's J repositories: https://github.com/tangentstorm?tab=repositories&q=&type=&la...
- Dyalog's APL repositories: https://github.com/orgs/Dyalog/repositories?q=&type=&languag...
A usual result of using array languages is a want to have that same terseness in other languages. Array languages usually deviate from the style and aesthetic of general programming languages. It may be jarring to look at, but as with anything, a little experience with using them can go a long way with understanding why many people work with something so "unreadable".
K is another array language which has a proprietary implementation. Tcl is a relatively popular proprietary language.