Tuesday, October 7, 2008

Threads, Multithreading. How about no threading model?

I'm scratching my head and wondering if I'm alone or is the world just a crazy place with lot's of sheep?

When Assembly was the normal mode of operation, threading didn't seem a problem. You simply had a stack and then pushed, poked, pulled and popped around until you reached the goal. Simple and elegant, it was great fun but any 11 year old has other thing's to do, such as BMX and fishing, equally as important as switching registers and bypassing primitive protection schemes on the Intel 8080.

Thankfully I'm no longer stuck with a 3Mhz processor and can now be a slob and get away with it. Thanks to Intel speeding up and complicating their processors, adding more cores, pushing threads from Erlang to Java and .Net, I can sit back and write sloppy, insecure and half brain code, performs well enough and get away with it. Cheers? Not really...

Anyone who really knows anything about anything will usually not say very much. Today I've stumbled across a man who inspired me by the fact that he has spoken out and against the grain with much my approval - Louis Savain and his Rebel Science work.

Shared states, message queue, wait states.. I'm falling back to sleep and then pow, Ultrasparc T2 Plus pops up and shouts love me! I'm the future and I've arrived! Almost instantly I fall into a depression requiring several months of therapy to relieve the shock. Marc Tremblay took flawed logic, built it into a chip and corrupted the reduced instruction set with a complicated mess as bad as the x86 architecture for what purpose?

People who make hardware today, really need to get with the program and start to think. It's patently clear that outside of the box is just one of the marketing departments glossy catch phrases as they really don't seem to have a clue about what the box even should be, what is outside of it is just another chance to sell unfinished software and tools, then upgrade the 'experts' with fixes and updates.. wow.. brillo.

I've been a fan you could say of Sun, Microsoft and Apple. The Apple "Think Different" campaign was one of the best thing's I recall a company of any kind ever pursing. Boy how that turned sour when Apple dropped IBM and went all Core 2. I suspect that these guys might end up with red faces and jumping camp again when IBM releases 500 cores on a single die all running at 500Ghz but for the meantime it's Bahh Bahh.. were all out to pasture and were going to build a new O/S based on Unix because it's easier than trying to debug Windows and everyone will think it's bullet proof from Trojans and Virus's etc etc... Crickey!

Does anyone even give a damn as I don't and the people who are selling you crap, soon to be obsolete, which can't take a spare battery and is designed for you, as disposable as you the consumer are. Do these people even know what it is to care about anything other than the love of money or was that all too hard?

Shared resources are a joke and I'll tell you why. Nobody is going to share their money and that is the worlds primary resource. If your reading this now, then there is a stream of free information in a read state. Millions could potentially read this, incurring millions of read only threads but if I edit this... so what? Everyone keeps reading and nobody would even notice that it has changed, except their may be a second pause when I save.

Where is the locking? Where is the race condition? Why would this require millions of calculations, timed mutex callbacks, synchronous wait states? The answer is simple as it doesn't.

Man I love reliable software with a passion. It feels great to know that something is reliable and solidly doing it's job the way it should and will keep doing it forever, beyond my fragile existence even. It actually provided for me the first sense of reassurance I can recall outside of being nurtured by my mother. Now if I have to go back to an 8080 chip just to feel that again, then isn't that a shame?

I'm not a fan of Erlang or lightweight threads. I'm not a fan of Java and I'm not a fan of pointers, green threads, red threads or .Net threads. I'm not a fan of threading in PERL, in C or in any other way at all and I try to avoid them as much as possible.

If you can't avoid threading then you have to lock, unlock and get into some real boggling. The reason being is the processors which your programming language is running from is flawed and so is the language that your using to reach your goal. Einstein said something along the lines of our technology being "child like and primitive yet the most precious thing we have". He also stated that "Everything should be made as simple as possible but not simpler".

Firstly look at what needs to be in a read only state, what needs to modify and different ways of implementing modifiers. There are solutions that can be found without thrashing in the water screaming for help, think differently!

The only way that I can see of eliminating threads, is to eliminate the hardware and programming languages which all equally stink of monolithic backwash from the 50's. How about some real innovation Sun, Intel, Anyone?