Which means that what’s not could be a roadmap for bridging the gap. I did say in another thread one might make a DSL out of these array languages in something like Racket. So, what does DrRacket lack that author said J environment has?
Hm I wonder if it’s better than R’s development environment? It’s also one line of code to plot something in R, e.g.:
$ R
....
> plot(1:5, 2:6)
R also has a good culture of documention. The docs are also substantially better than say Python’s. (I’ve also heard people say PHP has very good docs, which makes me think that good docs can make up for warts in the language, since R has many of those too.)
Less famously than the symbols/terseness, this has been a big part of the APL-family ethos over the years too, which is an interesting combination. There’s an anecdote claiming that the original APL having a conveniently interactive time-sharing interpreter, in the era when most stuff was run as batch jobs, was even the main reason APL became established within IBM:
The history of APL at IBM has been a curious one. In the early days, those of us who believed in APL were regarded as being a little (perhaps more than a little) strange. Since much of the strangeness was concentrated in IBM Research, this was tolerated. Practical people (the kind of people who make sales and meet payrolls) expect research people to be strange and are usually disappointed when they’re not. So the strange people in Research were written off as overhead and left to amuse themselves with their incomprehensible, impractical symbols.
What that particular Research group did, of course, was produce the most solid, dependable, useful time-sharing system anyone had ever seen. I wish I could tell you what it felt like in those early days to have the use of a system that was up twenty-four hours a day, seven days a week. No one had ever known such a luxury. People who didn’t bother to investigate never believed us when we told them about it.
But some people did investigate what the researchers had developed and started to use it to do IBM’s key bread-and-butter applications. This way of doing business was so productive that it spread like wildfire. By the time the practical people found out what had happened; APL was so important a part of how IBM ran its business that it could not possibly be uprooted.
After browsing the wiki for a bit and discovering Jd (a J columnar RDBMS), I remembered K (and kdb+), as both the syntax and the immediate mention of a columnar RDBMS reminded me of it. So it seems, both are APL-inspired.
Nearly everything he says about J is also true of DrRacket.
Which means that what’s not could be a roadmap for bridging the gap. I did say in another thread one might make a DSL out of these array languages in something like Racket. So, what does DrRacket lack that author said J environment has?
Probably some of the “Labs” features. There is the “gracket” format as a starting point.
Hm I wonder if it’s better than R’s development environment? It’s also one line of code to plot something in R, e.g.:
R also has a good culture of documention. The docs are also substantially better than say Python’s. (I’ve also heard people say PHP has very good docs, which makes me think that good docs can make up for warts in the language, since R has many of those too.)
pops open this window. If I want to plot values of any other function, I know exactly what to do.
So J is the Dark Souls of programming languages?
Does anyone use J? When I looked it up it looks like a code golf language.
@hwayne has done two write-ups on it he submitted here to Lobsters:
Handwriting Programs in J
Calculating Burn Rates in J
It’s terse but useable. The environment/REPL is quite nice. I wrote a post about the J FFI a while back.
Less famously than the symbols/terseness, this has been a big part of the APL-family ethos over the years too, which is an interesting combination. There’s an anecdote claiming that the original APL having a conveniently interactive time-sharing interpreter, in the era when most stuff was run as batch jobs, was even the main reason APL became established within IBM:
Do you know how to access a global variable from a library? Such as
extern WINDOW *stdscr;.Unfortunately I don’t know of a way, other than wrapping it in a C function to return the pointer, sorry.
I have a simple lbfgs ported to J. If anyone is interested, https://gist.github.com/jxy/9db97e44708d0946c3da2d7e82fefcd0
It makes a fantastic calculator.
After browsing the wiki for a bit and discovering Jd (a J columnar RDBMS), I remembered K (and kdb+), as both the syntax and the immediate mention of a columnar RDBMS reminded me of it. So it seems, both are APL-inspired.