James's Language Ranking

I was once asked what my favorite language was. The questioner (Albert) didn't specify what kind of language, so I gave him my preferences for human and computer languages. He got much more than the one line reply he probably expected.

Natural (Human) Languages:

1. English
Though I don't like the "exception-to-every-rule" problem pervasive throughout the language, and that it doesn't follow phonetic spelling, I still find it to be a very expressive and powerful language. It's wide range comes from it's multi-cultural roots.

2. Esperanto
I like the ideas behind it a lot. But I have no experience with it whatsoever. Since is was a designed language like Klingon, it doesn't have exceptions to it's language rules. The concept behind it is also interesting: Since no one speaks it natively, everyone who does speak it is making an effort to communicate with others. So everyone is trying to meet halfway, instead of someone doing all the work of learning someone else's native language, and still being at a disadvantage.

3. Japanese
A nicer and very compact language with only about 50 consanant-vowel combinations, making pronunciation quite easy to learn. However, the 30,000+ kanji symbols makes becoming literate in Japanese very tough. I know very little. Computer encoding of all Asian languages (except Korean) is difficult. Good thing a lot of Asians speak and read English.

4. French
The pronuncation is fairly easy, especially for longer words, because they are more likely to be similar to English. It's the language of love... With another few months of study, I could probably handle technical French.

5. Spanish
It's OK by me. I don't remember much of it anymore. I do remember it having a more regular and consistent structure than English.

6. German
I've had four years of German between high school and college. The language is OK, but the Germans have a tendency to ram three or four regular words together to make up a new concept. It's so long and hard to pronounce that they end up using the initials. Not that we don't do that in English, but we aren't as bad. I was never terribly fond of memorizing the masculine/femminine/neuter definite articles for each tense and memorizing the gender of each noun. What does that stuff really tell you, anyway?

7. Klingon
I've only studied it a little bit. It has a compact, regular syntax, but (as of 1996) a vocabulary limited to space flight and fighting. What I saw of it I liked. But, right now, only a small bunch of Trekkies speak it, so it's usefulness outside of a science fiction convention is just about zero. It's a good idea to have some kleenex handy if you get into a conversation, because the spit tends to fly. I'm sure the people who don't like English for it's male bias would like Klingon, because it doesn't have any gender-specific pronouns. Everyone is effectively an "it".

Computer Languages:

1. Haskell
It is very Lispy in many senses. Functional Programming (FP) in general rocks. Lazy evaluation is a powerful, powerful abstraction technique. Wow.
2. E
The only object-capability programming language currently in existance. Read Mark Miller's Ph.D. Thesis for a good explaination.


3. Scheme
Not quite as powerful and expressive as Common Lisp. However, a lot smaller, and can (with slight modifications) support object-level confinement. That is important for large systems (isolating bugs), and mobile code applications (like intelligent agents). Also has support for OO (TinyCLOS) and logic programming (embedded Prolog library called Schelog). This is what I'll be using for my research.


4. Common Lisp
The most powerful macro system I know of. Power OO programming with stuff like generic functions. More raving to follow. Compiled (and well written) CL is usually as fast as or faster than any other languages, including C.


5. Eiffel
Bertrand Meyer has taken fundamental concepts of OO programming (such as Design by Contract, inheritance, encapsulation, and code reuse) and crafted a language around them. With the addition of a simple and conceptually clean method of concurrency, this will be the language that carries me into the next millenia. I have often compared Eiffel to a painting by a Renaisance master. The overall design is quite elegant and beautiful, with meticulous attention paid to each detail of the language, libraries and method.


6. Python
It seems to be as powerful as Perl, but easier to read and write. It also supports object orientation in a manner I'm more comfortable with. I wouldn't exactly recommend it for large projects, because it lacks data hiding and Design by Contract. But for a scripting and RAD, it seems to be OK.


7. C
For low-level procedural programming, this is one of the finest languages still. It is a very powerful language, giving the programmer free reign over the data. Depending on who you talk to, this can be a good thing or a bad thing. With bounds-checking and memory-leakage testing packages like Purify(tm) it is still a viable systems programming language. However, it is not object oriented, and code reuse is not well supported.

8. 6809 Assembly
The 6809 is the finest 8/16-bit processor I am familiar with. The 6809's rich instruction set and multiple addressing modes makes it suitable for a wide range of tasks, from embedded systems to home computers. Microware even implemented a multi-tasking operating system called OS-9 for the processor (on the Radio Shack Color Computer III). Those were the good old days.

Miscellanous
I have learned about 15 other programming languages, but none of them stick out in my mind as being particularly cool.


What's interesting is how much this list has changed in the recent years. I hope this will be my last revision for a while. I intend to become a deep Haskell expert before trying anything else.


This page is copyright (c) 1996-2006 by: James C. Graves, Jr. / (ansible@xnet.com)