Danach bin ich ein Humanist, der fundamentales Christentum lehrt: If programming languages were religions…. Aber warum soll ich es nicht auch einmal mit Taoismus probieren? Über Voodoo bin ich ja schon hinaus ;-)

, , , ,

In the last few days I refreshed my knowledge on Ruby and Lisp. I started with Ruby but eventually I came across Paul Grahams excellent book Hackers and Painters. Since I am an ACM member I have access to the book via ACM’s online books (Safari Enterprise Library). I browsed a little bit through his web site, found the online book On Lisp and became interested to Common Lisp. Yeah, it is really a language for hackers.

In ancient times, Scheme was one of my favourite language. It is quite elegant, homogeneous, and was fun to learn. Like every software addicted person I implemented a Scheme interpreter on my own.

Same with Python. I heard about Python a long time ago. Approx. same time when Tom Lord posted an article about an interesting virtual machine that became later the JVM. Even before that, I read a book about the programming language ABC. Python replaced Scheme as a favourite language because of its libraries. Since the introduction of lexical scoping in Python, I explain Python to my colleagues as a Scheme / Lisp without the braces. But of course with indentation. O.K., that’s not quite correct. I do ignore the macro system.

Learning a little more about Lisp and Ruby reveals an interesting property of both languages. Compared to Scheme and Python, they are more impure in trade of being more pragmatic. One example. In Scheme and Python most of the language contructs are also syntactically first class constructs. If you have a variable that contains a reference to a function, you can call the function as any other function:

(function para-1 para-2 …) ; Scheme
function(para1, para2, …) # Python

In Lisp and Ruby, you must use specific language features (function funcall in Lisp, method call in Ruby). You trade these necessities for easier handling in ordinary programming. Separate name spaces in Lisp, method call without parentheses in Ruby. Just an example.

After learning a lot about Lisp, I will concentrate more on Ruby for the next time. Python/Ruby shares an important property compared to Scheme/Lisp: they have much more mature libraries, e.g. for database access or internet protocols.

Unfortunately, my customer just uses Java in his projects. Maybe I am able to place subversively a Scheme/Lisp system written in Java …

, , , , ,

Currently, I am investigating new programming languages. I do this several times a year. Sometimes I stumble over the same languages, sometime I discover something new. The same for now.

Everything started with reading the JBoss Administration Manual. I wanted to try out some of the Java classes but I was too lazy to use the compiler. Hmm, there are several languages for the Java VM. Since I am quite familiar in Python (in my previous company we developed the whole new product in Python) I took a look at JPython. I dropped it fast, because I do not want to un-learn Python 2.4 and to move back to 2.1.

BeanShell is the next candidate. Quite nice. Several years ago, I used it in my project. It is still useful for fast experiments and prototypes. However, I would use it only to glue code. Developing a whole product just with BeanShell would probably too hefty.

Now I am trying out Nice. I heard about it, now it’s time to give it a try. I like the automatic type inference. Java’s gibberish is boring me. I want to have a DWIM language. It should not automatically solve my problem, but i should not stand in my way. The problem with Nice is its interpreter. It does not have one. You are locked in the edit-compile-run cylce. Not Nice.

The other programming language I currently learn is Ruby. But that’s another post.

, ,