Sunday, July 19, 2009

Gambit-C Scheme has become my new C

I might be writing an article about this soon: Scheme is a high level language - great for all around development, and Gambit-C can (once an application is developed in a very productive Emacs + Slime + Gambit-C environment) be used to create small and very efficient native applications. BTW, if you use an OS X or Windows installer, also get the source distribution for the examples directory.

In Unix tradition, I like to build a set of tools as command line applications, and Gambit-C is very nice for this.

8 comments:

EsauCairn said...

I'm just curious how you switch back and forth between LISP, Scheme, Java/Scala, and Ruby so much in your blog. Are you involved in projects that use multiple languages, or do you just do an awful lot of tinkering in your spare time?

Mark Watson, author and consultant said...

Hello Esau,

Good question! Thanks for asking.

I usually work as a consultant between 15 and 20 hours a week - in the last 4 years, that consulting time has been fairly evenly split between Java, Ruby, and Common Lisp. These are my "money languages."

On average, I spend about 15 to 20 hours a week working on books and/or articles (paid for writing). I enjoy writing!

I also spend 15 to 20 hours a week spent on some combination of research, commercial product development, and self-learning projects. This is the "tinkering" time :-)

So, I spend on average 45 to 60 hours a week in front of a computer. Ouch! However, since I usually work from home, I do save commuting time, which is good, and I have a hiking trail head to a US forest service area 100 feet from my house. This also saves lots of time since when I want to go hiking I don't have to spend a lot of time in the car getting to where I can hike (unless my friends want to try new hiking locations). I can also kayak near my home, and my main hobbies are cooking and music. So, I am really lucky getting to spend almost all of my time doing things that I enjoy. I get to spend more time doing things I love doing by trying to eliminate wasted time like commuting, watching TV, etc.

Probably more information than you wanted :-)

Mark Watson, author and consultant said...

Hello again Esau,

To specifically answer your question on Gambit-C Scheme: I am working on a commercial product (which may never get released, depending on how much time I have for it) and I am using Gambit-C for that. I would do it in Ruby, but Ruby is too slow for this particular application. I would do it in Common Lisp, but compiled native applications written in Common Lisp are too large, and don't have the few millisecond startup times of applications built with Gambit-C (same reason I don't use Java for this).

EsauCairn said...

I appreciate the answers, thanks. I work 40 hours a week and commute another 8, and I have young kids to chase around. I have been itching to use something nicer than the Java I use at work (no offense to Java fans) in the evenings, but by the time the kids are in bed I can't concentrate.

Martin said...

I'm interested in how you integrate Gambit with SLIME. Could you explain a little?

Mark Watson, author and consultant said...

Hello Martin,

The Gambit-C web site has very good instructions for using Gambit-C with Emacs. I would prefer that you follow those directions, but, here are the snippets from my .emacs file

(add-to-list 'auto-mode-alist '("\\.scm$" . scheme-mode))


(autoload 'gambit-inferior-mode "gambit" "Hook Gambit mode into cmuscheme.")
(autoload 'gambit-mode "gambit" "Hook Gambit mode into scheme.")
(add-hook 'inferior-scheme-mode-hook (function gambit-inferior-mode))
(add-hook 'scheme-mode-hook (function gambit-mode))
(setq scheme-program-name "gsc -:d-")

Best regards,
Mark

lele said...

You wrote: "Emacs + Slime + Gambit-C". Does SLIME support Gambit-C? I didn't know that.

Mark Watson, author and consultant said...

Hello lele, my mistake: Gambit-C has its own emacs support, which is very nice.