Wednesday, December 06, 2006

Computer Languages Overflow

The unprecedent improvement in hardware processing speed not only spawns a lot of new programming languages, but also resurrects a lot of dead ones. Needless to say, without those dual, quad or upcoming octo cores which offer higher and higer processing power, these languages are basically useless 5 years ago.

Well, maybe a little bit exaggerated but recently there are a hell lot of programming languages out there. Here I count distinct languages (not the implementations though) instead of family of language, ergo even OCaml is a dialect of ML, I count them separately.

Here is a list that I can think of:
  • C
  • C++
  • Common Lisp
  • Scheme
  • OCaml
  • Haskell
  • Python
  • Perl
  • ML
  • Ruby
  • Visual Basic
  • Parrot
  • C#
  • Ada
  • Cobol
  • Smalltalk
  • Erlang
  • Java
  • Fortran
The list can go on and on, but these are what I have read about recently.

For some reason, a lot of people tend to take a particular language (usually it is the language they love) and hail it as _the_ language by having language shoot out, functional comparison, or comparing on the ground of aesthetic beauty. I have seen some paper heralding a particular language X and to show the comparison is 'fair', language Y and language Z are included.

Some points to ponder upon:
  1. Each language is designed with a certain domain in mind, Fortran is mainly for numerical computing, while C is more of a low-level, system programming. No language can excel in everything.
  2. When you have a hammer, all problems will look like nails. If you are used to programming in C with the weakly typed system, the strongly typed system in ML will most likely drive you to smash your monitor and chew on the debris. Each language has its own caveats.
  3. When writing test programs in different languages, not many people can fully utilize the power of each language in question. Even if you invite so called experts to join the fun, the problem definition most probably will already give some languages an unfair advantage. Having the unfair advantage usually doesn't imply that language is superior, just the problem on hand matches its design domain (cf #1 above).

Having this rant after reading a paper on a multi-threading model built on top of scheme and was compared against the god-daddy of reliable and multithreading language, Erlang.

If you force a dog to meow, you get a lousy cat, and a very unhappy dog.

Luckily I am a cat person. Meow... Wait, someone calls me a wolf??? Hmm...

5 comments:

The Soothsayer said...

Some people may say I'm insane but I love C!
I love pointers and all of C's eccentricities.

Cuppa Chai said...

Ah, you gotta specify what domain you are working on. From my understanding, you are working a lot with device drivers and hardware related stuff. In this aspect, C is a reasonable choice. However if you are coding a transaction server using C, you won't be that thrilled with C's pointer and malloc functions. :) Yes, people have done this in C, but the question is: does it worth it? and is this the only and best programming language choice?

Jimmy L. said...

I love BrainFuck.

It can provide you hours of fun doing things you can probably do in 30 secs in any other language.

www.muppetlabs.com/~breadbox/bf/

Peaople say that I'm insane for a good reason. I think. :)

The Soothsayer said...

It's an irrational thing, this choice of programming language. Like love. :)

Obviously I know a few but there's none that I spend so much time improving myself on. Dedication to the art of programming in C. But recently thinking of going back into Java again for GUI programming for my stock monitoring software. Any suggestions from the readers?

Cuppa Chai said...

YC: The BF language is reserved for the time when I feel masochistic. :P

Regarding to the stock monitoring, I have seen perl modules implemented for that purpose. I think it is called stock::quote or something similar. Will save you time. :)