I got a new book in the mail yesterday. I told my mom,
“I’m waiting for an Amazon delivery today. I ordered a programming book. But it doesn’t look like a programming book.”
That was all I said about it. I don’t know what went through her head when she opened up the package and saw this:
Probably it was something along the lines of, “Yeah, that looks like something Rebekah would buy.”
I haven’t gotten very far in it yet. So far, the writing has been playful, well-organized, and assumes that someone attempting to learn a Lisp dialect probably knows basic programming stuff, and things unrelated to programming that you don’t notice you’re picking up, like how to install dev tools.
The author is an Emacs fan (makes sense if he likes Lisp), which probably means I won’t have to deal with vim. Both editors have a steep learning curve and an impenetrable host of shortcuts and stuff that you really have to put effort into learning in order to make use of them–but vim is unusable if you don’t know all those tricks. If you don’t know Emacs’s tricks, it just turns into gedit with a bunch of weird add-ons (including, if I remember right, a Tetris game, one of those chat-bot therapists, and ADVENTURE). I don’t mind Emacs really, but I hate vim.
Does that mean I’m destined to be Team Emacs once I’ve actually used it for dev? Eh. We’ll see. I’ve always been a Notepad++/gedit/nano girl. I like simple, fast, with code coloring, and a lack of clunky autocomplete features. I don’t like IDEs or editors that try to do too much stuff for you (this seems to be the definition of an IDE). Maybe I’m nursing my *nix influences here, but I prefer a command line and a simple editor–and whatever languages or frameworks work well with this lightweight arrangement–to the bigger, more heavyweight stuff. Code is difficult enough without having a steep learning curve on the stuff you rely on to write it, and I’m impatient, remember?
I am trying out Sublime Text though, because I’ve only ever heard good things about it–and I have to say, it makes the best first impression ever. It does have autocomplete features, but they don’t seem to be slow or obtrusive, and there’s probably an off switch for them. Besides, the rest of the program is beautiful. It starts up and shuts down instantly. gedit takes a few seconds to pop up, while the icon in my Dock bounces. Sublime bounces once and then stops, and it’s up. When you quit, it just goes poof. And the code coloring is really pretty–the designers took time to make sure the colors looked nice together.
I care about that kind of thing. I know some people are like, “whatever, colors, style, just make it functional”–and that’s my first priority, sure, but I stare at code a lot. I have a thing about aesthetics. I don’t like interfaces that don’t flow well; I really don’t like code that’s indented wrong; and I like my tools to be beautiful.
Even my terminal has custom settings to make it look how I want. I use cyan-on-navy, slightly transparent background, 128×32. It’s comfortably readable at any hour, it’s attractive, and I think the slightly larger window size setting is a little easier to read (even if you don’t like 128 columns, consider altering for 32 rows.
Anyway, enough about text editors. Let’s talk about Lisp, and Clojure, and my shiny new book.
I have no clue where I found this book, but I’m glad I bought it. Clojure is an interesting Lisp. It runs on the JVM, actually, which I found surprising but intriguing. “Hello World” takes like ten seconds to run, but Java is on everything, and even our cell phones are quad-core by now, so for most purposes, it’s “who cares about speed” again.
I know that one of my two favorite prospective colleges (both of which sent me acceptance letters over the weekend, by the way) teaches Racket. But I figure functional programming languages can’t be that different from each other–it’d probably be like switching from Python to Ruby or something.
If not, oh well. I do better in classes if I don’t know too much about the subject beforehand, anyway. I get kind of impatient spending time on proving I know stuff I’ve already shot past. (I’m okay with doing stuff I know how to do in order to make something, of course. Even if it’s not fun. Boring and tedious are fine; it’s pointless I don’t like.)
I’ll update later when I have more to share on this. I can’t say firm book recommendation yet, but I like it so far.
UPDATE: It looks like you can decide for yourself. The text is available online!