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)