I also cast my vote for Ocaml. Ocaml is the best compromise between pleasure of coding, speed of code, the compiler working for you (strong type checking = most bugs found at compile time). Memory management is much better than in Python. I particularly favor Ocaml for largish projects. There, the type system helps you gain confidence that the part of the system that you did not touch in a change (typically, 99%) is unaffected by the change. This makes debugging and development much easier and painless. I certainly would not imagine any more developing in languages where any change may break far-away things without warning. And where else can you find a debugger that can execute code (or give you the impression it does) backwards? This is invaluable when trying to find things like where an exception is thrown: you simply run the code until it exits throwing the exception, then you back off a few steps until you find what is throwing the exception and why. C programmers grappling with Segmentation Faults are very surprised to see this style of debugging! And even though Ocaml was born as a functional language, I am happy using it even for code that has to access databases and interact with the web; see http://trust.cse.ucsc.edu/WikiTrust . The one drawback of Ocaml is that it is harder to find developers for it. But this can be an advantage as well: since the barrier to entry is slightly higher, a typical Ocaml programmer tends to be a better programmer than a typical perl or C++ programmer, in my limited experience. Luca On Mon, Sep 1, 2008 at 9:36 AM, Peng Zang wrote: > -----BEGIN PGP SIGNED MESSAGE----- > Hash: SHA1 > > > On Saturday 30 August 2008 03:50:30 pm circ ular wrote: > > I have tried a lot of languages but never really felt 100% satisfied. > > I really like Python, it makes me very productive but Iwant something > > a little more functionally oriented plus a static(optionally declared) > > typesystem. > > > > I tried Haskell and I really like it but I find it hard to get used to > > some things(like no destructive updates of datastructures outside the > > IO Monad). > > Ocaml seems a little bit more practical and it is aslo very fast(well > > haskell is too). > > > > tried lisp at first but libraries and documentation just werent up to > > standards there either. > > > > so far Pytho is the best Ive found (for me) but still isn't satisfied. > > > > could ocaml be what I look for? > > I think OCaml is what you are looking for. I went through a similar search > for a comfortable language. My order was a bit different, lisp first, then > python, then OCaml, then played a bit with Haskell but am sticking with > OCaml. > > I find OCaml to be a great compromise. Haskell is cool, but it forces you > to > do things in certain ways and use a lot of abstraction which often seems > overkill, making simple things much harder than they should be. I really > like how easy things are in Python but large programs I find are impossible > to maintain because it's not statically typed (it's also slow.. but that > might have been ok). Lisp is really great with what you can do and many > simple things are simple, but it doesn't have the scaffolding to let you > scale up to big stuff (missing libs and stuff). OCaml has been great. It > has its drawbacks and yucky corner cases like all languages. Overall > though, > it's been good and I've been able to find reasonable workarounds for things > I > don't like. I encourage you to give it a serious try. > > There's a great book on OCaml here: > > http://www.cs.caltech.edu/courses/cs134/cs134b/book.pdf > > The best emacs mode for ocaml is tuareg mode here: > > http://www-rocq.inria.fr/~acohen/tuareg/ > > I also write some additional on top of tuareg mode to be more like the > SLIME > mode for lisp but it's alpha (mostly because I wrote it for myself and > packaging it and making robust is a lot of work that I'm too busy to > handle) > so I don't really recommend it yet. > > Peng > -----BEGIN PGP SIGNATURE----- > Version: GnuPG v2.0.7 (GNU/Linux) > > iD8DBQFIvBosfIRcEFL/JewRAv4kAJ40DMoR1GZd1LagWMwR1umbEglLVwCfaMoP > F9jaCP+f2iJvqU/ZxVs+Czs= > =k9FZ > -----END PGP SIGNATURE----- > > _______________________________________________ > Caml-list mailing list. Subscription management: > http://yquem.inria.fr/cgi-bin/mailman/listinfo/caml-list > Archives: http://caml.inria.fr > Beginner's list: http://groups.yahoo.com/group/ocaml_beginners > Bug reports: http://caml.inria.fr/bin/caml-bugs >