Some GREAT replies to this thread. Really terrific posts.
I can’t believe some of the things Tim has posted. It’s like he’s in my head. I agree ALMOST 100% with the whole thing about craftsmanship and art versus engineering. In fact, I have long pontificated on the point that unlike ELECTRICAL engineering SOFTWARE “engineering” should be called “software arts”… it’s not engineering at all in the classic sense. Sure, there are “trade offs” but these are as much art as science.
Oh, there’ll always be a place for the art and craftsmanship. There is in ALL engineering.
Look at circuit board layout. Sure, you can auto-route most things and have a workable design. But even the high-end auto-routers benefit from hand-tweaking. Knowledge gained through experience. An appreciation for what makes a great looking – and working – board. Right down to the (what the HECK is the copper that’s put in otherwise bare areas of a board called… damn… “sacrificial material”… no, I’m not thinking of “ground plane”, duh!).
The fact of the matter is, when you don’t have to worry yourself with stupid little shit, you’ll be able to do more REAL engineering and even create better art if that is your want. Look at the bigger picture, optimize the overall process. Instead of worry about freakin’ reference counts on structures, whether “Length” is in WCHARs or bytes, and how to add entries to infinitely expanding arrays. I mean, seriously. WHO CARES? Let somebody write this junk once, and let us get on with using our talents to solve useful problems.
And already been done. Look at JNODE. I’m not saying it’s brilliant, but it’s entirely written in Java. Just shows you, it CAN be done.
…
Now, I’ve heard the argument that some folks have made – both here and in the responses I’ve received via email to my pontification in The NT Insider – that the DRIVER MODEL it more important than the language.
And, this is at least partially true. The driver model is of primary importance. If we could make writing drivers A FACTOR OF MAGNITUDE EASIER then this would make a great deal of sense.
How about if we could have a driver model that’s entirely single-threaded and non-reentrant. Imagine, coding an entire driver without having to worry about locking.
I remember arguing against the value of this model in the past (a well-known dev, now an architect, at Microsoft has periodically floated this idea for Windows from time to time). But I’ve changed my mind.
I say that would be grand. Glorious.
BRING ON THE FUTURE. Let’s USE some of the horsepower in mom and dad’s machine! As I type this (I just brought up task manager), I have 3 cores (of the 8 in my machine) ENTIRELY IDLE. Give me an operating system that makes driver writing easier, kernel mode coding less prone to errors, and USE those 3/8’ths of my machine!
Peter
OSR