Great Presentation on MetaProgramming. Talks about pg/ycombinator/lisp/ruby. [video]
11–20 of 21 posts
Re: Great Presentation on MetaProgramming. Talks about pg/ycombinator/lisp/ruby. [video]
#12that example with the audio generation could be done by keeping track of the random seed
Re: Great Presentation on MetaProgramming. Talks about pg/ycombinator/lisp/ruby. [video]
#13Pretty awesome how tons of really smart people just won't get over their fear of parentheses even when they know the power that's behind them. As peculiar and different as lisp is, the difficulty of learning it is highly overrated.
Re: Great Presentation on MetaProgramming. Talks about pg/ycombinator/lisp/ruby. [video]
#14Re: Great Presentation on MetaProgramming. Talks about pg/ycombinator/lisp/ruby. [video]
#15Pretty awesome how tons of really smart people just won't get over their fear of parentheses even when they know the power that's behind them. As peculiar and different as lisp is, the difficulty of learning it is highly overrated.
And how exactly is the fear of parenthesis 'pretty awesome'?
Re: Great Presentation on MetaProgramming. Talks about pg/ycombinator/lisp/ruby. [video]
#16Jessica Alba and monkeys!
Re: Great Presentation on MetaProgramming. Talks about pg/ycombinator/lisp/ruby. [video]
#17Re: Great Presentation on MetaProgramming. Talks about pg/ycombinator/lisp/ruby. [video]
#18Is Giles saying that with the help of Rubinius you can do Lisp-style code generation in Ruby? I don't know much about Rubinius but this doesn't sound right. Lisp macros let you manipulate the program's AST in compile time very easily because the AST is made of sexp's, just like the program code itself. This is due to the peculiar Lisp syntax. Lisp code generation seems quite different from the monkey patching techniq…
This is basically Greenspun's 10th Law again. There's no magic in Lisp that's computationally impossible in another language, but it might be simpler to just write a Lisp in that language first. Rubinius did something even tougher: they wrote a Ruby. The advantage of this is that it's backwards-compatible with all their existing code, while upgrading to sexps would not be.
I think the monkeypatching corresponds to only the front half of Lisp macros. The macroexpand part comes from making the monkeypatches log Ruby code, and then running the log.
Re: Great Presentation on MetaProgramming. Talks about pg/ycombinator/lisp/ruby. [video]
#19 code == data
to this: (eq (code (data)))
What? OK, let's translate that to syntax non-Lispers can understand. That means: eq(code(data()))
What? Maybe he was trying to write (eq . (code . (data)))
Which is just a horrible, never-used way of writing (eq code data)
which in that other syntax would be written eq(code, data)
Yet another person bashing Lisp as impossible to understand without making any effort whatsoever to learn what the extremely minimal syntax means.Another thing. He says that Perl and Lisp have a lot of power, but nothing in the way of simplicity. I take issue with that. Whereas Perl is overcomplex, Lisp is about the simplest you can get. He seems to think that "simple" means something along the lines of "understandable by people experienced in commonly-used programming languages". To that, I says pleh, and also blub.
Re: Great Presentation on MetaProgramming. Talks about pg/ycombinator/lisp/ruby. [video]
#20that example with the audio generation could be done by keeping track of the random seed
That's what his example was. Instead of saving 12 hours of generated music, he's logging the data that generated it as instructions on how to generate it.
but it didn't sound like that. it really sounded like it never occurred to him to just store the random seed(s) because he said when you hear a great piece in randomly-generated music, it's gone forever, even though the seed is a fundamental and controllable aspect of that
[edit]he said it would generate a log of code which would point back to the generating/generated code. i can't really tell what he was effectively storing though. to reproduce the music well, the seed would have to be in there somewhere, unless it's only in charge of choosing a few discrete items