I'm a tinkerer with technology, and occasionally strike lucky with it. I co-chair the O'Reilly Open Source Convention and I'm in charge of designing O'Reilly's conference software platform, Expectnation.
I've written a few computer books, most recently "Learning Rails", in collaboration with my old friend and co-conspirator Simon St.Laurent.
A lot of people talk about how wonderfully expressive is Clojure. However, expressiveness is not the goal of Clojure. Clojure aims to minimize accidental complexity, and its expressiveness is a means to that end.
I am loving everything Nathan writes about Clojure right now. This concluding paragraph is a wonderful summary of the primary attraction of Clojure to anybody who's written software for more than a few months.
This quote comes from a detailed explanation of why the author uses Clojure. But this simple sentence resonates most. The whole post is very much worth reading.
I love this tale of computers gone wrong. It happens all the time, and it's great to talk about it. Underneath the fun and the horror, we learn. Just a little. Sometimes not just about computer systems, but about ourselves too.
Not for the first time, it struck me today that while they are powerful for tinkering and exploration, line-oriented REPLs like 'irb' in Ruby mostly suck. Ruby's a block-oriented language, and you can't do meaningful exploration in a line-oriented environment.
I never had the luxury of working in an Oberon OS -- the video shows Bluebottle, a later successor -- but I really wish for one while trying to prototype code in REPLs. (I did write Oberon, however -- on the Amiga, no less!)
The Oberon programming language itself is a compiled language, and thus not suitable for REPLs, but what I'm wishing for is to take the idea of the Ruby or Clojure REPL and smush it together with the text GUI of Oberon OS.
If you've not come across the concept before, the idea is that you edit and run programs in place on the screen. To quote the Wikipedia page on Oberon:
Oberon has a text user interface (TUI). It combines the point-and-click convenience of a graphical user interface (GUI) with the linguistic strength of a command line interface (CLI) and is closely tied to naming conventions of the Oberon language. Any text appearing on the screen can be edited and used as command input. Nothing like a prompt is required.
For a wonderful overview of some of Oberon's history, and what it was (and is, with Bluebottle) like to use the system, check out this article by Lukas Mathis.
I'm a professional JavaScripter so you shouldn't read this as Us vs. Them. But if you're interested in a really high performance evented webserver that has the same delicious lack of ceremony of Node.js, I recommend playing around with Clojure and aleph.
I hope nobody paints this as too much of a religious war. As far as I'm concerned, Node.js and Clojure/aleph have a lot in common, and are exposing developers to a more efficient way of writing applications. (To be truly efficient in writing JavaScript, your keyboard needs a }); key of course.)
I really need a spare hacking weekend to get on top of this. I've been looking for the right way in to Clojure web applications, and aleph is very intriguing.
For reference, here's Hello World in Clojure/aleph
Fun little post on learning a new programming language. Unsure I agree on every point (I enjoy a bit of rushing in and mistake-filled hacking), but it's worth sharing for the subheading "Oblique Strategies for the Autodidact" alone.
Comments [0]