3 ms·
OT: I'm very tempted to be an asshole smug lisp weenie, and make some Greenspun's rule joke, but instead I'm going to try to be helpful. Ruby hackers pride them
by pavelludiq 16y ago
OT: I'm very tempted to be an asshole smug lisp weenie, and make some Greenspun's rule joke, but instead I'm going to try to be helpful. Ruby hackers pride themselves for being early adopters of new and cool technology, learning new skills, and libraries. What I've failed to notice is any interest in the old technologies, from which ruby got most of its good ideas(lisp, smalltalk). There is tremendous value in learning from the past(a lot of really good ideas didn't make it to the "cool kids languages" of today). This isn't specific to ruby, but its a good example. So my attempt at useful advice is: do learn lisp, instead of reinventing the wheel badly.
Anyway, I've been thinking about this kind of stuff, and it seemed like a good opportunity to mention it.
- erikpukinskis 16y agolearn lisp, instead of reinventing the wheel badly When someone says something like this, my typical response is "That's true, I should dig more into Lisp. Oh, look! A bug in my software I need to fix. * forgets Lisp entirely *" If you were to say something like "the difference between Lispy and Lisp is that in Lisp you can do X", then my likelihood of actually going out and learning about X, pulling out the Lisp interpreter and playing around goes up about 1000x.
- pavelludiq 16y agoYes, finding the time and motivation to educate ourselves is sometimes hard, especially when we have to deal with other crap, I've been meaning to look into smalltalk for ages now, myself. If you want an example of something cool you can do with lisp, in principal the common lisp object system is built with macros on top of the non-object oriented lisp. Could i use Lispy to add a CLOS style object system on top of ruby? What about a prototype based one? This isn't a rhetorical question, I'm actually curious if ruby can do these kinds of things.
- erikpukinskis 16y agoCould i use Lispy to add a CLOS style object system on top of ruby What features of CLOS are you interested in? I just whipped up some CLOS-style parameter-matching method invocation in Ruby: https://gist.github.com/926156 https://gist.github.com/926156 I'm not sure how you'd do that with Lispy. But it's definitely possible in Ruby. If you Google "prototype-based object model in Ruby" you get at least one solution: http://www.google.com/search?hl=en&q=prototype-based+object+in+ruby#sclient=psy&hl=en&safe=off&source=hp&q=prototype-based+object+model+in+ruby&aq=f&aqi=&aql=f&oq=&pbx=1&bav=on.2,or.r_gc.r_pw.&fp=3826ddc6bde629ca http://www.google.com/search?hl=en&q=prototype-based+obj...
- spacemanaki 16y agoI was so impressed by pavelludiq's comment (I had the impulse to post a comment citing Greenspun but refrained, their comment was so much better than what I would have posted) and I tried to come up with a tiny example of a defmacro which would show where Lispy is reinventing the wheel, but really, why bother when much better writers and teachers have already. I think Peter Seibel's Practical Common Lisp is a great intro and this chapter is so early in the book it nearly stands on its own: http://www.gigamonkeys.com/book/practical-a-simple-database.html http://www.gigamonkeys.com/book/practical-a-simple-database.... There's a couple of simple macros in there and it's not that long a read. Then there's Casting SPELs in Lisp which is another great concise intro to macros that shows them off: http://www.lisperati.com/casting.html http://www.lisperati.com/casting.html I don't think I could do better than that. Both of those are short enough that you can read them in an evening. If you're not hooked by then, at least you haven't spent much time on it.
- erikpukinskis 16y agoThanks!
- Confusion 16y agoIt would be helpful if you would point out how you feel that Lispy is 'reinventing a wheel badly'. Also, if a fullblown lisp is what you want, then I wonder whether the correct alternative isn't 'embed a lisp interpreter'. If Lispy is not intended to be as powerful as a fullblown Lisp, then perhaps it just suffices?