Hacker News new | past | comments | ask | show | jobs | submit login
Dyalog APL v15.0 Free for Non-Commercial Use (dyalog.com)
73 points by jxy on July 1, 2016 | hide | past | favorite | 45 comments



It's annoying that the "un-registered" version[0] (the one where you don't have to fill out a form) only runs on Windows. I wonder why. I'm not really sure what kind of danger Dyalog is trying to protect themselves from.

[0]: http://www.dyalog.com/download-zone/unregistered.htm


It's a 32bit and from an old version. Perhaps they don't want to annoy their paying customers? In this way they get more information from you. I guess it's good for their marketing research. Hopefully they would conclude that it would be better to make the software more freely available.

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.


It is mostly a question of inertia; we've been busy making sure that our customers have what they need, and continue to be willing and able to fund our R&D efforts, since 1983. We agree it is time to open things up a little, although FOSS remains impractical at this point in time. The free non-commercial (but "registered") release of v15.0 is the first step. Later this summer I hope we will make the un-registered version available on more platforms and probably a bit less annoying too / Morten Kromberg (CXO, Dyalog Ltd)


The danger of people being interested in their product without them being aware of it.


Maybe it's an homage to Bill Gates who campaigned so hard for using intellectual property laws to protect closed source software.


So what's the trick to using APL if you don't have the keyboard? Do most people use the custom keyboard? What about with laptops? Is there some sort of mnemonic for what symbols correspond to what letters? Do people put stickers over their keycaps?

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.


> So what's the trick to using APL if you don't have the keyboard?

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.


Or q or k :-)


You need an editor with some basic APL awareness. There is an APL-mode for Emacs where pressing dot ('.') switches to the APL layout for the next character. It feels very natural to use. I've seen others use a modifier key (like the Super/Windows key) to enter APL characters, which if done as an xmodmap thing, would work in every program. (The programmer I saw do this prefered to do his APL programming in ed(1) - no joke). I assume the Dyalog APL IDE has something similar.


For the truly hardcore, there are APL key caps for Unicomp's Model M clone:

http://www.pckeyboard.com/page/product/USAPLSET


> I wanna know the best way to remember what key maps to what character.

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.


For me, the backlighting isn't so that you look at the keys while you're typing, it's so that you don't start typing with your fingers shifted to the side and have to back up.


it's so that you don't start typing with your fingers shifted to the side and have to back up.

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.)


They're on my Microsoft Sculpt and the 8 year old Thinkpad in front of me, so I don't think they've disappeared. I guess I don't notice them when I start typing? I'll have to try and pay some attention to them.


http://www.dyalog.com/apl-font-keyboard.htm

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.


You wouldn't happen to know why the two layouts, besides UK and US, are Danish and Finnish? As a Dane it's kinda cool, but hardly the first language you'd expect to see listed for something this niche.


Dyalog is a (mostly) Danish company.


Really, weird, I always though it was a British company. It does look like they have a ton of Dane employed though, including the CTO.


APL has historically had relatively high market penetration in Scandinavia and Japan. Dyalog is a British company but for the last decade there has been significant Danish and Italian involvement in the form of major clients and the management team who engineered a "Management Buy In" together in 2005. Our headquarters and more than half the employees are in Basingstoke, UK. We have team members in Denmark (including the CEO and CXO), France, the USA and Canada. Since January, the CTO job is back in English hands.


You have to use and memorize one of the keyboard layouts. I use some variant of the "Union" keyboard layout:

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.


I think the comment to use one of successor languages is most pragmatic. I learned with stickers on keyboard, you don't want to do that, and a dedicated keyboard sounds kind of silly (this from former pro IBM APL2 programmer, it was my 2nd language).

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 use emacs and just press the dot button to access an additional layer on my keyboard with the special characters. The APL characters are surprisingly easy to learn and in my experience superior to the ASCII based ones used by J et al.

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.


As someone who took the dive and tried Dyalog APL I would recommend trying it out. While it may look difficult, and annoying to learn you will find the within a single coding session you can have a basic grasp of the language. Typing on the keyboard may seem annoying, but you will be typing very little. All of your programs will fit on one screen. Out of all of the current APL implementations Dyalog APL is the best one. It is worth trying just for the experience.


Meta: Where's the "free for non-commercial use" license? I'm curious about the text.

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.


I'm not sure which distinction exactly you're drawing between free software and open source, but most open-source licenses don't aim to restrict how people use the software, for many reasons.

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.


Did anybody analyze recently how effective and why is the set of primitives chosen in APL?

If Iverson wouldn't be constrained by ASCII and still knew what we know today, how he could design APL?


He already did: https://en.wikipedia.org/wiki/J_(programming_language)

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.


Thanks. However, J was conceived in 1980-s, uses ASCII for ease of communications, not as the best set of symbols. In this sense APL was somewhat less constrained - symbols were new, even though some of them were typed on teletypes with some tricks.

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...


> The question is, if ASCII wouldn't be a requirement, what would be a modern set of primitives, efficient as the tool for thought.

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?


I'm trying to find out - is APL set of symbols looks justified today, even with Unicode capabilities?

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?


Forgive my ignorance, but who is buying proprietary language interpreters/compilers these days?

What are some other successful examples of this? I remember ChezScheme became free recently.


I avoid closed-source tools as much as possible. But sometimes they happen to be the most performant choice. I've seen the claim that the Dyalog APL is the fastest, for example. Commercial compilers from chip manufacturers (Intel, e.g.) are popular for numerical applications, as the free alternatives, excellent as they are, simply can not make the detailed optimizations that the targeted compilers can. The chip makers invest in developing these compilers because they make their systems look fast on benchmarks.


Commercial compilers from chip manufacturers are common in embedded world - from Keil and IAR for ARM (you can use GCC but the code quality wouldn't be that good) to almost everything proprietary down the road to FPGA and ASIC.


> (you can use GCC but the code quality wouldn't be that good)

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 have an FPGA toolchain installed, and it sucks. It's free spyware though.


Mathematica, MATLAB, plenty of succesful vendors in this space, someone must be... I would guess people doing real actual work, rather than chasing the latest JS framework...


MATLAB, Mathematica, Maple, Labview, IDL, wasn't there an article here that R just recently passed S+? Turns out scientists and engineers are still willing to pay for tools.


Oh yea. I actually have 3 of those installed since my university has free student licenses. I'd never have considered buying them, but maybe after several years of use, I can imagine my future employer paying for it.

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.


Have you tried Octave?


> Turns out scientists and engineers are still willing to pay for tools.

Free software != Gratis software.


LispWorks, AllegroLisp, Intel C, C++, Fortran compilers


This is a nice website by 1995 standards.


This comment combines an off-topic formatting nitpick with a snarky dismissal. The boolean operator to apply to those isn't and, it's nor.

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.)


Actually, I think it's a very pretty site: it says what it needs to say, it has attractive colours, it uses my browser window sanely, it's not distracting. What's not to like? I wish that more websites were like that.


And it works great with NoScript. What a breath of fresh air from the SPA stuff I work around every day.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: