Brian L. Stuart wrote:
define a particular part of the computing world.
Following
the car analogy, this is the part of the world that is
designing cars for the mainstream audience, e.g. SUVs.
Yes, but the car analogy isn't going to be perfect. :)
I can't say for sure about everyone else, but I
know that
I'd have a hard time staying intellectually engaged in
that part of the world: the "bread and butter programming"
a co-worker once called it. I think I'd go crazy if I
couldn't at least sometimes be a part of the world that
does ask, "what if the wheel were a sphere instead of
a torus?" As it is, the computing world has become so
bland and homogeneous that I have my doubts that I'd
get into this field if I was just starting my career.
Nothing wrong with that. If you want to be in the business of making
wheels, by all means. Reinvent away and build your own toolkit, and
stick to whatever standards you need to stick to (or invent your own).
If you're in the business of requiring wheels for a particular task, by
all means use pre-built wheels.
None of that is to say that there's anything wrong
with
the mainstream computing world or with programmers who
are good at the bread and butter programming. It's just
not for me, and there's nothing wrong with my computing
world either.
I hardly think building emulators is bread and butter programming. :-)
But, building a UI from scratch in Xlib is a completely different task
than building an emulator and making use of pre-build toolkits. There
is at least an order of magnitude worth of difference between rolling
your own from scratch and using a toolkit.
So which business are you in? Making emulators? Making tookits from
scratch, or both? If you're in both, hey, that's wonderful. But if
you're just interested in making emulators, then building an entire
toolkit seems a waste of time - sure there are reasons for it (you like
the challenge, or you want to reuse it elsewhere, etc.) but if you don't
meet those reasons, you're just wasting cycles better spent making the
core of the emulator better.
And there is a ton of stuff to do when rolling your own. You need
preferences, file pickers, dialog boxes, windows, keyboard interfaces,
etc. It's a huge undertaking. And in the end your application will be
locked into to a single platform (or sets of platforms), will look and
behave like nothing else (which annoys your users), and won't benefit
from future improvements in the host OS's.
example: Almost every
desktop these days has certain preference settings that users
can set as
to color, look and feel, etc.
To butcher Shakespeare a little: There is more in
the
computing world than is dreamt of in the PC philosophy.
Agreed. There's also using the right tool for the job too. Nothing
wrong with building your own tools, and for that matter, your own
screws. But if you go the route of making your own screws, they won't
fit anyone else's. What would you gain exactly over say a flat,
phillips, or torx? (I say screws because that's a problem Babbage had -
no shop built screws quite the same way, so he had to pay a lot and
spend a lot of time to get exactly the parts he needed.)
ObClassic: After all, it's playing with, studying,
and
learning from the inventive and unusual that attracts
a lot of us to classic computing. So this is a setting
where I'm a little surprised to hear "don't reinvent
the wheel."
It's more than that, the implication is don't reinvent the wheel unless
you have a specific justifiable need to do so. And who knows there are
those who might. But for 99.99% of things, it's just a waste of time.