8 ms·
I learned APL in college and used it professionally for about eight years. I really enjoyed the language. Once you know it well enough it creates a very inter
by robomartin 14y ago
I learned APL in college and used it professionally for about eight years. I really enjoyed the language. Once you know it well enough it creates a very interesting flow condition. You are able to focus on the problem rather than the mechanics of solving it. It's hard to describe but you definitely feel the difference when going from APL to something like C, Forth or Lisp.
One of the huge problems with APL back then was that workspaces (the memory and resource sandbox your work is constrained to) were limited in size. The other was the trouble you had to go through in the early days to be able to see and print the character set. On early IBM PC versions you had to change the character generator ROM. You also had to buy very specific printers for which you could buy APL print heads (for example, IBM Selectric).
Today these issues are gone and workspaces are large enough to tackle the vast majority of problems.
There is, however, in my opinion, a serious problem with APL today: It is too expensive.
Yes, there are low cost or even free APL's, but the ones you want will run you $1,000 to $2,000 per seat. That's ridiculous. If there's a language that would have benefited from FOSS, this is it. I strongly believe that APL adoption would be far wider today if it had a strong FOSS offering.
The other issue is that, probably because it didn't go FOSS, the language didn't evolve into OO. I think it needs to. It also needs a few additional mutations to make it easier to work with and deploy. APL for the web, as a wild thought, could be a very interesting idea. The compression of code would be magnificent to see.
I haven't used APL in quite some time but would jump on it if it made sense. Back in the day I used APL for projects ranging from robotics, to business databases, DNA sequencing and astronomical calculations. It was fun.
- T_S_ 14y agoMorgan Stanley used a variant of APL called A+. It was used quite extensively in parts of the firm. They open-sourced it a while back. http://www.aplusdev.org/ http://www.aplusdev.org/
- robomartin 14y agoProbably a great internal tool at Morgan Stanley. I haven't heard of anyone outside of them using it seriously, but I could be wrong.
- gtani 14y agoI don't remember details, but my colleagues at Merrill Lynch used to say you could look at somebody's APL code and tell if they came from Sharp (Toronto), IBM (Yorktown Heights or San Jose CA), STSC or Morgan Stanley. In APL2, the equivalent to a lisp map was "each", it was a colon rotated to be horizontal and superscript. We used to have "each" contests, I always got destroyed. And one of my (distant) friends got a summer job in high school, working for Iverson in Yorktown Heights, writing APL.
- daemonicky 14y agoWhat was the difference between code from Sharp, IBM, STSC and MS?
- sethish 14y agoWhat about J? J was developed Ken Iverson (the creator of APL) as a successor to APL that replaced unicode characters with two character equivalents. It's not greatly publicized, but the latest J was released under the GPLv3 (http://www.jsoftware.com/source.htm http://www.jsoftware.com/source.htm).
- robomartin 14y agoWith all due respect to Mr. Iverson, whom I had the pleasure of meeting at an international APL conference many moons ago, I think J went in the wrong direction. Part of the power of APL is in the symbolic representation of concepts. The symbols are important. They form a language in more than one sense. Replacing them with ASCII/unicode equivalents rips the guts out of the language. Here's a thought experiment: Take mathematic expressions and replace every symbol with two or three character ASCII (or whatever) equivalents. The integral symbol might become "integ"; the root symbol become "root"; first, second and third derivative periods become "der1", "der2" and "der3"; and so on. What have you accomplished? Well, at the very least you've ruined the superbly expressive nature of mathematics through agreed upon special symbols. One could do the same with music and the results would be exactly the same. In general terms, I believe that we don't need to go in that direction. We need to search for and find the programming equivalent of music and math notation. If you've ever looked at some VHDL code you have seen an example of just how ugly this can get. Whenever I do FPGA work I use Verilog, which feels very much like C. Defining a register in Verilog looks something like this: reg [0:7] my_register; In VHDL: my_register: std_logic_vector(7 downto 0); It's been a while since I touched VHDL so this example could be off. I don't remember if you have to add IN, OUT or INOUT to the declaration. The point though is that one (Verilog) is compact and to the point whereas the other (VHDL) beats the crap out of you with unnecessary verbosity. My definition of "unnecessary" is that, if the exact same result can be had without the extra stuff then there is absolutely no reason for it to exist. The entire VHDL language is like that, this is just one example. If I remember correctly, there was one thing that was nice about VHDL way-back-when which had to do with parametric generation of code. Later Verilog implementations added these capabilities without making you feel that you were typing a novel. The long post is to say that notation is important. It is a tool for thought as much as it provides expressive power. J, in my humble opinion, went the wrong way.
- CUR10US 14y agokona I use it as my shell.
- silentbicycle 14y agoBy which they mean Kona (https://github.com/kevinlawler/kona https://github.com/kevinlawler/kona), an open-source implementation of a K-like language. Any commands in its repl that are prefixed with "\ " are sent as-is to system(3).
- deleted 14y ago[deleted]
- silentbicycle 14y ago"\ command" (e.g. "\ ls") works, you don't need to type exec. It passes the rest of the string to system: https://github.com/silentbicycle/kona/blob/master/c.c#L423 https://github.com/silentbicycle/kona/blob/master/c.c#L423 I'm one of the kona developers.
- CUR10US 14y agoHow to avoid forking?
- silentbicycle 14y agoI have a fork because I sent several pull requests back, before I got commit rights to the main repo (kevinlawler's).
- CUR10US 14y agoI meant fork(2). Maybe edit the source to optionally use execve?
- 14y ago