Dyalog APL v15.0 Free for Non-Commercial Use
dyalog.com
dyalog.com
I'm not sure how big the market is for them or related array language. Seeing J became essentially open source, and kdb+ released their 2nd grade 32bit for non-commercial use too, I guess the industry is shifting toward more consulting/training services.
EDIT: Guys I mean literally the keyboard. Once it's software it's easy. I wanna know the best way to remember what key maps to what character.
Snarky answer is to use J.
I have this hope that on-screen tablet keyboards will bring APL back. It's one of the few languages where you can actually be productive developing on a tablet or phablet because it requires so little typing. As well the idea of workspaces is something that would work well on modern phone OSes. Basically the same things that made APL a great choice for early personal computers (MCM/70 and IBM 5100 were both APL machines: http://www.xnumber.com/xnumber/MCM_70_microcomputer.htm https://en.wikipedia.org/wiki/IBM_5100) would make it work on phones.
When I started to learn typing on a keyboard, I had a keyboard layout printed out and taped it on the side of the CRT screen. I never looked down on my keyboard, which is a reason every time someone using a extra fancy backlit keyboard makes me cringe.
I did the same thing for Cyrillic layout, the same thing for Greek layout, the same thing for Japanese カナ, the same thing for Chinese 五笔,and the same for APL.
That's what the "finger alignment ridges" on the F and J keys are for. They were there long before keyboards were backlighted. (Or are "modern" keyboards lacking those ridges now? I don't know, the newest keyboard I have is 12 years old.)
if you have gnome or cinnamon (possibly xfce) enter
gsettings set org.gnome.libgnomekbd.desktop load-extra-items true
into a console then the APL mappings will show up in the inpute options, if you're in KDE it'll already be visible. Either way once you do that you can set it so holding some key (i use the win key) switches layouts.https://upload.wikimedia.org/wikipedia/commons/4/4c/GNU_APL_...
(some keys might be a little different; I had trouble finding a good source for APL Union keyboard). I develop on Linux, using a plain text editor, so I have an .xmodmap file that lets me press the keys in the picture above while holding a modifier (right alt) to input the appropriate unicode code points.
I am sure an IDE like what comes with dyalog will do this for you.
As far as learning the keyboard, it's not too hard; just keep a picture of the layout printed out for a day or two and you'll get it. There's some sort of pattern: for instance, the "ρ" (rho) character is on the R key, and "ι" (iota) is on the I key. It's like learning to type, except much faster because you've learned it once before.
However, I don't really like the digraphs/glyphs/whatever that J uses that much, i think there's a mode where there's short forms like "rot" for rotate function, "ind" for index etc, look for those.
I think the closest thing I can compare them to, would be using musical or mathematical notation vs trying to describe the same things with text. Using notation has a slight learning curve, but is superior in day-to-day usage.
If I did want to release a project as open source (not free software) under "free for non-commercial use" terms, what would be a recommended license? AFAIK none of the common open source licenses target this.
One reason is that it's just harsh. "Free for non-commercial use" means that if someone builds on your software to make something successful, they can only succeed on your terms. Sure, that may be what you want, but it's not what users want if they're going to take the time to understand your code.
While such code may technically be open source, much like the "shared source" initiatives of large software companies, the code won't be able to participate in the larger open-source ecosystem. Would you expect someone else to contribute to the code? Why would they? They'd be enriching your IP but they wouldn't get any additional rights to the code, nor would they get revenues from commercial licenses. Unless you hire them as an employee.
Also, restrictions on how you use the software violate the Debian Free Software Guidelines. Indeed you indicated that you're not interested in "free software", but you shouldn't expect to find "common open source licenses" that violate the DFSG.
Restrictions on use tend to be more tolerated in creative works than they are in software, in which case the license you're looking for is Creative Commons By-NC-SA.
If Iverson wouldn't be constrained by ASCII and still knew what we know today, how he could design APL?
The J programming language, developed in the early 1990s by Kenneth E. Iverson and Roger Hui,[4][5] is a synthesis of APL (also by Iverson) and the FP and FL function-level languages created by John Backus.[6]
To avoid repeating the APL special-character problem, J uses only the basic ASCII character set, resorting to the use of the dot and colon as inflections[7] to form short words similar to digraphs.
Looks like in case of J a lot of consideration was given to what's relatively easy to do in terms of chosen set of symbols. The question is, if ASCII wouldn't be a requirement, what would be a modern set of primitives, efficient as the tool for thought. APL at the time was trying to extend - and improve - mathematical notation, no less...
I love this question.
Moving from APL to J is really a step backward in terms of notation. With unicode standard flourishing, we might finally see something that can improve upon the mathematical notation we use and make instructing computers easier. I don't think anyone would be able to answer though… Perhaps one could extend APL symbols to cover all of the J primitives?
If yes then Iverson created really well thought out set which stood the test of time and we can hope will continue to efficiently serve as a good notation - and might be may be extended. If not - then we have the question of what would be a good notation.
References to math notation, which developed over decades and centuries, are good - but sometimes look like not perfect. Iverson was trying to make it better - for example, put the notation in one line, get rid of operation priorities. Is that a success from today's point of view?
What are some other successful examples of this? I remember ChezScheme became free recently.
Maybe.. on the other hand you can actually use the full program space available, and gdb. (Last time I used Keil was 2011, I quickly moved to a GCC toolchain rather than pay for a license. They're really not selling me on their tool when they arbitrarily restrict my max program size such that I can't actually evaluate it properly.)
I hate Labview with a passion(needed for data acquisition in labs), I barely use Mathematica, and I'd be fine with using Scipy over Matlab, but Matlab is actually nice for quickly doing some analysis and graphs.
Free software != Gratis software.
Especially in an APL thread, which is the one case where we indulge in blatant bias. (I'm joking, but all of us at HNHQ have a soft spot for array programming.)