Levi's Lisp Log

Thoughts and links relating to Lisp and computer theory

Info

Levi is a Computer Science student with interests in programming language theory and other software topics. More info about him can be found at his main page.

This blog is an exercise in Lisp programming, a repository for information related to programming languages, and an effort to keep up-to-date with web and blogging technology.

Categories

Links

Syndicate

RSS

Floating Point Math in C++ Templates

For a truly evil abuse of C++ template metaprogramming, see this implementation of floating point arithmetic in C++ templates. Apparently it is ridiculously slow to compile (even compared to other C++ code, which is slow to compile to begin with), but beats a hand-coded C floating point implementation in execution speed. C++ is truly a complex and bewildering beast, but definitely powerful in a way that C just isn't.

# Posted by: Levi at 4:36 PM on Wednesday, August 3, 2005
   Comments: (0) Categories: C

Developing Web Apps in Lisp

If you've ever been curious about what a typical Lisp development environment is like, or about how a Lisp web programming framework would work, here's a great video (torrent link) for you.

The video shows off a number of cool things. First, there's SLIME, the most advanced Emacs mode for Common Lisp development. It's got several IDE features that make Lisp programming far more comfortable than it would be without them. Second, there's UnCommon Web, a Common Lisp continuation-based web development framework. It looks to be pretty nifty for web apps that need control flow.

# Posted by: Levi at 5:43 PM on Tuesday, July 26, 2005
   Comments: (0) Categories: Lisp

Scheme to C in 90 Minutes

The Montreal Scheme/Lisp User Group site has an archive of a presentation given at one of their meetings in which a simple Scheme to C compiler was constructed. It doesn't support the whole Scheme standard, but does support optimized tail calls, continuations, and full closures.

90 minutes is pretty good for a language compiler, even if it doesn't compile to native code! Scheme is a great language for studying compilation techniques since it's so easy to transform.

# Posted by: Levi at 5:19 PM on Tuesday, July 26, 2005
   Comments: (0) Categories: Scheme

The Internet Was Not an Accident

Ryan Tomayko has written a thought-provoking essay based upon Tim Berners-Lee's Axioms of Web Architecture about the design principles that have made the internet a success and the often very contrary design principles that businesses are trying to impose on it and the rest of the software world.

Although there is still room to debate the meaning of the principles themselves, they have undoubtedly met great success in the real world. Businesses who are successful at leveraging the internet are also, not surprisingly, employing these principles. Hopefully, other businesses will catch on to this and stop fighting against the current.

I think that adoption of these principles by the business community (who is, after all, a huge consumer of software) will have a definite effect on the design of future programming languages and software systems. Again, hopefully this will be a significant change for the better.

# Posted by: Levi at 5:30 PM on Thursday, July 21, 2005
   Comments: (0) Categories: Language-design

Programming as an Engineering Discipline

At the recent International Lisp Conference, John Allen presented a paper entitled "History, Mystery, and Ballast" in which he gives the early history of the engineering discipline and draws an analogy between engineering of that time period and current software development practices. As physical and electrical engineering are constrained by the laws of physics, software is constrained by the laws of mathematical logic, and he hopes that a stronger theoretical basis and disciplined training will eventually supplant the mostly ad-hoc techniques of the current software shop culture.

In addition to the interesting historical aspects, he also gives an overview of the mathematical theory (constructive logic, lambda calculus, Curry-Howard Isomophism, etc.) that could serve as a basis for a software engineering discipline that creates predictable software, as he calls it.

# Posted by: Levi at 3:35 PM on Wednesday, July 20, 2005
   Comments: (0) Categories: Lisp