Jonathan Sobel

I am a doctoral student at Indiana University in the Computer Science Deparment. My advisor is Dan Friedman, with whom I work on a variety of topics in programming languages. (See also the IU Computer Science Research Page.)

In case someone wants it, my resume is available in PostScript format. (You can also have it in PDF.)

Several people have asked where they can find my note on how I used correctness-preserving transformations to implement a very fast "Fast Multiplication" program in an algoriths class my first year at IU. Here it is.

This page is a little out of date now. Updates coming soon!

Current Projects:

Programming Languages

The following section contains my biased opinions about various programming languages, but it also contains links to code that you may find useful.

Where I Want to Be

My favorite programming language is Dylan. Dylan is a completely object-oriented language, with multiple inheritance, generic functions, a powerful module system, a very expressive exception-handling system, hygienic macros, pleasant semantics, and a clean way to turn the knob between expensive dynamic behavior and efficient static constraints.

I am working (occasionally) on an optimizing Dylan compiler. I also have thousands of lines of Dylan code lying around, some of which I'll link in here, as soon as I get around to it. In the meantime, here are some other valuable Dylan resources:

Where I Often Am

The common toungue around here is Scheme. Scheme is technically a small, neat dialect of Lisp, but Scheme programming tends to feel quite different from Lisp programming, to me. Currently, Scheme has a beautiful core, but no standardized module, macro, exception-handling, or record mechanisms. Almost all real implementations of Scheme have these things, but they all differ. Of course, Scheme isn't object-oriented, either.

I think Scheme really shines as a language for scripting, application extension, and all those other things for which people use Perl, Basic, and shell languages. Here are some resources:

Where I Occasionaly Go

Well, OK, so Java isn't all that bad. In fact, it has several redeeming qualities, and even a few good ideas. I have actually done quite a bit of hacking in Java. The best things about Java are its portability (especially for GUIs), its attempt to be secure, and its concept of snatching code from across the 'Net. (Sending the code to handle data along with the data itself is simply the right way to do things.) The worst things about Java are its nasty attempts to cater to C++ syntactic conventions, its impure object model, and its failure to demand that JVMs handle tail recursion properly.

The largest body of Java code I have written is a big library of data structures and supporting routines. I also have several other cute hacks (cute in a programming-language way, that is), which will appear here soon. In the meantime, here are some other resources:

Where I Try Not to Go Anymore

I used to do lots and lots of programming in C++. Yes, that's right, hundreds of pages of code. I got sick of managing my own memory, mainly. Actually, it's hard to pin down what makes C++ so unpleasant for coding. In fact, C++ is unpleasant in the same sort of general way that Dylan is pleasant.

On the other hand, I suppose it is worth mentioning that C++ has provided some excellent material for analysis and study. For example, nailing down the true foundations of the multiple inheritance mode (and its implementation) in a mathematical way turned out to be a major undertaking (see Jon Rossie's work).

Even though I don't like it, I do have some fairly useful C++ code lying around. I'll make it available here soon.

How to Reach Me

Email Address
jsobel@acm.org
Office
Lindley Hall 230A
Office phone
(812) 855-4885
Home phone
(812) 331-0999

Here is my GnuPG public key, in case you need it.


jsobel@indiana.edu
Last modified: Fri Sep 13 12:54:33 EST 2002