Eccentric Developments


Raybench - Lisp (PLC pt.8)

Lisp is a programming language that dates back to 1958, initially conceived as a means to mathematical notation, was later adopted as the to-go language for artificial intelligence.

As it's name indicates, Lisp (""LISt Processor"") works on a syntax composed of lists for data as well as for expressing code; which seems intimidating at first, but it's quite pleasant when you get used to it.

It has a powerful macro system that let's the programmer extend the language and create domain-specific languages.

Results

SBCL 1.1.14 was used for running the tests.

Loading time

How fast does the interpreter loads and parses the source code.

$ time sbcl --script lisprb.lisp

real	0m4.911s
user	0m0.484s
sys	0m0.048s

Starting up sbcl seems to be avery slow operation. I don't think that parsing the program would be responsible of the slow loading times.

Running Time

$ time sbcl --script lisprb.lisp 

real    24m43.216s
user    24m27.772s
sys     0m4.972s

Running times are slow, although a bit faster than compiled Haskell. Was expecting something better, since there are rumours around the internet that Lisp code runs as fast as C, but even JavaScript is faster here.

Code Metrics

Line count: 131 code, 30 blanks, 161 total. File size: 5833 bytes.

General Thoughts

For several years, I've had Lisp in the radar. Many stories have I read of teams succeeding while using this programming language when deadlines and/or budget where critical, so that picked my interest.

After working with it for this project, I find Lisp very pleasant to work with, the syntax is nice and very expressive. Too bad I didn't make use of the macros system (which I couldn't find a good use case for).

I really expected it to be at least as fast (or faster) than JavaScript, but that was not the case; nonetheless file size and line count are much better, specially compared to C, and that makes it a good candidate for a more thorough exploration.

Follow

You can follow the development of this project on GitHub: https://github.com/niofis/raybench