So What's a Functional Language, Then?

Martin Dittus · 2006-05-26 · code, links · write a comment

A couple of days ago Chaosradio Express published another great podcast: "Programmiersprachen und Dylan", a conversation between Tim Pritlove and Andreas Bogk on the subject on the Dylan programming language, and programming languages in general.

The podcast has a duration of nearly two hours, but if you speak German and are interested in topics of such an abstract nature it's well worth your time.

They start off from the very beginning (programming language basics, Turing machines etc) and gradually introduce more and more concepts of the Dylan language, some of which are really fascinating.

All Roads Lead to Lisp

I'm especially interested in the topic because Dylan is a functional programming language with a close resemblance to Lisp, but with a C-like syntax.

For a really long time now I have a very prominent entry on my todo-list: "get to know Lisp in-depth". There are a variety of reasons why I'm so interested in the language, and I won't bore you with the details (others have written enough about this already).

What prevents me from doing that however is that there are so many impediments -- e.g. the deeply fragmented landscape of Lisp environments. Lisp is simply not used widely enough, and you won't find an environment and language implementation with a community behind it that even remotely resembles that of other languages. And this is only intended as a pastime, so I'm reluctant to struggle with the technical consequences this may imply. (See also Steve Yegge's take on these practical matters. As he puts it: "Problem 1: Which Lisp?")

But I'm getting there, albeit slowly. I know Ruby, which shares a number of language concepts with Lisp (lambda, etc). I know a little Lisp syntax, and have a grasp of some basic concepts. And I'm always interested in high-level overviews of the language. And last week, with the Dylan podcast and a number of other resources, I could take a next big step towards my ultimate goal.

Lisp-y Concepts

If you can read German take a look at the short discussion on Andreas Bogk's blog: "Chaosradio Express über Dylan", where Andreas clarifies some of my Dylan-related questions.

E.g., did you know that Objects in Dylan (and Lisp) don't include methods? They're basically fancy structs with inheritance, and methods (and functions) are a completely separate concept. Sounds weird, doesn't it? But that's why this is so fascinating to me, why it pays off to look around -- and then find that there's another world behind the walled garden, that your intellectual horizon is often more limited than you might think.

Two other interesting resources on Lisp I found during the last couple of days:

First there is "Practical Common Lisp", a Google video lecture by Peter Seibel, the author of a book on Lisp with the same title. This video takes a lot of time to demonstrate e.g. the usefulness of Lisp's double dispatch mechanism (as opposed to the single dispatch mechanism typically found in popular OO languages). Seibel does that by implementing variations on the Visitor pattern in Java and then finally comparing it with the much simpler Lisp version.

A then I found "If It's Not Nailed Down, Steal It", an article that demonstrates Ruby's relationship to Lisp by attempting to implement some Lisp features that Ruby lacks (from the article summary: "pattern matching, S-expressions, and external domain-specific languages"). I didn't finish the article yet, but it certainly helped me grasp several concepts faster that with other resources.

There is a lot of documentation on Lisp and its language concepts, and these are just examples. While they were helpful to me you may be interested in a totally different angle on the subject.

"Alternative" Teaching Methods

I just love these "alternative" approaches to teaching. E.g. more and more people are learning about the teaching power of screencasts, which allow you to quickly demonstrate complex topics with remarkably small effort. (Cf. the growing list of TextMate screencasts.)

The Google video mentioned above comes from a collection of Google TechTalks, which looks like a very interesting resource. They invite a variety of speakers to lecture on all kinds of subjects, and it doesn't seem to be limited to technology-related topics -- they have a lecture on "Collecting Meteorites in Antarctica", one called "Stanford Experts on Climate Change and Carbon Trading", and others. I heartily invite you to browse around their collection.

And audio lectures such as this Dylan podcast imo fall under the same category: it's much more interesting if it's fun, and it's always fun to listen to someone who's sharing his experience, and his stories.

I'd love to get to know more resources of this sort, so let me know if you find something interesting.

Links


Next article:

Previous article:

Recent articles:

Comments

Comments are closed. You can contact me instead.