
Conway's Game Of Life in one line of APL - profquail
http://www.youtube.com/watch?gl=GB&hl=en-GB&v=a9xAKttWgP4&fmt=18
======
jacquesm
I don't know the origin of the quote but 'if you need more than one line of
APL you do not fully understand your problem'.

~~~
profquail
Also:

    
    
      "There are three things a man must do
       before his life is done;
       Write two lines in APL,
       And make the buggers run."
       -- Stan Kelly-Bootle, 'The Devil's DP Dictionary'
    

And:

    
    
      "APL is a mistake, carried through to perfection.
       It is the language of the future, for the programming
       techniques of the past: it creates a new generation
       of coding bums."
       -- Edsger Dijkstra

------
moe
Impressed. Not just by the syntax (first time I see APL) but also by how
easily he juggles and shapes what is mostly hieroglyphs to me.

I know he was probably following a script to spare us the trial & error. I
also know the hieroglyphs could be replaced with ascii-keywords to make it
look more down to earth. But still; if I was to come up with a game of life in
any language then the process wouldn't look anywhere near this elegant...

~~~
gvb
"I also know the hieroglyphs could be replaced with ascii-keywords to make it
look more down to earth."

Not really, that _is_ APL. The keywords in the APL language are mathematical
symbols (Greek letters plus a lot more).
[http://aplwiki.com/AplCharacters#What_exactly_is_.22APL385_U...](http://aplwiki.com/AplCharacters#What_exactly_is_.22APL385_Unicode.22_offering.3F)
The result is readable (I assume) to a mathematician, but is hard for mere
mortals to read and hard to type without a special keyboard.

------
iamwil
That was my first time seeing APL code. All I knew about it was that it had
its very own keyboard for its own funky symbols.

~~~
profquail
I've been reading a bit about APL, and I can't find anywhere to buy one of the
old APL keyboards. However, you can remap your existing keyboard to output APL
symbols for certain key combinations, which is how I think most people are
using it these days.

EDIT: Picture of the keyboard layout:
<http://www.users.on.net/~farnik/upload/APL2union.gif>

~~~
shaunxcode
Actually you can purchase one here:
<http://pckeyboards.stores.yahoo.net/adcolkey.html> they even provide
different colors and special keys (windows key into a meta key etc.) - I have
the dark grey one and I love it.

You can also get APL stickers that fit onto any keyboard (I put them onto an
hp 1000 laptop even) from here:
[http://hooleon.com/miva/merchant.mvc?Screen=PROD&Product...](http://hooleon.com/miva/merchant.mvc?Screen=PROD&Product_Code=OV-0132&Category_Code=)
for about 15 dollars. They actually work really well - I would advise using a
pair of tweezers to get them positioned exactly how you want because one they
are on they are pretty permanent!

------
michael_dorfman
That's a great video for giving a taste of APL. It's too bad that the barriers
to entry for learning APL seem to be so high; it's a great language.

The link mentioned in the video, which gives a fuller explanation, is here:
<http://www.dyalog.com/dfnsdws/n_life.htm>

------
julio_the_squid
J is essentially the new version of APL using ascii rather than the odd
symbols, if I'm not mistaken? I'd love to see a version in J.

------
tobych
I'd love to be able to understand some complicated bit of code by watching an
Etherpad-style timeline, with audio commentary of the whole (test-first?)
process.

I love all those special characters, too. So much easier and quicker to read
(chunk) than method names and so on.

And I expect the audio track to be sampled on a forthcoming relaxation tape.

------
agazso
It reminded me the old saying that "every C program can be written in one
line". Think about it, it's true.

For me it was similar to obfuscated C code, when one line of code packed with
funny symbolic names produces a program that shows a bouncing ball or
something unexpected like that.

~~~
dazmax
It would be better to say it is done in one expression.

------
plaes
I also found another one-line solution for the same problem:
<http://catpad.net/michael/apl/>

------
tvon
" _one_ line of APL"? He was coding for 7 minutes, on many lines...

edit: also my first time seeing APL, very neat stuff.

~~~
smanek
Most of it was just messing with APL's REPL to build up the less than 3 lines
that actually mattered.

That's why I like languages with REPL-like functionality (Lisp, Python,
Haskell, etc) so much. It makes for much faster debugging/development loop.

Whenever I code Java/C, I always end up using a tiny 'Testing' file (on the
side of my real project) with lots of print statements that serves as a poor
man's REPL. But it's still much slower.

~~~
tvon
> _Most of it was just messing with APL's REPL to build up the less than 3
> lines that actually mattered._

Fair enough, and good to know. It was a very cool demo, I just don't care for
the "in one line" or "in fifteen minutes" nonsense.

------
blaiset
I wish I fully understood half of what happened in that video. (First time
seeing APL, very cool)

------
tibbon
Can someone put that one line here? I don't feel like watching a video on my
mobile.

~~~
gvb
life ← {⊃ 1 ω ∨ . ∧ 3 4 = +/ +⌿ 1 0 ~ 1 ∘ . Θ 1 - ~1 Φ" ⊂ ω}

(all typos are mine, not the author's)

~~~
spc476
It took a few minutes (and looking closely at the video) but I think this is
what he typed:

life ← { ⊃ 1 ω ∨ . ∧ 3 4 = +/ +⌿ 1 0 ‾1 ∘.θ 1 - ‾1 Φ″ ⊂ ω }

------
elblanco
I don't think I have most of those keys on my keyboard...anybody else?

------
mosheg101
I fell asleep during the video. Twice.

Thanks for a great solution for insomnia!!

~~~
houseabsolute
The guy's voice does have a soporific quality, and I also found myself nodding
off (because I am jetlagged). But this is perhaps not the most constructive
thing to comment about.

