http://shootout.alioth.debian.org/u64/benchmark.php?test=all...
1,466 karma · joined January 25, 2009
http://shootout.alioth.debian.org/u64/benchmark.php?test=all...
There is nothing weird about ifs' behavior once you understand it.
Byron's rc tried to 'fix' ifs, and made everything worse.
I wrote a pretty complex web framework and CMS with it ( http://werc.cat-v.org ), and the more I used it, the more I loved it.
I found it to be extremely well crafted, with every feature fitting beautifully with the rest, it misses many fancy things people expect, but once you know your way around what it has, you can do almost anything.
Like awk, is one of those few languages that you can fully keep in your head, and that plus the power of calling other Unix/Plan 9 commands makes it very effective.
Both SIP and XMPP are way beyond "monstrous", hundreds of specs, and most implementations are not really interoperable beyond the very basics. (XMPP is still barely at the level irc reached almost 20 years ago, and that is after ten years of and ever growing and changing list of specs, which is actually the problem).
Also I'm pretty sure the amount of work in the compiler was only one of the considerations, and while I don't doubt your account of your conversation with rob, I doubt it was the main consideration in this design decision.
There are pros and cons for both models, but they are roughly equivalent and I never missed pattern matching in Go.
Go already surpasses the JVM in many areas, for example it has magnitude orders lower memory usage, and even in performance it already beats it in quite a few benchmarks, see:
http://shootout.alioth.debian.org/u64/benchmark.php?test=all...
And this is without the simple optimizations that are coming soon to Go, and even after that Go still will be able to improve performance greatly without too much effort.
http://shootout.alioth.debian.org/u64/benchmark.php?test=all...
Go is already faster than Java in half of the benchmarks, and uses dramatically less memory.
Of the benchmarks where Java wins, at least one (regexp-dna) is not related to the language at all and only to the regexp implementation, the one used there is a toy, Russ Cox already has written a much better high-performance regexp implementation based on re2 for Go which should replace the existing one very soon.
And Go's memory usage is already magnitude orders better than Java.
So yea, it is pretty horrible, like most of the "intellectual property" system (just look at patents..).
This is one of the reasons I found Google's Go so refreshing, it actually removed layers of abstraction bypassing even libc while providing a clean and portable interface to write my programs. Instead of making the stack of abstractions even higher as for example Java does, they cut it to the root.
OSX doesn't use anything like a micro-kernel, it runs Mach (which even microkernel fans ridicule, it is bigger than many monolithic kernels like the Plan 9 kernel), with a monolithic BSD-style kernel directly on top, when your microkernel has (being generous) two components, both huge, I don't think it is like what most people consider a microkernel at all.
It is also fun to remember that people also claimed Windows NT was a microkernel, and then they added the graphics system right into the kernel.
The key thing is to have simple, clean and well defined semantics, this is much harder when your VFS is polluted by stuff like symlinks and other weird kinds of pseudofiles.
I know Al Viro has wanted to have proper union mounts in Linux for many years, but getting proper private namespaces was hard enough, and now nobody uses them, which is sad (but more the fault of the suid-centric userspace environment than of the kernel, if you have to be root to create a new namespace, it is rather pointless).
tl;dr: It is Apple's fault, OS X is buggy and so far there are no known good workarounds, if you know any I'm sure Russ would love to hear about it.