Thursday, July 01, 2004

In a hole in the ground, there lived a Hobbit. No not a nasty dirty wet hole, nor yet a dry bare sand hole: it was a hobbit hole and that meant comfort.

 

I have a rather Bilbo Baggins like feeling about computing these days. I work in a predominantly .Net shop and am part of the Competency Center or Center of Excellence of a multinational corporation – which is to say that we are the specialists in our technology field. Or so they say… now being from the .Net camp I should be here getting excited about the next set of new features in Whidbey or what ‘cool’ things the next grid control offers or the way WSE 2.0 specs have been supported in VS or… you get the picture.

 

Of late however I have a feeling that Gandalf has coming knocking at my hobbit hole of technology and I have gone off after this great dragon called Scheme that guards his treasure. And people come by my cubicle and say – Rosh! What is that stuff you are working on?

 

And is say – Oh that is emacs and that is scheme

 

“Duh?”

 

“Oh.. Scheme is a dialect of Lisp and emacs was this editor written in the late 70s, popularized by RMS’s GNU version – but I am using a derivative called XEmacs… it itself is designed as lisp interpreter… ”

 

By then their eyes have all glazed over and they peek at my monitor and go “And what good is that… let me see .. car cdr lambda let lambda lambda lambda…whats this nonsense? you are just wasting your time.”

 

“No no, its pretty interesting” I say, “it shows you new ways to think and ….  

“and it lets me write procedure objects and optimizes tail recursion and call-with-current-continuation… “. “… and because scheme supports the imperative style it has a ‘set!’ but it does not have any loops…”

 

And what I hear back is “What?? A language with no loops???”. I wonder where all the other stuff I said went, anyway “Contrived languages!”

 

In hobbit speak this would have amounted to saying… Nasty things these adventures, gets you home late for dinner and that kind of stuff. No respectable hobbit would go on an adventure.

 

And friends say,

“what about your blog Rosh? People don’t come there to read scheme, what about your readers?” (what readers? < sniff />).

 

And I say, “ yeah but scheme is pretty interesting and the point in blogging is that I write what I have running in my mind… “

 

 Anyway, after being at scheme for a bit now, I must say, I am rather enjoying it. I think I am learning to walk-the-walk rather than just talk-the-talk. Its been a couple of days since I have had my head stuck at not being able to write anything non-trivial with call/cc. I think that is beginning to clear up today. It is a good feeling.

 

If I had been braver like I once was, I would have compared myself to Jonathan Seagull talking to the Breakfast Flock, here in the blog entry. Winning call/cc will be like learning how to do a high speed dive onto the wall of ocean surface, and being able to pull out of it gracefully. Or like being able to take the Arkenstone from under the great Smaug, or in this reality - the great Scheme.

 

I am not that brave now. But I think I am enjoying learning to be a little schemer. 

Thursday, July 01, 2004 9:46:48 AM (Eastern Standard Time, UTC-05:00)
The
< reader name="twixt" />

Twixt
Friday, July 02, 2004 8:25:47 AM (Eastern Standard Time, UTC-05:00)
C# MVP's passion with ruby now shifts to scheme. It does matter in the grand *scheme* of things huh?

So what's next? APL? ;)
Friday, July 02, 2004 8:31:50 AM (Eastern Standard Time, UTC-05:00)
Actually yes APL is close... very close, but still a while away. Do you remeber thatthe creator of APL, I cant remember his name, has two languages to his credit. One was APL and the other wa called 'J'. Now the very first know suggestion of something like call/cc is in one paper about Algol that describes a new operator called 'J'.

Now my first inclination would be to explore the connection, but I have a feeling that things should lead to APL, in good time (the emphasis being on the 'good' rather than on the 'time')
Roshan
Friday, July 02, 2004 8:39:40 AM (Eastern Standard Time, UTC-05:00)
Yeah Kenneth E. Iverson is the professor you are talking about.
Take a look at the prime number program in APL at http://www.users.cloud9.net/~bradmcc/APL.html. [Can't copy paste here, know why?]

APL sounds interesting to me thanks to its proximity with math but the symbols scare.

Friday, July 02, 2004 9:18:35 AM (Eastern Standard Time, UTC-05:00)
Amazing write-up Rosh. And like you've shown me already Scheme does seem pretty interesting and requiring a very different approach to the whole thing. I think it is more that beyond a point of time exploring something new and trying to blend with new approaches doesn't quite appeal to people like me - not because it is not interesting, not because i don't want to do it - but for simple lack of time. i wish every now and then i had more than 24 hours for working on things other than mundane daily routines.

Glad to have you two around to keep showing me little things like these now and then - and i think there are enough people out there benefitting from the blogs too.

APL next? (shudder!) :)
Friday, July 02, 2004 9:29:23 AM (Eastern Standard Time, UTC-05:00)
hey Pandu...
Well I had that sort of conversation with a lot of people. I am not sure of what to do next though - Nemerle, more Groovy, J, Dylan, Oberon, ML, Haskell, more OCaml... dont know. I have my plate full and its very exciting stuff.

Meanwhile I have a long way to go with Scheme - very intelligent people spend lifetimes with it. I just got my head around call/cc yesterday and I tell you, it was mind blowing. Simply that. No other language I know (expcting Ruby which has callcc) comes dingo's kidneys close to that. I am waiting for the dust to settle and then figure out coroutines and something called define-syntax, which you can guess what it does. :)

The most reasobale explanation of call/cc I have found till now, is here:
http://www.eleves.ens.fr:8080/home/madore/computers/callcc.html
(Notice, port 8080 - so I had to bypass our proxy to get to it.. I feel really bad everytime I have to do that :(, but I tell myself that its for a good cause)

Pooj, yeah I can guess why you can't paste APL here :))
Roshan
Friday, July 02, 2004 9:53:55 AM (Eastern Standard Time, UTC-05:00)
Pooj.. I even wonder how people write APL in the first place. For example - how would you cut and paste a piece of code from somewhere to see if it works :)

crazy, eh?
Pandu
Friday, July 02, 2004 12:33:24 PM (Eastern Standard Time, UTC-05:00)
Well...the amount of code that you end up writing in APL, you probably don't need copy paste :))
Wednesday, July 07, 2004 2:00:27 PM (Eastern Standard Time, UTC-05:00)
Try Haskell, Roshan. Think of it an as an elegant functional language
Thursday, July 08, 2004 9:11:26 AM (Eastern Standard Time, UTC-05:00)
I will Sriram, thats on my list. But Scheme is a 'must do' language. The ability to treat code as data and higher order functions with a dash of maintaining state is amazing.

Its true that Scheme does not lend itself to any form of software engineering of teh sort you see in a corporate, but for teh pleasures of our intellect that is not the role of scheme.
Roshan
Thursday, July 08, 2004 9:13:06 AM (Eastern Standard Time, UTC-05:00)
Btw Sriram, have you read this paper, its a really nice one -

Why Functional Programming Matters
http://www.md.chalmers.se/~rjmh/Papers/whyfp.pdf
Roshan
Tuesday, November 08, 2005 6:38:48 PM (Eastern Standard Time, UTC-05:00)
You're in fine company. Don Box likes Scheme too.

Learning new languages is a fine way to work outside my comfort zone, and hopefully makes me a bit more versatile.

There are a lot of dynamic features being built into C#, LINQ for instance is just lambdas. I'm planning to use IronPython more extensively in order to expose scriptable APIs for products which need a lot of customization, and when I don't want users editing logic in an XML config file.
Name
E-mail
Home page

Comment (Some html is allowed: a@href@title, strike) where the @ means "attribute." For example, you can use <a href="" title=""> or <blockquote cite="Scott">.  

Enter the code shown (prevents robots):

Live Comment Preview