Re:Conway's Game Of Life in one line of APL
by profquail on Saturday January 09, 2010 @01:47PM
(#1041778)
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
Re:Conway's Game Of Life in one line of APL
by moe on Saturday January 09, 2010 @11:05AM
(#1041574)
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...
Re:Conway's Game Of Life in one line of APL
by gvb on Saturday January 09, 2010 @01:51PM
(#1041790)
"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...
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.
Re:Conway's Game Of Life in one line of APL
by profquail on Saturday January 09, 2010 @10:56AM
(#1041566)
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.
Re:Conway's Game Of Life in one line of APL
by shaunxcode on Saturday January 09, 2010 @01:24PM
(#1041740)
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... 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!
Re:Conway's Game Of Life in one line of APL
by sunkencity on Saturday January 09, 2010 @02:15PM
(#1041824)
Wow! Now that looks like a keyboard map for some serious dark programming magic! Now I really want to put on my pointy hat and enter the astral planes of APL!
Re:Conway's Game Of Life in one line of APL
by afshin on Saturday January 09, 2010 @08:32PM
(#1042407)
J and K both came out of APL ... except they use the normal ASCII character set for their built-in functions. It still seems like magic to me when I saw one line of K execute really quickly and return what takes me dozens of lines of code in another language. Look at the APL/J/K solutions on some of the Project Euler problems. The longest ones are maybe two lines long.
Re:Conway's Game Of Life in one line of APL
by tobych on Saturday January 09, 2010 @03:38PM
(#1041954)
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.
Re:Conway's Game Of Life in one line of APL
by agazso on Saturday January 09, 2010 @01:03PM
(#1041713)
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.
Re:Conway's Game Of Life in one line of APL
by smanek on Saturday January 09, 2010 @01:13PM
(#1041726)
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.
Re:Conway's Game Of Life in one line of APL
by gvb on Saturday January 09, 2010 @01:27PM
(#1041743)
Work is constant, effort varies (defining effort to be work (useful stuff) plus time wasted to get the work done). By this definition, work will take constant time. He just did a lot of work in one line, so it took quite a while to write that one line.
With different programming languages and different skill levels, you have a different amounts of "wasted time" to do the (constant) useful work.
The person doing the YouTube video wasted almost no time (a couple of typos). If I were to do it, I would have a lot of wasted effort since I never was very good at APL and time has not improved that.
Re:Conway's Game Of Life in one line of APL
by gvb on Saturday January 09, 2010 @01:57PM
(#1041798)
Understood. My comment was an insight that occurred to me as a result of your comment. The insight is that programming "work" is very much like physics "work"
work = effort * distance
In physics, if you don't move something, you have done no work (even though you are sweating and out of breath). In programming, if all you do is write boilerplate stuff, you have not done any work because you have not advanced toward your goal.
Re:Conway's Game Of Life in one line of APL
by houseabsolute on Sunday January 10, 2010 @01:36AM
(#1042759)
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.
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...
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... 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.
EDIT: Picture of the keyboard layout: http://www.users.on.net/~farnik/upload/APL2union.gif
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... 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!
The link mentioned in the video, which gives a fuller explanation, is here: http://www.dyalog.com/dfnsdws/n_life.htm
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.
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.
edit: also my first time seeing APL, very neat stuff.
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.
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.
With different programming languages and different skill levels, you have a different amounts of "wasted time" to do the (constant) useful work.
The person doing the YouTube video wasted almost no time (a couple of typos). If I were to do it, I would have a lot of wasted effort since I never was very good at APL and time has not improved that.
work = effort * distance
In physics, if you don't move something, you have done no work (even though you are sweating and out of breath). In programming, if all you do is write boilerplate stuff, you have not done any work because you have not advanced toward your goal.
(all typos are mine, not the author's)
life ← { ⊃ 1 ω ∨ . ∧ 3 4 = +/ +⌿ 1 0 ‾1 ∘.θ 1 - ‾1 Φ″ ⊂ ω }
Thanks for a great solution for insomnia!!