?

Log in

No account? Create an account
What's so great about Scheme? - Lindsey Kuper [entries|archive|friends|userinfo]
Lindsey Kuper

[ website | composition.al ]
[ userinfo | livejournal userinfo ]
[ archive | journal archive ]

What's so great about Scheme? [Jun. 14th, 2009|10:09 pm]
Lindsey Kuper

So, there's this guy who was my classmate this year in both B521 and B621. He seems to spend a lot of time at the IU library, just like I do. In fact, on any given trip to the library, it's even odds I'll see him there -- often enough that I've come to expect it, anyway. Every time this happens, we end up getting into a conversation, which is quite nice.

The last time it happened, which was two days ago, it occurred to me that every time, the core of our conversation has been some variation on "What's so great about Scheme?"

This isn't apropos of nothing. We've been taking Scheme courses together for a year, so it's reasonable that we might talk about it at least some of the time. But it surprises me that he keeps asking me what's so great about Scheme, because I don't know.

What's so great about Scheme? Well, there are a lot of things I could name: it gives you a handle on the continuation, it's extensible with macros, it optimizes tail calls, there's hardly any syntax to learn, and so on. And I dutifully list them off for him. But I feel a little deceitful doing it, because none of those things are why I like Scheme -- at least, not in a conscious way. My tastes are unsophisticated: I like Scheme because it feels good. Maybe it feels good because it's a great programming language, but how would I know? It's entirely possible that it just feels good because it's familiar.

To me, the thing that's especially mind-blowing about this person is that he's spending all these nights in the library trying to like Scheme. It's not just homework he's doing -- he's working on his own projects, experimenting, trying to figure out what the secret sauce is that makes other people so excited about Scheme. This amazes me. If I had to work that hard at liking something, I think I'd probably just give up and not like it.

LinkReply

Comments:
[User Picture]From: oniugnip
2009-06-15 04:52 am (UTC)
What's his native programming language? Or what's his favorite non-Scheme one?
(Reply) (Thread)
[User Picture]From: lindseykuper
2009-06-15 05:11 am (UTC)
Well, I feel quite uncomfortable putting words in his mouth, especially since he might be reading this! But I know he appreciates languages that afford him control over the hardware.
(Reply) (Parent) (Thread)
[User Picture]From: oniugnip
2009-06-15 05:16 am (UTC)
That's not an unreasonable quality appreciate! If you like computers as artifacts, especially...

(let's write some C sooner or later!)
(Reply) (Parent) (Thread)
[User Picture]From: pmb
2009-06-15 05:34 am (UTC)
Scheme makes its assumptions explicit. If you don't care about matching the underlying hardware, Scheme's virtual machine is about as simple a machine as you might imagine. It kind of feels like math - complex things from a small set of axioms. I can imagine this really appealing to someone who asks "why" all the time. It is Scheme all the way down, conceptually.

Unfortunately, this extreme simplicity and well-foundedness often leads to awkwardness of expression. We can trade simplicity and consistency for expressiveness and conciseness: Python! Or we can trade it for hardware access: C! Or we can trade it for neither of these things: Java!
(Reply) (Thread)
[User Picture]From: lindseykuper
2009-06-15 05:45 am (UTC)
I can imagine this really appealing to someone who asks "why" all the time.

Yeah. With Scheme, you can figure out Why, if you want to. The answer isn't just "Because, dammit."

Or we can trade it for neither of these things...

Heh. Actually, I've been reading the Tanenbaum operating systems book, and, appallingly, it's making me want to write Java. Because of synchronized.

Promise not to tell.
(Reply) (Parent) (Thread)
[User Picture]From: pmb
2009-06-15 05:51 am (UTC)
Synchronized is good (very good, actually) but not enough. Try Smalltalk! It has Scheme's consistency with the power of synchronized and threads and stuff like that. It's syntax is funky, but if you can deal with Scheme, you should be fine.
(Reply) (Parent) (Thread)
[User Picture]From: lindseykuper
2009-06-15 08:42 am (UTC)
Or Erlang, even!
(Reply) (Parent) (Thread)
[User Picture]From: floydcollins
2009-06-15 03:49 pm (UTC)
Wow, does Erlang have *really really* ugly syntax. Superior concurrency, but not much else feels good, in my experience.
(Reply) (Parent) (Thread)
(Deleted comment)
(Deleted comment)
From: boojum
2009-06-15 03:26 pm (UTC)
We can trade simplicity and consistency for expressiveness and conciseness: Python! Or we can trade it for hardware access: C! Or we can trade it for neither of these things: Java!

*laughs and laughs*
(Reply) (Parent) (Thread)
(Deleted comment)
[User Picture]From: oniugnip
2009-06-18 12:47 am (UTC)
(creepy internet stalker powers: engage!)

Oh wow! Are you involved with the KGB? (it's in your interests?) Is it as mind-explodingly awesome as purported?
(Reply) (Parent) (Thread)
(Deleted comment)
[User Picture]From: lindseykuper
2009-06-18 06:40 pm (UTC)
Friend away! Who was it who pointed you to my journal?

Holy moly, you work on Twelf! We should talk.
(Reply) (Parent) (Thread)
(Deleted comment)
[User Picture]From: lindseykuper
2009-06-21 06:18 am (UTC)
Okay, what's stunning about this is that the latter two of those people apparently comprise my friend Wren winterkoninkje's entire list of "nice computer scientists in Baltimore".
(Reply) (Parent) (Thread)