Over the last decade, I learned to program in quite a few different languages like BASIC, Shells, Perl, 'C' and Java. Although I never worked directly as a programmer, I often had to help myself creating small solutions to improve business or automating a process. A certain pattern, opinion and preference emerged over the years that I want to share.

The prefered language I am now working in is 'C'. The language I like the most is Java, and Perl was quite a long time in between.

I like Perl for its easy learning curve, the huge and free availability of quality libraries, the automatic variable type conversions and the convenience of a interpreter-style language.

Then I became interested in Java through a collegue whose opinion I regard highly and who started to program in it enthusiastically. I had to find out for myself and after I went through the steep learning curve, I was glad I did. Java shines in many areas. The strict naming convention schema makes it easy to read foreign code, combined with the object orientation it is easy to re-use own code or foreign modules for rapid development.

Compared to other languages, it comes with a extensive library collection out of the box and even includes a full graphic environment.

It has its own memory management and an easy way to program multi-threaded for parallel task execution. The platform independence - I never really needed it so it was a 'nice to have'.

Especially in web applications, both Java and Perl are dominating. Then why using old 'C'?

Both Perl and Java have a dependency, Perl on the interpreter and Java on the virtual machine. Especially due to the popularity with Java I have experienced so many problems that offsets the benefits: Unpredictable timing behavior during code execution, software packages requiring different JVM's that are incompatible with each other (try to run a 1.3 and a 1.4 JVM in parallel) or even crashing the host system (i.e. by running a simple applet in Internet Explorer due to a thread problem in the JVM). And the complexity doesn't stop here. For web applications, running an application server means managing another layer of software with ports and links and database connections and access rights and network connectivity and ... and ... and.

So I fell back to 'C', relying on a very few external libraries like 'cgic' or the OpenSSL libs. Trying to keep functionality and programming simple and avoiding to much dependencies became priorities to be able to finish applications and manage their support over time.