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.