I found working through them was helpful when learning K, and comparing the solutions to other languages can be illuminating.
natas 10 hours ago [-]
Man I wish I could use APL at work instead of python & nodejs.
upghost 9 hours ago [-]
You can embed GNU APL. I did it once with Clojure[1], tho it wasn't too popular. If they hired you to do Python should probably do that instead of embedding APL into Python. (I don't follow my own advice)
I would love to embed Dyalog but last time I tried I wasn't smart enough. If anyone from Dyalog feels like throwing cycles at it let me know!
Dyalog is a .Net language do you can write classes in APL and export DLLs that you can use from C# or F# from something like ASP.Net web servers.
whitten 7 hours ago [-]
What aspects of APL do you want to use at your job ?
adrian_b 41 minutes ago [-]
I do not know about the previous poster, but anyone who knows about APL finds annoying to write tons of superfluous lines of code imposed by the syntax of most popular programming languages in order to express loops, instead of using only high-level array operations, which say only what must be done, without repeating the details well known by any programmer or compiler, about how to do that.
Dyalog actually allocates respectable resources to helping beginners. In particular, Adám is crazy knowledgeable about APL and extremely available for answering questions.
ydj 6 hours ago [-]
I think the facilities for building larger applications are lacking in APL. It would be great as something embedded into other languages. Consider something like numpy’s einsum, but using apl expressions instead. Use APL to express what it’s good at, and use the facilities of the host language to put together bigger systems.
xelxebar 6 hours ago [-]
Large parts of Sweden's health system run on APL; Deutsche Bank also uses lots of APL; Denkmark has an appreciable number of companies using APL. IMHO, the problem isn't the scalability of APL (Dyalog, specifically) but more that good, maintainable, solid APL violates what the industry holds up as Best Practices etc. Trying to apply typical software architecture methodologies to APL definitely evokes the feeling you describe.
However, APL in my experience enables radical simplicity for building large applications. Learning to leverage that means that you need to first unlearn lots of ingrained problem-solving habits and ways of thinking as a software engineer. It's admittedly a steep hill to climb.
whitten 7 hours ago [-]
Has anyone tried to recreate LLMs in APL ?
Matrix multiplication is common in both of them.
If LLAMA.C is only a few hundred lines then I would be surprised if the APL is more than a page of code.
A page? I sure hope not. The whole training and inference code for a U-Net architecture in APL is only about 30 lines, with inference direction only taking up 4 or so lines. Assuming you know APL, the code is actually really straightforward and readable, too! Not to mention that it's only ~2.5x slower than a comparable PyTorch implementation.
I found working through them was helpful when learning K, and comparing the solutions to other languages can be illuminating.
I would love to embed Dyalog but last time I tried I wasn't smart enough. If anyone from Dyalog feels like throwing cycles at it let me know!
[1] https://github.com/jjtolton/libapl-clj
Dyalog actually allocates respectable resources to helping beginners. In particular, Adám is crazy knowledgeable about APL and extremely available for answering questions.
However, APL in my experience enables radical simplicity for building large applications. Learning to leverage that means that you need to first unlearn lots of ingrained problem-solving habits and ways of thinking as a software engineer. It's admittedly a steep hill to climb.
When I got into BQN recently, I had the same thought and tried my hand at recreating LLM building blocks and saw the compactness APL-likes afford first-hand: https://www.chandergovind.org/blog/5126/aipasi/Array-program...
[0]:https://www.dyalog.com/uploads/conference/dyalog22/presentat...