Shortly before Linus wrote this article in 2002, I wrote an XML-RPC library in C that used reference counting. By the time I was done, I'd written 7,000+ lines of extremely paranoid C code, and probably eliminated all the memory leaks. The project cost my client ~$5K.
The standard Python xmlrpc library was less than 800 lines of code, and it was probably written in a day or two.
Was my library about 50 times faster? Sure, I could parse 1,500+ XML-RPC requests/second. Did anybody actually benfit from this speed? Probably not.
But the real problem is even bigger: Virtually every reference-counting codebase I've ever seen was full of bugs and memory leaks, especially in the error-handling code. I don't think more than 5% of programmers are disciplined enough to get it right.
If I'm paying for the code, I'll prefer GC almost every time. I value correctness and low costs, and only worry about performance when there's a clear business need.
Python's garbage collector should just garbage collect itself. Fuck reference counting and fuck you. Get the fuck out of here you and your useless shitty toy languages. I fucking hate you all Pythonistæ I hope you all die in a fire with Guido.
Name:
Anonymous2011-04-22 13:12
>>2
fuck off and die you motherfucking faggot, i fucking hate you and all your ancestors, i hope you die in a chemical fire
>>1
Fuck you, it's your own fault for using fine-grained reference counting for everything, where it's not necessary. You only need reference counting where you have ambiguous ownership of resources. Go get fucked by a horse.
Name:
Anonymous2011-04-22 18:22
This thread has gotten off to a nice neighborly start.
>>7
Only if you subscribe to that antiquated and provably false model.
I actually meant either the early ancestors of human civilizations (as far as our race is concerned), which is supposed to be a rather small in nunber, but if you go back far enough in time, you'll end up with a single proto-cell organism .
>>1
That's right, I use the right tool for the job. I don't optimise early, I get hard performance data which usually means writing naive but stable software. I understand the client requirements then decide whether I should invest my time in optimising busywork or not. If I decide to improve performance, I get that requirement included in the design spec before messing around with the code.
>>14
He was pointing out that hating someones ancestors as an insult is illogical, because at some point, their ancestors are also your ancestors as well.