A revolutionary OS/Programming Idea
Tom Novelli
tom@tunes.org
Tue Oct 7 14:31:02 2003
John Newman wrote:
. . .
> Thanks! The whole reason I am posting here is because I like what TUNES
> is all about. And I find it to be a noble cause. Once I am a
> professional programmer (an inexolerable end-point that is already in
> motion), I plan to contribute extensively to an open source OS. It is one
> of the most noble open source projects I can think of. One of the things
> that I think TUNES prides itself in is empowering the user with the full
> power of their computer. Making the IDE and the OS one system is a step
> in that direction. It will also make the OS itself more evolvable,
> comporting with this 'reflexive' thing I keep hearing so much about. I
> know, this idea wont make a programmer out of a novice over night, but it
> brings down various barriers.
>
> I mean, think about it. The open source collaborative community would
> grow exponentially! Maybe, instead of just laboriously building software,
> we should build tools that make building software less laborious and less
> complicated to learn. In the end, there would be a lot less work to do
> for the founding programmers. Create an environment that builds itself.
John,
Don't set your hopes too high... I've been in TUNES for 5 years and what
have I learned? This project attracts visionaries (I guess that's why I'm
still marginally involved) but we each have our own vision.. we cannot agree
on anything except that "C sucks" etc. Actually, I disagree on that too :)
Obviously I don't speak for us all, but keep in mind, most of what you see
on the web site was written by naive young people who may not have realized
how much bullshit goes on in science.. it seems likely that TUNES is founded
on some flawed theories. Between that, and 10+ years of inaction, it's safe
to say that TUNES is going nowhere.
It's easy to get distracted by all the different languages. Don't. Take
Henry Pekarski's advice, "there is no perfect design." Pick a language and
get some practice. You should also learn Assembly just so you know how
computers *really* work.. it's not difficult, just tedious. C is basically
a shorthand for Assembly. C++ adds more features, mostly useless, but you
can pick and choose.. you might as well stick with it, as your mainstay.
You should probably learn something about LISP, and definitely FORTH.. it's
an awkward language but Chuck Moore (the inventor) has a good philosophy
about programming, which applies to any language. Leo Brodie wrote a good
book about it; there should be a copy on the net.
I think exponential growth is the PROBLEM with open-source collaboration.
Look at all the libraries and fancy applications out there.. ambitious
projects, so it's no wonder that most of them are slow, buggy, and
unfinished. And even well-written 3rd-party libraries are a curse.. you
know what I mean? A 1st-party is basically a standard part of the OS; a
2nd-party library is shared among several programs written by the same
developer; a 3rd-party library is written for its own sake, so it's
necessarily over-generalized and therefore bloated.. multiply that bloat by
the number of different versions and other libraries that do the same thing,
and you've got a can of worms. I'd rather see simple examples with no
frills to obfuscate the essentials. CPAN.org comes to mind, for Perl.. I
wonder if there's anything else like that.
Now this has got me thinking...
Anyone can understand programming. A=B+C, it's just an extension of
basic math. Many useful programs will fit on a single page. But, if we
decide to "protect" the user from programming, we have to add an interface
and account for every possibility... the code mushrooms to 10 or 20 pages
full of IFs ANDs and BUTs... where we used to have a simple constant, "C=5",
now we have a menu option and a configuration file or registry key. The
code is difficult for us "real programmers" to grasp, nevermind the users.
GUI held so much promise in the beginning... computer literacy could be
reduced to mouse-clicking skills, and computers could finally be sold to the
masses. Now that GUI is a commercial success, it's painfully clear that it
only made the easy things easier. Automation became extremely difficult,
especially when computer-illiterate people enter data in a disorganized
fashion; this defeats the purpose of computers! Don't get me wrong,
graphical interfaces have their uses (i.e., graphics), they're just not the
answer to everything.
TUNES is not the answer to everything, either. Some of these techniques
are occasionally useful, especially Metaprogramming and Garbage Collection.
But taken as a whole, this thing is going to be incredibly complicated, and
it won't do anything to help us deal with complexity. Abstraction just
covers up complexity.. I like to get to the root of the problem.
I've been playing the fiddle/violin for a few years, and it's led me to a
new vision for the future of computing. Instruments and notation, the
"hardware and software" of music, have not significantly changed for 2 or 3
centuries. During the renaissance, there was a trend toward complex
instruments that tried to combine the best features of lutes, fiddles and
harps.. but they were constantly going out of tune or breaking. Modern
violins, guitars, pianos, etc. are just about the simplest designs
possible.. all the "training wheels" are gone. Like music, programming
requires practice. Fancier systems don't make for better programmers.
We've only had computers for 60 years.. it may take a few centuries, but
simplicity will prevail.