On Mon, Apr 21, 2008 at 3:11 PM, Richard Jones wrote: > Your threaded code is going to look really stupid when you have NUMA > machines with dozens of cores. Why are we optimizing for a case (SMP) > which will only be around for a few years. Arguably SMP isn't even > around now ... the AMD machine on which I'm typing this is firmly NUMA > with a good 10% penalty for accessing memory owned by the other > socket. Yes, that's why some of us don't buy too much shares in semaphore factories. > A concurrent GC should be developed. But I think you can compete in > some "niches" without a concurrent GC. Why should a concurrent GC be developed? Threaded code is a nightmare > to write & debug, and it's only convenient for lazy programmers who > can't be bothered to think in advance about how they want to share > data. OCaml supports fork, event channels & shared memory right now > (and has done for years) so there is no penalty to writing it > properly. Why not? Let's be conciliant. If people want to develop a concurrent GC, let them have a try. BTW I'm not a thread guy - I don't like POSIX threads very much. I really appreciate Lwt and use my monadic threads when developing my own stuff. > Compilation and linking are extremely painful things, especially when you > > want to start to learn a new language > > in good faith. Java has a relatively good packaging/loading model which > is > > part of its success. Ocaml is > > terrible at this. > > Huh? OCaml scripts work perfectly well, they're compiled when you run > them. I use them all the time. Yes, while I don't use them, Ocamlscripts are certainly nice thing, thank you for that. Compiling an Ocaml program remains quite an involved task, with all those not very inspectable cma, cmx, cmi, cmo, dll.so and cmxas floating around (cmigrep helps a lot) with their C flags and DLL lists. It gets even more complicated when you need to use native code or preprocessors. Ocamlfind helps a bit, ocamlbuild a bit more, but it's still painful. In Java, if you don't use native code, you just make a jar and ship the classes: jar cf foo.jar foo/, upload, java -jar foo.jar. [...] > > So there is a gap to be filled, and Ocaml could be the next fashionable > web > > programming language if we fix > > a few things or two: > > - Compilation and package headache, > > - Missing batteries. > > What distro are you using? Obviously one where you can't just > apt-get / yum install / godi whatever all the libraries and support > software you need. There is no "package headache" over in Debian / > Fedora / GODI at all. I'm not talking of packages in general - I'm using Godi on Debian and Ubuntu, but I'm talking about packaging Ocaml libs during development time. We need an easy-to-use lightweight packaging mechanism for developers and that has been discussed many times on this list. Godi is more or less OK when you passively use libraries, but it's non-trivial to inject your own stuff (even if it's just for yourself). Let's not start ye olde package management thread again. The fact is that there is large room for improvement :) -- Berke