MikkelFJ <mikkelj-anti-spam / post1.dknet.dk> wrote:

: I'm looking hard for something more powerful than C++.

Why are you looking hard?
No, really.  The general move towards server-side apps has unchained lots
of us from C++ GUI toolkits.  Not in 20 years have we had so many fine
languages to choose from, and so many feasible opportunities to use them.
So what are you missing?

: Ruby is a hard contender, also in expressiveness, although Haskell and the
: likes are hart to beat. Not sure about OCaml though. Haskell with lazy
: evaluation has some supernatural features I'm not sure that I'm prepared for
: yet. It *knows* all prime numbers in the world. It least it does after two
: lines of code.

Indeed.  But many functionals have lazy evaluation.  I don't know which
type OCaml has. (there is a bit of a schism in the lazy-evaluation arena)

Oh, get prepared for lazy eval everywhere.  There are few language idioms
I like more than 'over the set of integers, apply these operations, etc,
etc..' -- and I hope I'm not the only one who enjoys such simplicity to
algorithmic specification.

:> You have an interesting omission -- the ML type system, which is IMOH, the
:> most valuable thing about the ML family.  It's a sophisticated static type
:> system that infers all types -- no type declarations.  As this is
:> traditionally what draws people to the MLs, you should look into it.

: It's strange but I like strong typing, and I like weak typing. Strong typing
: often prevents you from doing things, or if you get to do them, you loose
: flexibility or typesafety (say Java / C++). A language that gives me
: typesafety without the effort and gives me real expressive power is most
: welcome (if it is also fast in runtime).

Whoa! slow down there.  You're confusing strong typing with static typing.  
Visualize 2 axes, one is labeled 'strong-weak', the other is labeled
'static-dynamic'.  ANSI C, for instance, has a static weak type system --
type validation is done at compile time, and types can be cast
indiscriminately.  Haskell has, IIRC, a dynamic strong type system --
validation is done at runtime, casting is either automatic by the system
or disallowed. (it's been a while; I could be wrong.)  Things like Tcl,
Perl, etc, are untyped, or as philg@mit dubs them, 'silly typed'.

Using C++/Java as examples for static strong typing is just
wrong.  They're sitting right at the bottom of the ladder of type
inference in languages -- the programmer has to keep track of
*everything*.

: Downside: there are other languages that could possibly be more expressive,
: and the support lib may be to small by comparison.

Downside: the grass may be greener.

: Other languages I just went over this evening: Clean, Erlang, Haskell.
: Erlang is a giant to install. You don't compile it into your C++ app for
: certain. But might be very strong serverside. Clean - just started look at
: it. They claim to be on par with C in performance.

Try Befunge.

: I think overall, Ruby is one of the best languages around even if it is not
: as powerful as some. But OCaml seem to have better compiler / runtime
: capabilities, which really matters a lot in software development. But just
: improved runtime performance of Ruby as it is, combined with faster XML
: processing, and you have a strong server platform.
: However, for the time being, Ruby lives in the realms of scripting languages
: where it could be so much more.

Ruby is an excellent 'right now' language.  I make no claims on the
future.

: But what is it with these Lisp macros?

Wrong thread, move along.