Fortress: A Next-Generation Programming Language Brought to You by Sun Labs

“Fortress: A Next-Generation Programming Language Brought to You by Sun Labs” is the first session I attended at Java One 08. Being that this is my first time at Java One, I was pretty excited to see how both this session, and, the entire conference, would pan out.
Per her introduction, her background is big into parallelism, and like everyone else on they team, she is an old Lisper.
The focus of her talk was the top 10 ideas in Fortress. Apparently the original tag line for Fortress was that “Fortress will do for Fortran what Java did for C”. That makes sense since they were funded by the high performance computing people, but it isn’t the catchiest tag line.
Here is her top ten list for Fortress language features:

  • 10. Contracts. Requires, Ensures, Invariants.
  • 9. Dimensions and Units as fundamental types.
  • 8. Traits and Objects. Probably borrowed from Smalltalk.
  • 7. Functional Methods. I didn’t get this.
  • 6. Parametric Polymorphism.
  • 5. Generators and Reducers.
  • 4. Mathematical Syntax. One of the driving forces of Fortress to make a PL familiar to Mathematicians.
  • 3. Transactional Memory. She thinks it is “cool beans”.
  • 2. Implicit Parallelism
  • 1. Grow able. The big idea. Designed from the beginning.

Fortress is a hodge podge of cool language features; all of which are very cool (STM and concurrency were her favorite).
The last feature was the most exciting. I expected the entire room to say “ooohhhhhhh” at that moment, but no one did. I suspect no one had a clue as to what she was talking about. I would love to have syntactic extension facilities in Java. Since one of the background goals (my assumption) is to research language features that would eventually show up in Java, we’ll have to see what happens :).
While I got the impression that the presenter gave this presentation as the result of choosing the smallest straw; it was one of the top presentations out of the entire conference.

Why Emacs?

Emacs is a text editor built on top of a Lisp (Elisp) interpreter. The full API of the both text editor and the Lisp interpreter itself is available to the user.
For this reason, along with the fact that there are hundreds and hundreds of useful additions available to Emacs, I am learning it.
There isn’t anything more to it than that!

How to print a PLT Slideshow to a file

Here is how to print a PLT Slideshow to a file:
slideshow -P -c -o [output file] [input file]

  • -P: print to postscript
  • -c: (condense) flatten the output file in the case that you had built slides incrementally

Addendum: 05/17/08
The ‘ps’ argument doesn’t seem to work. I must have used the alternate ‘P’ originally for printing, but posted the other option, ‘ps’. As such, I’ve updated this post. I will look into this. Additionally I’ve changed the condense argument to ‘c’.

Scheme Versus Common Lisp: Why?

Anyone new to Lisp will quickly find that among certain folks there is very much an “us versus them” mentality when it comes to Scheme and Common Lisp.
Is it just human nature that drives the mentality? Is it boredom?
Since Scheme and Common Lisp are both Lisp dialects, in some ways they are very similar; but in other ways they are quite different. The thing is that every language decision is a trade off from which we can learn. Most students of programming would look to both the similarities and differences in each language and recognize their function and beauty!
One thing that I can guarantee that you will notice pretty quickly once you start hanging around Lispers (in general) is that there is a noticeable difference in attitude and demeanor among folks that have studied and appreciate both Common Lisp and Scheme, and the folks that have not.
The folks that have studied and appreciate both languages are simply a much more pleasant group of people to be around. Perhaps that is how the expression about “the haves and the have nots” came to be?

Working with DrScheme 372

DrScheme is a delightful environment for working with Scheme. It is has the right balance between power and ease-of-use that makes it perfect for just about anyone. Its goal is to be an excellent vehicle for both working with Scheme and facilitating learning via its teach-pack facilities. While DrScheme works pretty really well “out of the box”, you ought to dig deeper into the documentation and configuration options. Over the past year or so I’ve used DrScheme exclusively for editing Scheme and found that there are a few key-bindings, settings, tools, and ideas that were very helpful to me.
Continue reading “Working with DrScheme 372”

Lisp Changes How You Think

It is true what people say about Lisp, it changes how you think. In particular, it changes how you think about yourself!
If you pursue the “Road to Lisp”, it will serve as an elucidative experience as to whether or not you are “good” at programming. You see, I used to confuse “doing” with “learning”. All the “greats” tell you to learn a new language each year, but they don’t really tell you why, just that something good will happen. Now I can tell you from experience that I have had great fun and learned a lot jumping from language to language, but that strategy for learning is poor use of time and you’ll probably just end up being an average programmer in more languages after it is all said and done. There are better, much better ways to study the fundamentals of programming.
Lisp is one of those ways.