APL & Array programming

Generally most stuff on the internet works with dyalog, not GNU APL, FYI.

Before joining the study group call, please install Dyalog APL: Dyalog - Download Dyalog for Free

2 Likes

APL book:

https://xpqz.github.io/learnapl/intro.html

1 Like

i think this homebrew install looks fine? dyalog — Homebrew Formulae

If you try it will you let us know how it goes? I’ve just used the installer on the dyalog website for mac, and that was fine.

1 Like

Hi Jeremy, can you wikify this thread?

PS. Dyalog is installed in Windows. I am excited to learn it. :star_struck:

Dyalog APL - Tutorial/Documentation

2 Likes

Done.

1 Like

Here’s a fun little APL example!

3 Likes

Curious why APL over J, given what you’ve previously said about J and the extra symbols etc in APL?

2 Likes

Works fine for me. It links through to the latest version as listed on the Dyalog and it’s grabbing their binary.

The homebrew binary doesn’t seem to come with the RISE IDE. I couldn’t figure out how to get it to work / connect it + install the RISE package separately etc so that they worked together.

I tried just downloading it straight from their website and that comes with Dyalog APL together with the RISE IDE. If you’re using a Mac, I’d recommend just downloading it straight as was suggested above. (i.e. probably don’t use Homebrew to download it).

3 Likes

The APL Wiki is a very nice resource for all things APL.

Looking forward to these sessions as a trip down memory lane. I used APL in the 1980s for life insurance pricing.

4 Likes

Hi Everybody
I thought this thread was really interesting because the thing I love about IT is there is nothing new, just renamed.
I had studied APL at University in the late 1970’s and in the early 1980’s a concept called the Information Centre was invented by IBM, which we implemented in my company. The idea was that managers and users could use computers to assist their decision process. IBM had three APL based packages for the IBM Mainframe. A Department Reporting System ADRS was the reporting component. Jump forward 40 years and here we are discussing using APL for deep learning. One of uses of Deep Learning is helping managers and users to assist their decision processes. I suppose given the parallel processing on the GPU, there is a natural affinity to vector based languages such as APL.
Regards Conwyn

1 Like

I like the extra symbols in APL. Did I previously say I didn’t?

I also prefer how APL handles dyadic trains. There’s some things I like better about J though. My ideal language would use APL’s glpyhs and dyadic trains and J for everything else…

1 Like

To clarify - I’m not sure the study group will look at APL for deep learning.

Not gonna lie, I was hoping we’d see some demo of a toy neural network but it’s all the same, I love obscure programming languages and looking forward to learning a little bit more. Plus I don’t think APL can talk to CUDA natively, but I could be wrong.

Nope, but there is a GPU dialect: GitHub - Co-dfns/Co-dfns: High-performance, Reliable, and Parallel APL

There’s also a J binding to Arrayfire, although no docs I can see (other than some rather concise tutorials): GitHub - jsoftware/math_arrayfire: Arrayfire addon

4 Likes

I think I assumed that somehow, given that J is sometimes sold as “APL, but without all the need to learn dozens of extra symbols”.

In J you just have to learn dozens of digraphs instead. The APL symbols actually have pretty good mnemonics – so far on the whole I haven’t found remembering them particularly challenging (not that I know many yet!)

2 Likes

Yeah I imagine it’s probably the same as learning a new (human) language where often a new alphabet is a huge hump for people.

Installing Dyalog on Debian 11

I’ve logged my steps installing it; hope this helps.

Short story

You may need to install the packages libtinfo5 and dotnet-runtime-3.1 via apt

Log

Downloading the .DEB package file from https://www.dyalog.com/download-zone.htm

sudo dpkg -i linux_64_18.2.45405_unicode.x86_64.deb

If I do dyalog --help however:

/opt/mdyalog/18.2/64/unicode/dyalog: error while loading shared libraries: libtinfo.so.5: cannot open shared object file: No such file or directory

ldd /opt/mdyalog/18.2/64/unicode/dyalog indeed confirms: libtinfo.so.5 => not found

locate libtinfo.so.5 returns nothing, but locate libtinfo.so.6 does.

apt search libtinfo shows that major version 5 (legacy) is available. Should be fine to install side by side with 6. Let’s try

libtinfo-dev/stable 6.2+20201114-2 amd64
  transitional package for libncurses-dev

libtinfo5/stable 6.2+20201114-2 amd64
  shared low-level terminfo library (legacy version)

libtinfo6/stable,now 6.2+20201114-2 amd64 [installed]
  shared low-level terminfo library for terminal handling

If I do dyalog --help however:

CLEAR WSIt was not possible to find any compatible framework version                                                                                                                                                      
The framework 'Microsoft.NETCore.App', version '3.1.0' (x64) was not found.
  - The following frameworks were found:
      6.0.6 at [/usr/share/dotnet/shared/Microsoft.NETCore.App]

You can resolve the problem by installing the specified framework and/or SDK.

The specified framework can be found at:
  - https://aka.ms/dotnet-core-applaunch?framework=Microsoft.NETCore.App&framework_version=3.1.0&arch=x64&rid=debian.11-x64
Init failed: 0x80008096

If you do not have dotnet already installed https://dotnet.microsoft.com/en-us/download explains how to set up .NET on various platforms including Linux. after that:

sudo apt install dotnet-runtime-3.1

dyalog then starts OK (in TTY mode).

3 Likes