5 ms·
As a wholly unaffiliated, self-selected, and entirely unofficial spokesperson, I'm happy to bestow this lifetime achievement award on behalf of the IOCCC.
by jfager 16y ago
As a wholly unaffiliated, self-selected, and entirely unofficial spokesperson, I'm happy to bestow this lifetime achievement award on behalf of the IOCCC.
- narrator 16y agoPeople who like APL do not often code with readability as their number 1 priority. In fact, to code in APL one must have an outright disdain for the idea that someone else could easily understand their code.
- gnosis 16y agoWith that kind of attitude, they might enjoy programming in Brainfuck or Malbolge even more.
- silentbicycle 16y agoNo, we just have a different idea of what's readable. APL was created to have a mathematical notation that made problem solving easier. Don't believe me? See Iverson's Turing Award lecture,"Notation as a Tool of Thought" (http://www.jsoftware.com/papers/tot.htm http://www.jsoftware.com/papers/tot.htm). "I did pure mathematics in school, but later I was a teaching assistant for a graduate course in computer algorithms. I could see that the professor was getting killed by the notation. He was trying to express the idea of different kinds of matrix inner products, saying if you have a directed graph and you're looking at connections, then you write this triple nested loop in Fortran or Algol. It took him an hour to express it. What he really wanted to show was that for a connected graph it was an or-dot-and. If it's a graph of pipe capacities, then maybe it's a plus-dot-min. If he'd had APL or K as a notation, he could have covered that in a few seconds or maybe a minute, but because of the notation he couldn't do it." - "A Conversation with Arthur Whitney" (http://queue.acm.org/detail.cfm?id=1531242 http://queue.acm.org/detail.cfm?id=1531242)
- gchpaco 16y agoAPL is actually not inherently so bad, because at least the operators have some vague relationship to what they're doing and are all distinct. I can't read J at all because in attempting to embed the APL operator space in ASCII they went in for multiple token operators that can be modified (so =, =., and =: are all different, and actually quite different IIRC). A better way of doing this is Fortress, which tries to use mathematical notation when possible but doesn't try to compress it as small as possible.
- gruseom 16y agoBegging your pardon, you're doing so out of ignorance. An entire programming ecosystem -- a brilliant one, one of the very most impressive -- has been built on top of what you are denigrating. Scour through searchyc looking for past threads on APL/K/J and you'll find the arguments all repeated on multiple occasions, including many instances of the same but-this-isn't-what-I'm-used-to rush to judgment that always, unfortunately, comes up in droves.
- akkartik 16y agoI've seen some threads on APL, but I've never seen other languages used with APL-level compression. Are there really other threads about this? I'm not sure what to search for on searchyc.
- silentbicycle 16y agoTry any of these: apl iverson k kona whitney j hui incunabulum (That one-page J interpreter is sometimes called the "J Incunabulum".) See e.g. http://news.ycombinator.com/item?id=1458016 http://news.ycombinator.com/item?id=1458016 http://news.ycombinator.com/item?id=266982 http://news.ycombinator.com/item?id=266982 http://news.ycombinator.com/item?id=697501 http://news.ycombinator.com/item?id=697501 http://news.ycombinator.com/item?id=2176980 http://news.ycombinator.com/item?id=2176980
- scott_s 16y agoYou're conflating the implementation of an environment with the value of the environment itself. Did you read the C code? It is terribly difficult to follow, does not follow C formatting idioms, and makes frequent use of macros that further obfuscate what is going on. Example: #define DECLG V*sv=VAV(self);A gs=sv->g; \ AF g1=gs?VAV(gs)->f1:0,g2=gs?VAV(gs)->f2:0 Judging the quality of this code says nothing about the language and environment that this code provides.
- silentbicycle 16y agoFrom the coding conventions for Kona (http://github.com/kevinlawler/kona/wiki/Coding-Guidelines http://github.com/kevinlawler/kona/wiki/Coding-Guidelines), an open-source implementation of K 3.2 that I've been contributing to lately: This is a very unusual style of C "The unusual appearance is a side effect of writing C as concisely as possible. There are great benefits to writing code as concisely as possible. Someone familiar with the style can read and comprehend the code much faster than they would be able to with traditional code. It also creates a discipline that reduces bugs. Some of the benefits will not be apparent until you try it. Some of the downsides of the style are inaccessibility and a steep learning curve." You get used to code like that, and often, doing it that way makes sense. I first encountered it learning to read this short prototype interpreter (http://nsl.com/papers/origins.htm http://nsl.com/papers/origins.htm) by Arthur Whitney, which very strongly influenced the programming style in the J codebase. As gruesom notes, this discussion has already happened numerous times in the HN archives. Your reaction is the APL equivalent of going, "OMG! Parens!!!!1!" when introduced to Lisp code.