"Who uses APL in production?" is a common question. These days, it's mostly those who haven't stopped using it. The historical use, while never quite mainstream, might be surprising to those who never realized APL had a commercial presence at all!
- APL conferences were held every year from 1969 to 2004, minus '77 and '78 due to some unfortunate logistical issues (certainly not lack of demand). Conferences in the 80s regularly had >1000 in attendance despite both IPSA and STSC holding their own many years. My count (may not entirely rule out duplicates) is >1000 paper authors, and far more papers were submitted than accepted. https://aplwiki.com/wiki/APL_conference
- At least a dozen hardware manufacturers implemented an APL for their systems in the mainframe and minicomputer era (70s and 80s): https://aplwiki.com/wiki/Vendors
- Usage stats from just one university in 1978: 7,300 active accounts and 5,400 workspaces (which would each store an individual project, or something like that). Used for all sorts of administration and even a student ride sharing service. Today of course, much of this would be done in Excel. https://aplwiki.com/wiki/Syracuse_University
I've seen APL in use in industry for industrial simulation tools. I thought it was a pretty cool technical decision because of how good APL is at exactly the kind of vector math they were doing (I even offered to join their team just for a chance to learn APL.) Unfortunately, they were a little too excited about APL and went and built a bunch of APL GUIs on top of their simulations, which were giving them huge maintenance headaches.
It's the perfect use case for calling out to a library. When I worked in a research lab, we had a ton of math functions written in Fortran by old white beards that were great - plus we could call them from C, or Python or whatever.
I could imagine writing some hard math core functionality in APL then wrapping it up
I'm not a big fan of complicated GUIs or practically any GUIs to be honest. Their complexity is vast and code wise, they often make up a majority or at least very significant part of an application. I get it if you're selling a product, but if it's just an internal tool, I find it's usually just not worth it in the long run.
This is literally why VBA+excel are so pervasive: it’s a way to slap together a UI with no/minimal code.
There is a vision of a future where non-CS engineers could function with an interface that’s basically a Jupiter notebook with “import simulator” at the top, but managers are loathe to make that level of scripting competence a requirement for an already fairly specialized role.
Excel combined with APIs and either minimal VBA or COM AddIns is also perfect method to do random data entry or query interfaces for your end users if you have MS Office on Windows as your common office platform.
In case anyone is curious about if the system is still used 12 years later, the latest thing I could find was from a job advert https://app.verama.com/job-requests/40623
"This application is built in using Dialog[sic] APL which is a niche language and has its own challenge and that’s where second application Apollo comes into the picture which is created by another team Atlas aiming to create the Hercules using updated tech stack together with new functionalities."
I wonder how successful the replacement will be... inb4 end users will complain forever about shitty UI because they replaced fast 3270 with hunt&click gui[1] or slow website
[1] Long ago, trying to deal with an issue related to not being able to make SWIFT transfers from my then-current bank, I ended up going to branch myself, and while trying to fix it, struck a conversation with the elder teller lady. She had words regarding "ergonomics" of the win32 UI that replaced her block terminal.
I wanted to do some statistics, so I accidentally learned J (thinking it was R). J is like APL, but with digraphs (multiple characters) instead of special characters as symbols.
I don't think I ever actually did any stats with J, but I did play with it for a long time.
J is like an old school text adventure where you start with a blank screen that reads "You are in the woods" and, before you know it, it's Monday morning and you're considering calling out of work because you've almost decoded some elvish runes you found on a rock.
R is the single player campaign of a modern first person shooter, where you have infinite lives and your health regenerates if you sit and think for a while.
This isn't a perfect analogy. Maybe J is high school Spanish class, and R is Google translate? I remember enjoying J as a language and R as a tool. It's exciting to express new things in J. It's easy to do familiar things in R.
R also is really well documented - there was a time where experts were asking basic questions on Stack Overflow and answering them themselves, because that's where people look for documentation.
I've been trying to improve my J skills by doing the https://adventofcode.com/2022 puzzles. I got stuck on day 7 because recursion in J is possible but an advanced level incantation.
Day 1 was five short lines of code for Part One and another two lines for Part Two.
Each line of code needed four or five long lines of documentation.
On the J website the first sentence is:
'J is a high-level, general-purpose programming language that is particularly suited to the mathematical, statistical, and logical analysis of data.'
So I can see him thinking he has the correct language.
Math student Ken Iverson being annoyed at the inconsistency of math notation and its precedence rules decided to come up with a better one. "Iverson notation" or "the notation", he went through Harvard and became Dr Iverson, got picked up by Adin Falkoff at IBM when they were designing the IBM/360 processor and adapted the notation for the blueprints of how the thing would work, and then got rid of superscripts and subscripts and cut it down a little so it could become a line-based executable thing to run on an IBM/360 as a kind of matrix-aware desktop calculator / "A Programming Language" (APL). IBM made custom Selectric/golf-ball printer heads and keyboard overlays for it.
An APL keyboard typically wasn't exactly a custom keyboard, but a standard keyboard with APL characters accessible through modifier keys. Often there were adhesive labels on the front of each key showing the special characters or you could get custom keycaps that had the special characters printed on the front. And of course many of the special characters were created through overstrike rather than separate keys. Way back, I programmed in APL on a DECWriter that had support for APL characters.
I have a keycaps set imitating the classic Space Cadet keyboard (from Symbolics Lisp workstations). The Space Cadet had APL tops and fronts [1], but these caps only have the tops presumably because the cost to get keycaps printed on the fronts would be way too high. Frustrating though. I've thought about getting the rest printed on clear plastic adhesive.
425,000 lines of APL code boggles the mind. It's like 10,000 pages filled with APL symbols. I guess that for normal non-APL programmers it's as close to an inscrutable alien artifact as you can find on Earth.
Not at all. Using APL to solve real programming problems does lead you to cut concept space at different joints than mainstream programming, but once you have those concepts cached, APL isn't really "dense" so much as liberatingly direct. Instead of having a function "deleteNestedNodes" you just have "d t/⍨←(t=0)⍲d≥1" or some such, which 1) is actually visually shorter, 2) immediately gives you handles for modifying as needed, and 3) tells you algorithmic complexity on its face.
That said, large corporate APL systems also use lots of standard architectural concepts like OOP, control structure flow, etc. and tend to have overall much less code density than you might expect, and the lines tend to be wicked short on average. So 425,000 lines isn't really "pages and pages of dense APL" in practice.
An LLM can probably explain and translate it reliably. A model trained on the Internet has seen quite a lot of code and documentation about APL and its relatives.
Oh I'm sure something could translate. I was just trying to be funny. Although aren't you assuming we won't have a large amount of knowledge loss in the upcoming centuries.
This website is pure nostalgia <3, pretty much every corporate page in the 90s looked like this! I was half disappointed they're using <div>'s and CSS for layout and not a bunch of <table>'s.
Volvo has used APL for ages, so I don't think there is anything weird about it. Someone just found the old case study on Dyalog's website from years ago and posted it I believe. It makes sense to me as it is a language suited for business folks. The Clojure needs are likely for an entirely different system.
But to me as a relatively experienced APLer, it reads very clearly as "return if there are no non-ASCII chars in `w`" (and if there are, the indices of those chars will be stored in `i` and the code point of every char will be stored in `c`).
Yeah, I wonder if that is 425k _formatted_ lines of APL? I'm blanking: wasn't there someone who wrote their hedge fund's entire data processing pipeline in 4 lines of APL?
By far the car I enjoyed owning the most was a Volvo V90. Good size and incredibly comfortable for long distance driving. We drove it from the UK to Portugal and back and it just ate up the miles, the thing practically drove itself.
Hate these ding dong ass systems as Windows admin as they are always ""CRITICAL"" and they put no redundancy or HA in so we cant patch the actual Windows server as there OMGE THIS IS CRITICAL THERE CANT BE ANY DOWNTIME.
Niqqa Windows Servers NEEDS a reboot once a month.