There was a story about it on Slashdot a few days ago; you can probably dig it up on the archives. Put shortly, British Columbia has apparently offered Microsoft some benefits if they were to move up there; of course, any such deal would be very beneficial to BC as well, at least in the short term.
However, I doubt it'll ever happen. Microsoft and the US coexist in some kind of weird-ass symbiosis; AFAICT, neither can survive without the other.
Besides, even if they did move up there, they'd have to keep an US subsidiary and would still be subject to US law. (Is there a corporate equivalent to extradiction, in case the court decides to really screw MS over?)
I think another interesting perspective is that of the great Robert X. Cringely, in the latest edition of the Pulpit. All is spelled out here.
Put simply, he believes that Microsoft lost the trial on purpose: in order to be illegal, a monopoly must be harmful to its consumers, and the DoJ failed to dig up enough evidence to that (such as the "Windows Certified" scam), choosing instead to focus on the damage done to other companies (particularly Netscape). So Microsoft is pretty damned sure it will get Judge Jackson's ruling overturned on the appeals court, all will be back to normal, and at best it'll take a few years for the DoJ to find a new strategy to take them down; in the meantime, Microsoft will be "innovating" a few billion dollars more out of the consumers' pockets.
That's all his opinion, of course. But it looks right on the money. And it does account for the incredible stupidity that the MS lawyers have shown in court...
I respect your position, but keep in mind that it's people who build bridges. Sure, better tools help build better bridges - and bad tools will not only make for worse bridges, they'll make some things utterly impossible. (Where would primates be today without opposable thumbs?)
And that's where my point comes in. The fact that some people managed to build so much great software, despite Unix and C... that is, IMAO, a great testimony to each programmer's, engineer's or researcher's intelligence, skill and resourcefulness. (Of course, those are still the minority; as you well know, most software written anywhere is not at all demonstrative of intelligence, skill or resourcefulness.)
But I digress. My point is, sure we've used Unix and C to do some great things. But instead of lauding them for it, more people should be acknowledging their inadequacy for many other purposes. For they themselves have really done nothing, but the people who used them. In short, they should be replaced, not praised.
considering UNIX has been known as DOS on steroids
Why? Just because both run a command-line interface as default instead of a GUI? That's like saying that insert random GNU/Linux distro is 'Windoze on steroids' because it ships with fvwm95 as the default window manager, or that Pike is 'C on steroids' because they have similar syntax. I.e., absurd and meaningless.
You must forgive me for my brevity and possible lack of clarity. I had written yet another one of my overlong rants, full of detail, examples and references, to explain in minute and excrutiating detail just why I claim that Unix and C have been detrimental.
But when I copied it into an editor to save it, it crashed.
Rationale (I figured it out as the UI was restarting): a crappy custom text-field widget that didn't bother to check for over-long lines before it passed them on to the text-drawing API, which resulted in an ugly buffer error.
If only I had set the "soft-break lines as they're typed" flag.
My God, low-level OSs suck.
Anyway, here's a summary of what I had written before:
On what basis are you assuming that Unix and C have been *detrimental* as a whole?
* The "worse is better" mentality.
* C has a sucky, nearly useless, type system.
* C is messy and unsafe (no preconditions, no way to prove correctness, poorly defined semantics). Consequently, Unix is also messy and unsafe.
* C++'s utter lack of real high-level features, although it's widely touted as a HLL.
* C Doesn't Play Well With Others.
* C imposes its own notion of 'text' and 'integers' on the rest of the world, and can't use higher-level constructs in IPC.
* C/C++ is completely static; classes aren't high-level objects. (Exemplified by CORBA.)
* C/C++ makes us stay in the Stone Age of programming. Specifically, on OS architecture, it forces a choice between the low-level paranoia of the "monolithic kernel" and the abstraction inversion of the "microkernel".
* "Worse is better" quickly leads to "if it works - however marginally - don't fix it". This hinders technical evolution. (Exemplified by the AtheOS polemic, X, XML, and the Web.)
And what is your suggested alternative?
Regarding OSs: none so far, although SPIN, Fox, SqueakNOS and Oberon show great promise.
Regarding languages: many. For application programming, a wide range, from Java to Prolog. For systems programming, less choices, but I've recently come across PreScheme, a statically typed dialect of Scheme that offers performance comparable to C's and most of Scheme's expressive power.
Conclusion: hopefully it'll eventually be possible to switch from static languages and low-level paranoid OSs to dynamic languages and high-level liberal OSs. We're not quite there yet, though.
Yes it is. The bastards are making a bundle out of it too. Ah, business in the Internet age: take a completely un-original idea that's been thoroughly researched and investigated for the past few decades, make it just a little bit less clever, slap a "Java(tm)" (or "XML", or "Web", or "Linux", or "e-", et cetera) on it, and get ready to make millions!:)
How many of you use ML, Prolog, Lisp or Scheme in your everyday life?
*raises hand*
I do, actually. And not just for AI either - heck, most of my AI work to date has been limited to glorified tree searching and some work with NLP.
And let it be said that I love it too. The completeness of Common Lisp... the elegance of Scheme... the power of OCaml. (BTW, Schelog provides most Prolog features as a Scheme extension. It's very useful.)
I will now force you through an extensive list of my past experiences with computers and Unix, dating back to the early 60's, but... hey, you started it!:)
Anyway, I myself had the privilege of working with the very first transistor-based computer to arrive here at Rio (an already-obsolete IBM complete with its card-reading sibling), and then with the first DEC minicomputer to arrive (a PDP-10, for which I personally ordered from MIT a copy of ITS on tape).
We didn't really know much about Unix here until around 1985-1986, when we were forced to switch to VAXen, and someone decided that, between VMS and BSD, we were better off with that stupid little OS.
Alas, no more ITS, and none of the fabled Lisp Machines ever arrived here (AFAIK, anyway); a few years later, we started adopting some Sun hardware too. And not once did the utter and complete imbecility of Unix's design, architecture and implementation cease to nag me whenever I logged into the system.
But enough of "my credentials are bigger than yours":) and back to the main point. As far as I'm concerned, Unix shouldn't ever have been born at all. I'm not sure that it ever was fit for some purpose, and if it was, it's no more so. Unix is already dead, and its decaying corpse is only still being lugged around thanks to the three decades of indoctrination, "worse is better" and "if it looks like it works, don't fix it" to which so many people were subjected. I remain convinced that, once the twin plagues of Unix and C are exterminated, the computer industry will flourish into a new Golden Age.
The one book you must read (well, actually it's a series) is Prof. Donald E. Knuth's The Art of Computer Programming. It's widely considered to be the seminal book on algorithms, software design, low-level computer architecture and concrete mathematics (*) in general. TAOCP is language-agnostic (high-level algorithms in English, low-level in assembly language for a fictional processor called MIX), which, IMAO, is a Good Thing: it frees you to work with the language which best suits you.
Apart from that, I'd say that the only way to learn to program well is - well, d'uh - by programming. Ditch C++; get acquainted with a high-level language environment - Squeak or DrScheme are good - where you can program, test and debug interactively. Start with small stuff - individual classes and functions - and then pick a project or two to put together, something which is useful but which doesn't require a lot of black magic and programming voodoo. Then release its sources on a site like like Sourceforge, so you'll learn from other people who may be more familiar with the subject than you.
So, good luck!
(*) I'm using the term "concrete mathematics" to refer to the field of research that most people call "computer science". Why? Because it's neither really a science, nor really about computers. If you have a better name for it, drop me a line.
Wow, you're really young, eh? I remember the days long before Windoze NT, in the 1980s, when Unix already ruled the Earth. It was never the "spunky newcomer" that people make it out to be. (And it's not the future either - Unix is dead, it just hasn't received proper notice yet.)
its called "techno" - though this is not exclusive, as Punk, and Classical are also "Geek" favorites.
Whoa. This kind of over-generalisation just screams "pigeon-holing" to me. Personally, I wouldn't listen to a techno album even if it were the last piece of music left on Kibo's sweet Earth. (I also intensely dislike punk - three-chord songs? "Music for the revolution"? Oh please.) OTOH, many of my "geek" friends disagree with my own musical choices, and I even know some who are pop addicts. That doesn't make any less human (or "geek"), either.
In any case, you left out progressive rock. Complex harmony and voicing ("On Reflection" by Gentle Giant), beautiful melodies ("Trip to the Fair" by Renaissance, "One for the Vine" by Genesis), off-beat rhythm ("Living in the Past" by Jethro Tull, "Subdivisions" by Rush) and peculiar tempo changes ("Thick as a Brick" by Jethro Tull), some of the best musicians and singers of this century (Rick Wakeman, Keith Emerson, Steve Hackett, Annie Haslam from Renaissance)... amazing, uncompromising and utterly magical.
Hackers is an excellent book, but of very limited scope: it deals only with the "original" hacker community at MIT (and later Stanford) in the 1960s, the hardware hackers at Northern California in the 1970s, and the game hackers up to 1984 (when the book was published). It makes very little mention of operating systems proper, discussing only MIT's ITS at length (it also mentions Lisp Machines in the epilogue, but doesn't talk about Symbolics' brilliant and innovative OS, Genera). More generally, it's a book written by a layman for laymen, and as such it doesn't get really deep about any of the technical topics which are of most interest to many of us.
My own suggestion, although not wholly fitting the OP's desires either, is a technical book which does discuss some history of OSs from a technical perspective: Prof Andrew Tanenbaum's Modern Operating Systems (I'm too lazy to go look up an URL), a time-honoured college-level textbook which focuses mostly on Unix and traditional OS designs, although more than half of it is about distributed systems.
Most people looking at the code won't see anything... You can't have thousands of people contributing and achieve a high standard.
That's a non sequitur if I ever saw one.
A 'high standard' is set by having each part of the program do exactly what it's supposed to do - nothing less, nothing more. This is not some ethereal concept - it can (and should) be verified mathematically or with equivalent methods such as 'design by contract'.
If more people did that - if programmers working in complex and 'mission-critical' (I hate the term, but I can't come up with anything better at the moment) systems would just admit that they aren't perfect and that they should use all tools at hand to get everything just right (as opposed to just working with bare-bones tools, which unfortunately seems to be a favourite of *nixers) - then more software projects would achieve truly high standards, whether said software were Free or proprietary, whether it were designed by 2 or 2000 people.
Because otherwise, it's just the same story from both sides - just as 'proprietary' doesn't necessarily mean 'high-quality', neither does 'open source'.
Then again, I guess I can't expect much from Mr Joy, after he made an ass out of himself by playing Prophet of the Apocalypse... Ah well.
Well, one thing I've found in my relentless climb up the academic ladder is that the higher you get, the less of a consensus there is about it. This is especially the case when everybody with whom you hang out has designed dozens of languages of his own (and implemented at least one... hopefully!:]). Nonetheless, everyone seems to consider at least one of [Lisp, Prolog, Haskell, Eiffel] to be a "good" language. (Inasmuch as, at any given moment, they're reinventing one of them to include a certain desired feature, that is.)
Of course, the prevailing mindset here is, "if it's widely used it can't be any good!", so this is a moot point:)
I know others have said it, but here it is again: diversify. By that, I don't just mean you should go and learn a bunch of similar languages (*cough*C++*cough*Java*cough*Eiffel*cough*). I mean broaden your horizons. Take some time to study things - languages, paradigms, ideas, fields - completely unrelated to your current field.
As for languages - well, ESR says in his page that every good programmer should at least get acquainted with Lisp, Perl, Python and C. I don't disagree (except perhaps WRT C). (If you've been taught Lisp/Scheme improperly and, as a result, now hate it, give it another try, using a more free-form approach, and in a good environment - DrScheme is good, and, besides the regular Windoze, MacOS and Unix releases, there's even a distribution uses OSKit to make it an actual FreeBSD-compatible stand-alone OS!)
Other languages I suggest: Haskell and ML (both functional languages with more "traditional" syntaxes than Lisp; Haskell is a pure functional language), Prolog (another excellent idea with a terrible reputation due to being mis-taught), Smalltalk and Self (both pure object languages; Smalltalk is pretty much the father of modern OO, and Self is its prototype-based - i.e., classless - descendant), APL (yes, APL... it's very remarkable!), and various assembly languages, most notably for the PowerPC and the Alpha.
As for paradigms... well, don't get too attached to them. As you get some experience with various languages, you'll find that paradigms are only "right" as long as they're useful. More specifically, you'll have developed your own sense of the Right Thing in programming, your own view of what programming should be like, and you'll see how the good ideas in each paradigm fit into that. (For example, Brian "water" Rice is doing some very fine work on Slate, a language which, somewhat like BETA, integrates objects, components and functions on a fundamental level.)
Also, never neglect the fundamentals. I'm talking about the theoretical foundations of computational mathematics (*): partial recursive functions, Turing Machines, etc. (Remember - don't be afraid of the math... the math is your friend.)
Finally (and in relation to the former paragraph), sit down at whatever library you find which has a copy of it, and study Knuth's Art of Computer Programming. Despite some pitfalls, it remains one of the fundamental texts in the field.
One last thing: go look at the long-standing Tunes project (here's an explanation for the less enlightened, given that the project's leader has a tendency to verbosity and obscurity when writing). Also interesting is its Languages Review page.
(*) I refuse to use the term "computer science". But that's the subject of another rant entirely...
So, although I bought a car, it still belongs to the manufacturer. Because they were the ones who created it, it's still up to them to decide what I'm allowed to do with it, or if I'm allowed to mess with its internals. In fact, if the owner of the car company is a fundamentalist Christian, it's perfectly right for them to forbid you to bring gay men into your car!
(set! sarcasm #f)
If you don't want to fix your car yourself, trusting the job instead to the manufacturer, that's your choice. It's nonetheless your car, and you get to do whatever the hell you want with it.
Proprietary software companies, however, license their software to us. We're paying for the right to use it. Legally, then, the above does apply - it remains their software.
That doesn't make it morally right, though. Say I'm well-versed in simulation software and an experienced programmer, and I find that my favourite simulation package has a horrendous bug in it, one which is easily repairable but will cost millions of dollars if not repaired. If the simulation software is proprietary, then I'm screwed - I have to pray to Kibo that the owners of said software are willing to fix it, although I could do it myself, for free, and save me - and them - a lot of trouble. (Note that car repair requires specialised equipment, but programming only requires a compiler and a few utilities.)
Even leaving aside the question of free distribution, which entices the most moral opposition in the Free Software Movement (it means that sharing with your neighbour is wrong, which I personally find despicable), there still seems to be a case against closed-source software, and it should be recognised that the companies which, out of necessity (of protecting their investment - their years' worth of hard work), keep their software' source closed, are in doing so effecting a lot of potential harm on other people - their own consumers, no less! - and thus shouldn't do so lightly. Furthermore, that still shouldn't mean that the software is theirs in anyway, any more than my BMW car is BMW's. (My BMW car? I wish!) Keeping sources closed should serve only the same purpose as patents were designed to serve: to promote the progress of sciences and useful arts.
Let's compare say a 40 year window of the Romantic period and see how it compares in richness and diversity to music of the last 40 years, from bebop to cool jazz to fusion to latin jazz to hip hop to metal, etc etc etc.
Evidently, quantitatively, there'll be a lot more music, and in general it'll be a lot more diverse. Well, d'uh. Considering that there are probably more musicians nowadays than there were people in 19th century Europe, that's only to be expected. But it's absurd to make a qualitative comparison between them and arrive at the same conclusion, as I've said in another message in this thread.
This is outright false. I have purchased several albums from small labels. I choose what I listen to.
Good for you. (How big a cut of CD sales are your bands getting? In my experience, small labels can be as evil as big ones.) However, I never said that no non-mainstream music is produced. But what gets played everywhere, what gets bought everywhere, what gets toured everywhere - saying that it's not decided by the big labels is just naive.
The record companies need to produce music that people want to listen to to stay in business.
... so they make people want to listen to it, precisely by making it mainstream and part of the coolness factor, and bombing the listening public with propaganda.
There is no "thought control" conspiracy here, the record companies try to produce music that people want to hear.
Then explain the Spice Girls.
As far as distributed payment systems go, copyright works better than anything else.
Have you tried everything else? Has it been proven somewhere else that all other systems don't work as well as copyright? Have I missed something?
Aside from the sarcasm and italics, where is your rebuttal? Do you really think that the average citizen of Vienna in 1800 had access to the quantity and range of music that even an average Wal-Mart customer has today?
Consider that the average Wal-Mart customer (note that I'm saying this never having visited a Wal-Mart, trusting only that the situation there is equivalent to that which one encounters in a Lojas Americanas store here in Rio de Janeiro) will only purchase the pre-fabricated, made-for-mass-marketing, custom-built-to-go-with-MTV music from at best three to eight "top o' the charts" different bands in each of the styles that most mainstream music seems to fall into nowadays - "boy bands/girl bands/pop-like dancey music in general" (*cough*Britney Spears*cough*Christina Aguilera*cough*Jennifer Lopez*cough*whoever MTV's decided you should watch now), "pop-country" (believe it or not, pop cowboy-clone duos - "duplas sertanejas" are actually popular here, pushing a sad mockery of the real regional Brazilian music and making millions from doing it), "pop-rap" (*cough*Puff Daddy*cough*), "pop-rock/pop-hardcore/pop-metal", perhaps others. Sure, there's some quantity: each of these starlets spews out - I mean releases - as many crappy albums a year as the label feels it can squeeze the money out from said customer. Add to that the huge number of "secondary acts", most crappy but some actually decent, and none of which get nearly as many buys as do the "top o' the charts" people - these guys only get record deals because they're very cheap to hold for the labels, and they're useful for a variety of purposes, must notably serving to increase the volume of sold albums and to promote the label's main stars - and you get HUGE volume.
However, amidst all of that volume, there's remarkably little musical production of quality comparable to that of even one of the least fine Mozart symphonies. There are some great names such as Keith Emerson and Rick Wakeman on prog rock, Keith Jarrett on jazz (I'm citing only piano keyboard players because that's the area with which I'm most familiar); that's only to be expected of, given that the number of musicians alive today is probably much larger than that the entire population of Europe by the end of the 18th century. (No, I don't have any statistics to back that up.) Unsurprisingly, those three are heavily influenced by music of earlier periods (particularly the Romantic, where the piano really flourished); try to find on Napster a recording of the Pathétique played by Wakeman. Anyway, the point is that even though there's a far larger quantity and volume of music available today, qualitatively we're still dwelling in the 1800s.
Hmmm, 'paying for music that one likes', that seems to be exactly what Metallica is asking for.
Um, no. First, they're not asking - they're demanding. With legal action. They're claiming to own every piece of music they've ever recorded on studio, and to have the inalienable right to determine on an individual basis who should be allowed to copy their music. It's paying for music that you like because it's being sold to you, not because there's a social contract in action between you and the musician, where you recognise that by paying him, you're helping him make more music you like. There's a huge difference.
We already have a pay-by-worth system, it's called the mass market. The difference between a consumer market and a patronage/commisioning system is that in a mass market, anyone who can scrape together $15 for a CD gets a vote, not just those who can afford to underwrite a band of their own.
How wonderfully idealistic. I thought this was already blatantly evident, but apparently I was wrong: it's not Average Joe who chooses what gets played/sold/toured, it's the record company. Thus the 'dictatorship' part of my post.
And as you yourself say in the next paragraph, practical and widespread micropayment technology might make it feasible for many bands to be "underwritten" by many people at once, each paying a trivial amount, and still make a decent amount of money out of it (at least enough to be complemented by touring if necessary), even without full control of the rights to redistribution of their music.
Sure, such a scheme would certainly mean the ruin of most absurdly well-paid, hugely-followed mega-bands that account for today's music market. But it's nothing short of necessary. This bubble is artificial, and it's only being kept to the detriment of the listeners. It's gotta be burst, and if it means that no artist will ever become a multimillionaire out of their music alone... well, I'm not going to be grieving.
So music from the Classical and Romantic periods is lacking in plurality, richness and diversity. Riiiiiiiight.
You complain that, under the proposed model, the "aristocracy" would determine what music we listen to. As we speak, that choice is made by the marketroids in the big RIAA labels, and, thanks to their control over the traditional means of music distribution, if you don't have a record deal with them you're nothing.
What the original poster proposes is no more than a pay-by-worth system: one pays to support music one like. Some have a lot more money than others; some are willing to pay much more than others. Either way, by eliminating the middleman, the control over what we listen is put back into the hands of the listeners; each individual in what is now the "music masses" will be forced to develop a (*gasp*) musical taste of their own - and to stand behind it, to put their money where their mouth is.
The way I see it, just about anything would be better than the current state of musical dictatorship.
Counterproof: Richard Stallman. You know, the guy who invented the Free Software Movement (that which you are so quick to relabel "open source")?
You don't perchance think he was, say, an Unix hacker, working on C compilers and integrated extensible text editors just for the heck of it, do you?
Nope. Stallman was a Lisp hacker - one of the best ever, one might say. He had a pivotal role in the Lisp Machine Wars. He was part of the Common Lisp specification group.
He started out, and still is, at the MIT's AI Lab. (Granted, he's not an employee of MIT anymore, but he's still there.) He was one of "Minsky's kids". He was working on the very field which you deride.
Face it. Back when Thompson & co. were still working on the proprietary operating system Multics (that is, before they moved on to the proprietary operating system Unix), the Lisp hackers at AI labs all over the world (notably at the MIT and Stanford) were already freely sharing software amongst themselves, and in doing so practicing what you now call "open source".
No amount of "open source hacking" could ever produce strong AI; it's now widely recognised that it takes much more than just programming and traditional "computer science" (*) in order to achieve that goal. (In his 1991 book Paradigms of Artificial Intelligence Programming, Norvig is careful to point out that most of what we today call "AI" isn't really about sentient machines, but about getting computers to solve problems previously thought to be restricted to humans; and that all the "AI" he covers just comes down to clever traditional Lisp algorithms, most notably glorified tree-searching.)
To claim that simple programming - the exact same thing as symbolic AI researchers have been doing for 40 years - will manage to achieve strong AI as originally envisioned, if only it is done "the open source way" (i.e., in a slightly more juvenile and amateurish fashion, with some extra commercial interests and a lot more buzzwords), is absurd. It's tantamount to saying that 100 thousand monkeys banging on typewriters will manage to put together the Brooklyn bridge any faster than 100 monkeys would.
Sure, the "open source paradigm" has the benefit of producing a lot of good software (amidst an ever-growing pile of pure crap). And yes, I am myself a proponent of Free Software, because I prize my freedoms as an user of software. But it's not in anyway a Godsend, a cornucopia of ready-to-go solutions. It's not qualitatively different from any other kind of software development. (Besides, guess who does most of the serious "open source development" these days? That's right: it's people in CS departments' and private corporations' software R&D labs. i.e., the exact same people who did most of the serious development before the "open source" craze.)
In short: dismissing the entire field of AI research because it's failed to meet its original goals, and then proposing that open source development by a bunch of miscellaneous hackers on the Internet will be able to do it, misses the entire point. It took the AI guys 40 years to get it, and you comfortably ignore it now in favour of your "open source" solution: strong AI is NOT a Simple Matter of Programming.
(*) Ask me about the term "computer science" someday, and you'll get to listen to an even bigger rant than this one.
Seriously, though, I agree with this. I'm a card-carrying transhuman, and I believe it's the Way To Go for mankind. However, we may not be there yet by 2035. At the least, this kind of self-evolution would take radically improved biotech so we could go the "organic" route. At the most, it'd take massive, cheap, complete nanotech and a deep understanding of all of biology. Now, as someone who's looking into a carreer in this field, I'm willing to be that it'll happen. But not without massive funding of some sort. So how do we get that?
Not much to say really, just an incoherent rant of sorts.:)
Good idea. Squeak is very good and it might fit very well into embedded systems. Why? Well, it's got a small and completely adjustable memory footprint (even on desktops, with the full desktop UI, it's smaller than a text editor - and no, I don't mean Emacs), it's fast (instead of running bytecode like MzScheme does, it does on-the-fly compilation into (supposedly) portable C code), it's comfortable for programming (there's nothing sweeter than game programming in Smalltalk! after a day or two, you'll want to rm g++), the kernel is native for those platforms which it supports (unlike MzScheme, whose kernel release is based on OSKit), and it's got the most flexible UI ever, based on the Morphic system from Self.
As you said, computer games differ from "usual" software. Games are entertainment; they're not mission-critical, they're not really "tools" to do "real work". They're more like movies and music than they are like "usual" software; like movies, many "big title" games are huge endeavours, which take a lot of work and cost a lot of money to get done - and much of that work is not on programming the game logic itself, but on things like sound effects and music, text, artwork, et cetera.
At the same time, a programmer outside the game industry wouldn't gain much from having the source code, specs and APIs to a game - he doesn't lose much from giving away his freedom to freely inspect and modify the code. Correct me if I'm wrong, but I feel that it's competition between game companies in the quest for speed and features which makes it necessary for most of them to keep their source code closed; that's why it was reasonable for iD Software to release the Doom source code, ages after the game's original release.
As Stallman himself said when he came to Rio, copyright remains necessary, at least in some weaker form, for certain kinds of immaterial goods, in order to help ensure the producers' income and thus at least enable them to recover the money they spent on the work. He also pointed out that this kind of copyright should be recognised as a social contract, not as a tacitly accepting the nature of these goods as "intellectual property".
Stallman used movies as an example of immaterial goods which still need to be covered under copyright law, but I think that the same applies to computer games, since they're not "utilitarian" goods (I think that's the term he used; evidently, IANAL), but entertainment goods.
Like it's happening to music right now with Napster/MP3s/etc, things may eventually come to a point where the public no longer finds it reasonable to trade away all their freedom to copy computer games (or full-length movies, for that matter) in order to keep the game industry alive and thus ensure their continued production. When this happens, the social contract implied by copyright law will need to be changed again. Even then, though, the user's freedom to inspect and modify a game's source code will remain unessential enough for most users that "closed source games" will remain a reasonable trade, and thus game companies will remain protected from unfair competition.
In short: I don't feel that proprietary computer games are a problem, even in a platform made up mostly of free software, and even in a world where games are traded freely amongst users on the Internet. That is, as long as the game companies keep in mind what copyright law is really about, and are willing to be reasonable. Luckily, game companies seem to be different from, say, the big music labels and big movie studios which make up the RIAA and the MPAA, respectively, so I think this may actually be feasible.
Yeah, that pretty much sums up what I had to say. Flame away!
When I was in school, the reference for "traditional" OS design was Prof. Andrew Tanenbaum's Modern Operating Systems. It discusses both stand-alone and network operating systems, and touches on everything from processor architecture to capabilities, and discusses many favourite algorithms for memory, process and disk space management. It also includes full-fledged descriptions of two operating systems designed and implemented by Tanenbaum and his horde of grad students: the toy Unix clone Minix, and the microkernel-based Amoeba (affectionately dubbed "the cutting edge in archaic OS design").
Of course, since then, a lot of superior and much more interesting ideas on the subject have shown up. By now, a widely agreed-upon goal in the community is to design and develop a reflective, fine-grained OS with a natural and flexible interface, including complete integration with a very high-level language. In particular, the Tunes project (led by my pal Faré) has set out to do precisely this; however, progress is slow to come, and at least half a dozen side projects for "Tunes--"-like systems have popped up, notably Brian Rice's Arrow and Slate, and Tom Novelli's Forth-based Retro. (All of these are buried somewhere in the Tunes server.)
Tunes' Review Subproject has also managed to accumulate a rather comprehensive list of existing, dead and future OSs, as well as critiques thereof; a previous poster has already posted the link.
There was a story about it on Slashdot a few days ago; you can probably dig it up on the archives. Put shortly, British Columbia has apparently offered Microsoft some benefits if they were to move up there; of course, any such deal would be very beneficial to BC as well, at least in the short term.
However, I doubt it'll ever happen. Microsoft and the US coexist in some kind of weird-ass symbiosis; AFAICT, neither can survive without the other.
Besides, even if they did move up there, they'd have to keep an US subsidiary and would still be subject to US law. (Is there a corporate equivalent to extradiction, in case the court decides to really screw MS over?)
I think another interesting perspective is that of the great Robert X. Cringely, in the latest edition of the Pulpit. All is spelled out here.
Put simply, he believes that Microsoft lost the trial on purpose: in order to be illegal, a monopoly must be harmful to its consumers, and the DoJ failed to dig up enough evidence to that (such as the "Windows Certified" scam), choosing instead to focus on the damage done to other companies (particularly Netscape). So Microsoft is pretty damned sure it will get Judge Jackson's ruling overturned on the appeals court, all will be back to normal, and at best it'll take a few years for the DoJ to find a new strategy to take them down; in the meantime, Microsoft will be "innovating" a few billion dollars more out of the consumers' pockets.
That's all his opinion, of course. But it looks right on the money. And it does account for the incredible stupidity that the MS lawyers have shown in court...
I respect your position, but keep in mind that it's people who build bridges. Sure, better tools help build better bridges - and bad tools will not only make for worse bridges, they'll make some things utterly impossible. (Where would primates be today without opposable thumbs?)
And that's where my point comes in. The fact that some people managed to build so much great software, despite Unix and C... that is, IMAO, a great testimony to each programmer's, engineer's or researcher's intelligence, skill and resourcefulness. (Of course, those are still the minority; as you well know, most software written anywhere is not at all demonstrative of intelligence, skill or resourcefulness.)
But I digress. My point is, sure we've used Unix and C to do some great things. But instead of lauding them for it, more people should be acknowledging their inadequacy for many other purposes. For they themselves have really done nothing, but the people who used them. In short, they should be replaced, not praised.
considering UNIX has been known as DOS on steroids
:)
Why? Just because both run a command-line interface as default instead of a GUI? That's like saying that insert random GNU/Linux distro is 'Windoze on steroids' because it ships with fvwm95 as the default window manager, or that Pike is 'C on steroids' because they have similar syntax. I.e., absurd and meaningless.
Sorry for the rant.
You must forgive me for my brevity and possible lack of clarity. I had written yet another one of my overlong rants, full of detail, examples and references, to explain in minute and excrutiating detail just why I claim that Unix and C have been detrimental.
But when I copied it into an editor to save it, it crashed.
Rationale (I figured it out as the UI was restarting): a crappy custom text-field widget that didn't bother to check for over-long lines before it passed them on to the text-drawing API, which resulted in an ugly buffer error.
If only I had set the "soft-break lines as they're typed" flag.
My God, low-level OSs suck.
Anyway, here's a summary of what I had written before:
On what basis are you assuming that Unix and C have been *detrimental* as a whole?
* The "worse is better" mentality.
* C has a sucky, nearly useless, type system.
* C is messy and unsafe (no preconditions, no way to prove correctness, poorly defined semantics). Consequently, Unix is also messy and unsafe.
* C++'s utter lack of real high-level features, although it's widely touted as a HLL.
* C Doesn't Play Well With Others.
* C imposes its own notion of 'text' and 'integers' on the rest of the world, and can't use higher-level constructs in IPC.
* C/C++ is completely static; classes aren't high-level objects. (Exemplified by CORBA.)
* C/C++ makes us stay in the Stone Age of programming. Specifically, on OS architecture, it forces a choice between the low-level paranoia of the "monolithic kernel" and the abstraction inversion of the "microkernel".
* "Worse is better" quickly leads to "if it works - however marginally - don't fix it". This hinders technical evolution. (Exemplified by the AtheOS polemic, X, XML, and the Web.)
And what is your suggested alternative?
Regarding OSs: none so far, although SPIN, Fox, SqueakNOS and Oberon show great promise.
Regarding languages: many. For application programming, a wide range, from Java to Prolog. For systems programming, less choices, but I've recently come across PreScheme, a statically typed dialect of Scheme that offers performance comparable to C's and most of Scheme's expressive power.
Conclusion: hopefully it'll eventually be possible to switch from static languages and low-level paranoid OSs to dynamic languages and high-level liberal OSs. We're not quite there yet, though.
Yes it is. The bastards are making a bundle out of it too. Ah, business in the Internet age: take a completely un-original idea that's been thoroughly researched and investigated for the past few decades, make it just a little bit less clever, slap a "Java(tm)" (or "XML", or "Web", or "Linux", or "e-", et cetera) on it, and get ready to make millions! :)
Ah well. I guess I'm just jealous.
How many of you use ML, Prolog, Lisp or Scheme in your everyday life?
*raises hand*
I do, actually. And not just for AI either - heck, most of my AI work to date has been limited to glorified tree searching and some work with NLP.
And let it be said that I love it too. The completeness of Common Lisp... the elegance of Scheme... the power of OCaml. (BTW, Schelog provides most Prolog features as a Scheme extension. It's very useful.)
I will now force you through an extensive list of my past experiences with computers and Unix, dating back to the early 60's, but... hey, you started it! :)
:) and back to the main point. As far as I'm concerned, Unix shouldn't ever have been born at all. I'm not sure that it ever was fit for some purpose, and if it was, it's no more so. Unix is already dead, and its decaying corpse is only still being lugged around thanks to the three decades of indoctrination, "worse is better" and "if it looks like it works, don't fix it" to which so many people were subjected. I remain convinced that, once the twin plagues of Unix and C are exterminated, the computer industry will flourish into a new Golden Age.
:)
Anyway, I myself had the privilege of working with the very first transistor-based computer to arrive here at Rio (an already-obsolete IBM complete with its card-reading sibling), and then with the first DEC minicomputer to arrive (a PDP-10, for which I personally ordered from MIT a copy of ITS on tape).
We didn't really know much about Unix here until around 1985-1986, when we were forced to switch to VAXen, and someone decided that, between VMS and BSD, we were better off with that stupid little OS.
Alas, no more ITS, and none of the fabled Lisp Machines ever arrived here (AFAIK, anyway); a few years later, we started adopting some Sun hardware too. And not once did the utter and complete imbecility of Unix's design, architecture and implementation cease to nag me whenever I logged into the system.
But enough of "my credentials are bigger than yours"
Thus my sig.
The one book you must read (well, actually it's a series) is Prof. Donald E. Knuth's The Art of Computer Programming. It's widely considered to be the seminal book on algorithms, software design, low-level computer architecture and concrete mathematics (*) in general. TAOCP is language-agnostic (high-level algorithms in English, low-level in assembly language for a fictional processor called MIX), which, IMAO, is a Good Thing: it frees you to work with the language which best suits you.
Apart from that, I'd say that the only way to learn to program well is - well, d'uh - by programming. Ditch C++; get acquainted with a high-level language environment - Squeak or DrScheme are good - where you can program, test and debug interactively. Start with small stuff - individual classes and functions - and then pick a project or two to put together, something which is useful but which doesn't require a lot of black magic and programming voodoo. Then release its sources on a site like like Sourceforge, so you'll learn from other people who may be more familiar with the subject than you.
So, good luck!
(*) I'm using the term "concrete mathematics" to refer to the field of research that most people call "computer science". Why? Because it's neither really a science, nor really about computers. If you have a better name for it, drop me a line.
Wow, you're really young, eh? I remember the days long before Windoze NT, in the 1980s, when Unix already ruled the Earth. It was never the "spunky newcomer" that people make it out to be. (And it's not the future either - Unix is dead, it just hasn't received proper notice yet.)
its called "techno" - though this is not exclusive, as Punk, and Classical are also "Geek" favorites.
Whoa. This kind of over-generalisation just screams "pigeon-holing" to me. Personally, I wouldn't listen to a techno album even if it were the last piece of music left on Kibo's sweet Earth. (I also intensely dislike punk - three-chord songs? "Music for the revolution"? Oh please.) OTOH, many of my "geek" friends disagree with my own musical choices, and I even know some who are pop addicts. That doesn't make any less human (or "geek"), either.
In any case, you left out progressive rock. Complex harmony and voicing ("On Reflection" by Gentle Giant), beautiful melodies ("Trip to the Fair" by Renaissance, "One for the Vine" by Genesis), off-beat rhythm ("Living in the Past" by Jethro Tull, "Subdivisions" by Rush) and peculiar tempo changes ("Thick as a Brick" by Jethro Tull), some of the best musicians and singers of this century (Rick Wakeman, Keith Emerson, Steve Hackett, Annie Haslam from Renaissance)... amazing, uncompromising and utterly magical.
We don't need no steenkin' techno.
Hackers is an excellent book, but of very limited scope: it deals only with the "original" hacker community at MIT (and later Stanford) in the 1960s, the hardware hackers at Northern California in the 1970s, and the game hackers up to 1984 (when the book was published). It makes very little mention of operating systems proper, discussing only MIT's ITS at length (it also mentions Lisp Machines in the epilogue, but doesn't talk about Symbolics' brilliant and innovative OS, Genera). More generally, it's a book written by a layman for laymen, and as such it doesn't get really deep about any of the technical topics which are of most interest to many of us.
My own suggestion, although not wholly fitting the OP's desires either, is a technical book which does discuss some history of OSs from a technical perspective: Prof Andrew Tanenbaum's Modern Operating Systems (I'm too lazy to go look up an URL), a time-honoured college-level textbook which focuses mostly on Unix and traditional OS designs, although more than half of it is about distributed systems.
Most people looking at the code won't see anything ... You can't have thousands of people contributing and achieve a high standard.
That's a non sequitur if I ever saw one.
A 'high standard' is set by having each part of the program do exactly what it's supposed to do - nothing less, nothing more. This is not some ethereal concept - it can (and should) be verified mathematically or with equivalent methods such as 'design by contract'.
If more people did that - if programmers working in complex and 'mission-critical' (I hate the term, but I can't come up with anything better at the moment) systems would just admit that they aren't perfect and that they should use all tools at hand to get everything just right (as opposed to just working with bare-bones tools, which unfortunately seems to be a favourite of *nixers) - then more software projects would achieve truly high standards, whether said software were Free or proprietary, whether it were designed by 2 or 2000 people.
Because otherwise, it's just the same story from both sides - just as 'proprietary' doesn't necessarily mean 'high-quality', neither does 'open source'.
Then again, I guess I can't expect much from Mr Joy, after he made an ass out of himself by playing Prophet of the Apocalypse... Ah well.
Well, one thing I've found in my relentless climb up the academic ladder is that the higher you get, the less of a consensus there is about it. This is especially the case when everybody with whom you hang out has designed dozens of languages of his own (and implemented at least one... hopefully! :]). Nonetheless, everyone seems to consider at least one of [Lisp, Prolog, Haskell, Eiffel] to be a "good" language. (Inasmuch as, at any given moment, they're reinventing one of them to include a certain desired feature, that is.)
:)
Of course, the prevailing mindset here is, "if it's widely used it can't be any good!", so this is a moot point
Perhaps he wants some music to go along with "it's" programming...
Perhaps he's just a frustrated luthier...
Perhaps he's working on dostuff() for the cello too... it would go well with Haskore...
Ah well.
(P.S.: Yes, the viola/voila mix-up also bugs me. It brings to mind the dirty little detective guy from Moonlighting - was it Stephen Rea?)
I know others have said it, but here it is again: diversify. By that, I don't just mean you should go and learn a bunch of similar languages (*cough*C++*cough*Java*cough*Eiffel*cough*). I mean broaden your horizons. Take some time to study things - languages, paradigms, ideas, fields - completely unrelated to your current field.
As for languages - well, ESR says in his page that every good programmer should at least get acquainted with Lisp, Perl, Python and C. I don't disagree (except perhaps WRT C). (If you've been taught Lisp/Scheme improperly and, as a result, now hate it, give it another try, using a more free-form approach, and in a good environment - DrScheme is good, and, besides the regular Windoze, MacOS and Unix releases, there's even a distribution uses OSKit to make it an actual FreeBSD-compatible stand-alone OS!)
Other languages I suggest: Haskell and ML (both functional languages with more "traditional" syntaxes than Lisp; Haskell is a pure functional language), Prolog (another excellent idea with a terrible reputation due to being mis-taught), Smalltalk and Self (both pure object languages; Smalltalk is pretty much the father of modern OO, and Self is its prototype-based - i.e., classless - descendant), APL (yes, APL... it's very remarkable!), and various assembly languages, most notably for the PowerPC and the Alpha.
As for paradigms... well, don't get too attached to them. As you get some experience with various languages, you'll find that paradigms are only "right" as long as they're useful. More specifically, you'll have developed your own sense of the Right Thing in programming, your own view of what programming should be like, and you'll see how the good ideas in each paradigm fit into that. (For example, Brian "water" Rice is doing some very fine work on Slate, a language which, somewhat like BETA, integrates objects, components and functions on a fundamental level.)
Also, never neglect the fundamentals. I'm talking about the theoretical foundations of computational mathematics (*): partial recursive functions, Turing Machines, etc. (Remember - don't be afraid of the math... the math is your friend.)
Finally (and in relation to the former paragraph), sit down at whatever library you find which has a copy of it, and study Knuth's Art of Computer Programming. Despite some pitfalls, it remains one of the fundamental texts in the field.
One last thing: go look at the long-standing Tunes project (here's an explanation for the less enlightened, given that the project's leader has a tendency to verbosity and obscurity when writing). Also interesting is its Languages Review page.
(*) I refuse to use the term "computer science". But that's the subject of another rant entirely...
So, although I bought a car, it still belongs to the manufacturer. Because they were the ones who created it, it's still up to them to decide what I'm allowed to do with it, or if I'm allowed to mess with its internals. In fact, if the owner of the car company is a fundamentalist Christian, it's perfectly right for them to forbid you to bring gay men into your car!
(set! sarcasm #f)
If you don't want to fix your car yourself, trusting the job instead to the manufacturer, that's your choice. It's nonetheless your car, and you get to do whatever the hell you want with it.
Proprietary software companies, however, license their software to us. We're paying for the right to use it. Legally, then, the above does apply - it remains their software.
That doesn't make it morally right, though. Say I'm well-versed in simulation software and an experienced programmer, and I find that my favourite simulation package has a horrendous bug in it, one which is easily repairable but will cost millions of dollars if not repaired. If the simulation software is proprietary, then I'm screwed - I have to pray to Kibo that the owners of said software are willing to fix it, although I could do it myself, for free, and save me - and them - a lot of trouble. (Note that car repair requires specialised equipment, but programming only requires a compiler and a few utilities.)
Even leaving aside the question of free distribution, which entices the most moral opposition in the Free Software Movement (it means that sharing with your neighbour is wrong, which I personally find despicable), there still seems to be a case against closed-source software, and it should be recognised that the companies which, out of necessity (of protecting their investment - their years' worth of hard work), keep their software' source closed, are in doing so effecting a lot of potential harm on other people - their own consumers, no less! - and thus shouldn't do so lightly. Furthermore, that still shouldn't mean that the software is theirs in anyway, any more than my BMW car is BMW's. (My BMW car? I wish!) Keeping sources closed should serve only the same purpose as patents were designed to serve: to promote the progress of sciences and useful arts.
Let's compare say a 40 year window of the Romantic period and see how it compares in richness and diversity to music of the last 40 years, from bebop to cool jazz to fusion to latin jazz to hip hop to metal, etc etc etc.
Evidently, quantitatively, there'll be a lot more music, and in general it'll be a lot more diverse. Well, d'uh. Considering that there are probably more musicians nowadays than there were people in 19th century Europe, that's only to be expected. But it's absurd to make a qualitative comparison between them and arrive at the same conclusion, as I've said in another message in this thread.
This is outright false. I have purchased several albums from small labels. I choose what I listen to.
Good for you. (How big a cut of CD sales are your bands getting? In my experience, small labels can be as evil as big ones.) However, I never said that no non-mainstream music is produced. But what gets played everywhere, what gets bought everywhere, what gets toured everywhere - saying that it's not decided by the big labels is just naive.
The record companies need to produce music that people want to listen to to stay in business.
... so they make people want to listen to it, precisely by making it mainstream and part of the coolness factor, and bombing the listening public with propaganda.
There is no "thought control" conspiracy here, the record companies try to produce music that people want to hear.
Then explain the Spice Girls.
As far as distributed payment systems go, copyright works better than anything else.
Have you tried everything else? Has it been proven somewhere else that all other systems don't work as well as copyright? Have I missed something?
Aside from the sarcasm and italics, where is your rebuttal? Do you really think that the average citizen of Vienna in 1800 had access to the quantity and range of music that even an average Wal-Mart customer has today?
Consider that the average Wal-Mart customer (note that I'm saying this never having visited a Wal-Mart, trusting only that the situation there is equivalent to that which one encounters in a Lojas Americanas store here in Rio de Janeiro) will only purchase the pre-fabricated, made-for-mass-marketing, custom-built-to-go-with-MTV music from at best three to eight "top o' the charts" different bands in each of the styles that most mainstream music seems to fall into nowadays - "boy bands/girl bands/pop-like dancey music in general" (*cough*Britney Spears*cough*Christina Aguilera*cough*Jennifer Lopez*cough*whoever MTV's decided you should watch now), "pop-country" (believe it or not, pop cowboy-clone duos - "duplas sertanejas" are actually popular here, pushing a sad mockery of the real regional Brazilian music and making millions from doing it), "pop-rap" (*cough*Puff Daddy*cough*), "pop-rock/pop-hardcore/pop-metal", perhaps others. Sure, there's some quantity: each of these starlets spews out - I mean releases - as many crappy albums a year as the label feels it can squeeze the money out from said customer. Add to that the huge number of "secondary acts", most crappy but some actually decent, and none of which get nearly as many buys as do the "top o' the charts" people - these guys only get record deals because they're very cheap to hold for the labels, and they're useful for a variety of purposes, must notably serving to increase the volume of sold albums and to promote the label's main stars - and you get HUGE volume.
However, amidst all of that volume, there's remarkably little musical production of quality comparable to that of even one of the least fine Mozart symphonies. There are some great names such as Keith Emerson and Rick Wakeman on prog rock, Keith Jarrett on jazz (I'm citing only piano keyboard players because that's the area with which I'm most familiar); that's only to be expected of, given that the number of musicians alive today is probably much larger than that the entire population of Europe by the end of the 18th century. (No, I don't have any statistics to back that up.) Unsurprisingly, those three are heavily influenced by music of earlier periods (particularly the Romantic, where the piano really flourished); try to find on Napster a recording of the Pathétique played by Wakeman. Anyway, the point is that even though there's a far larger quantity and volume of music available today, qualitatively we're still dwelling in the 1800s.
Hmmm, 'paying for music that one likes', that seems to be exactly what Metallica is asking for.
Um, no. First, they're not asking - they're demanding. With legal action. They're claiming to own every piece of music they've ever recorded on studio, and to have the inalienable right to determine on an individual basis who should be allowed to copy their music. It's paying for music that you like because it's being sold to you, not because there's a social contract in action between you and the musician, where you recognise that by paying him, you're helping him make more music you like. There's a huge difference.
We already have a pay-by-worth system, it's called the mass market. The difference between a consumer market and a patronage/commisioning system is that in a mass market, anyone who can scrape together $15 for a CD gets a vote, not just those who can afford to underwrite a band of their own.
How wonderfully idealistic. I thought this was already blatantly evident, but apparently I was wrong: it's not Average Joe who chooses what gets played/sold/toured, it's the record company. Thus the 'dictatorship' part of my post.
And as you yourself say in the next paragraph, practical and widespread micropayment technology might make it feasible for many bands to be "underwritten" by many people at once, each paying a trivial amount, and still make a decent amount of money out of it (at least enough to be complemented by touring if necessary), even without full control of the rights to redistribution of their music.
Sure, such a scheme would certainly mean the ruin of most absurdly well-paid, hugely-followed mega-bands that account for today's music market. But it's nothing short of necessary. This bubble is artificial, and it's only being kept to the detriment of the listeners. It's gotta be burst, and if it means that no artist will ever become a multimillionaire out of their music alone... well, I'm not going to be grieving.
So music from the Classical and Romantic periods is lacking in plurality, richness and diversity. Riiiiiiiight.
You complain that, under the proposed model, the "aristocracy" would determine what music we listen to. As we speak, that choice is made by the marketroids in the big RIAA labels, and, thanks to their control over the traditional means of music distribution, if you don't have a record deal with them you're nothing.
What the original poster proposes is no more than a pay-by-worth system: one pays to support music one like. Some have a lot more money than others; some are willing to pay much more than others. Either way, by eliminating the middleman, the control over what we listen is put back into the hands of the listeners; each individual in what is now the "music masses" will be forced to develop a (*gasp*) musical taste of their own - and to stand behind it, to put their money where their mouth is.
The way I see it, just about anything would be better than the current state of musical dictatorship.
Counterproof: Richard Stallman. You know, the guy who invented the Free Software Movement (that which you are so quick to relabel "open source")?
You don't perchance think he was, say, an Unix hacker, working on C compilers and integrated extensible text editors just for the heck of it, do you?
Nope. Stallman was a Lisp hacker - one of the best ever, one might say. He had a pivotal role in the Lisp Machine Wars. He was part of the Common Lisp specification group.
He started out, and still is, at the MIT's AI Lab. (Granted, he's not an employee of MIT anymore, but he's still there.) He was one of "Minsky's kids". He was working on the very field which you deride.
Face it. Back when Thompson & co. were still working on the proprietary operating system Multics (that is, before they moved on to the proprietary operating system Unix), the Lisp hackers at AI labs all over the world (notably at the MIT and Stanford) were already freely sharing software amongst themselves, and in doing so practicing what you now call "open source".
No amount of "open source hacking" could ever produce strong AI; it's now widely recognised that it takes much more than just programming and traditional "computer science" (*) in order to achieve that goal. (In his 1991 book Paradigms of Artificial Intelligence Programming, Norvig is careful to point out that most of what we today call "AI" isn't really about sentient machines, but about getting computers to solve problems previously thought to be restricted to humans; and that all the "AI" he covers just comes down to clever traditional Lisp algorithms, most notably glorified tree-searching.)
To claim that simple programming - the exact same thing as symbolic AI researchers have been doing for 40 years - will manage to achieve strong AI as originally envisioned, if only it is done "the open source way" (i.e., in a slightly more juvenile and amateurish fashion, with some extra commercial interests and a lot more buzzwords), is absurd. It's tantamount to saying that 100 thousand monkeys banging on typewriters will manage to put together the Brooklyn bridge any faster than 100 monkeys would.
Sure, the "open source paradigm" has the benefit of producing a lot of good software (amidst an ever-growing pile of pure crap). And yes, I am myself a proponent of Free Software, because I prize my freedoms as an user of software. But it's not in anyway a Godsend, a cornucopia of ready-to-go solutions. It's not qualitatively different from any other kind of software development. (Besides, guess who does most of the serious "open source development" these days? That's right: it's people in CS departments' and private corporations' software R&D labs. i.e., the exact same people who did most of the serious development before the "open source" craze.)
In short: dismissing the entire field of AI research because it's failed to meet its original goals, and then proposing that open source development by a bunch of miscellaneous hackers on the Internet will be able to do it, misses the entire point. It took the AI guys 40 years to get it, and you comfortably ignore it now in favour of your "open source" solution: strong AI is NOT a Simple Matter of Programming.
(*) Ask me about the term "computer science" someday, and you'll get to listen to an even bigger rant than this one.
I see someone's been reading Beyond Humanity...
:)
Seriously, though, I agree with this. I'm a card-carrying transhuman, and I believe it's the Way To Go for mankind. However, we may not be there yet by 2035. At the least, this kind of self-evolution would take radically improved biotech so we could go the "organic" route. At the most, it'd take massive, cheap, complete nanotech and a deep understanding of all of biology. Now, as someone who's looking into a carreer in this field, I'm willing to be that it'll happen. But not without massive funding of some sort. So how do we get that?
Not much to say really, just an incoherent rant of sorts.
Good idea. Squeak is very good and it might fit very well into embedded systems. Why? Well, it's got a small and completely adjustable memory footprint (even on desktops, with the full desktop UI, it's smaller than a text editor - and no, I don't mean Emacs), it's fast (instead of running bytecode like MzScheme does, it does on-the-fly compilation into (supposedly) portable C code), it's comfortable for programming (there's nothing sweeter than game programming in Smalltalk! after a day or two, you'll want to rm g++), the kernel is native for those platforms which it supports (unlike MzScheme, whose kernel release is based on OSKit), and it's got the most flexible UI ever, based on the Morphic system from Self.
:)
And again, it's cute
As you said, computer games differ from "usual" software. Games are entertainment; they're not mission-critical, they're not really "tools" to do "real work". They're more like movies and music than they are like "usual" software; like movies, many "big title" games are huge endeavours, which take a lot of work and cost a lot of money to get done - and much of that work is not on programming the game logic itself, but on things like sound effects and music, text, artwork, et cetera.
At the same time, a programmer outside the game industry wouldn't gain much from having the source code, specs and APIs to a game - he doesn't lose much from giving away his freedom to freely inspect and modify the code. Correct me if I'm wrong, but I feel that it's competition between game companies in the quest for speed and features which makes it necessary for most of them to keep their source code closed; that's why it was reasonable for iD Software to release the Doom source code, ages after the game's original release.
As Stallman himself said when he came to Rio, copyright remains necessary, at least in some weaker form, for certain kinds of immaterial goods, in order to help ensure the producers' income and thus at least enable them to recover the money they spent on the work. He also pointed out that this kind of copyright should be recognised as a social contract, not as a tacitly accepting the nature of these goods as "intellectual property".
Stallman used movies as an example of immaterial goods which still need to be covered under copyright law, but I think that the same applies to computer games, since they're not "utilitarian" goods (I think that's the term he used; evidently, IANAL), but entertainment goods.
Like it's happening to music right now with Napster/MP3s/etc, things may eventually come to a point where the public no longer finds it reasonable to trade away all their freedom to copy computer games (or full-length movies, for that matter) in order to keep the game industry alive and thus ensure their continued production. When this happens, the social contract implied by copyright law will need to be changed again. Even then, though, the user's freedom to inspect and modify a game's source code will remain unessential enough for most users that "closed source games" will remain a reasonable trade, and thus game companies will remain protected from unfair competition.
In short: I don't feel that proprietary computer games are a problem, even in a platform made up mostly of free software, and even in a world where games are traded freely amongst users on the Internet. That is, as long as the game companies keep in mind what copyright law is really about, and are willing to be reasonable. Luckily, game companies seem to be different from, say, the big music labels and big movie studios which make up the RIAA and the MPAA, respectively, so I think this may actually be feasible.
Yeah, that pretty much sums up what I had to say. Flame away!
When I was in school, the reference for "traditional" OS design was Prof. Andrew Tanenbaum's Modern Operating Systems. It discusses both stand-alone and network operating systems, and touches on everything from processor architecture to capabilities, and discusses many favourite algorithms for memory, process and disk space management. It also includes full-fledged descriptions of two operating systems designed and implemented by Tanenbaum and his horde of grad students: the toy Unix clone Minix, and the microkernel-based Amoeba (affectionately dubbed "the cutting edge in archaic OS design").
Of course, since then, a lot of superior and much more interesting ideas on the subject have shown up. By now, a widely agreed-upon goal in the community is to design and develop a reflective, fine-grained OS with a natural and flexible interface, including complete integration with a very high-level language. In particular, the Tunes project (led by my pal Faré) has set out to do precisely this; however, progress is slow to come, and at least half a dozen side projects for "Tunes--"-like systems have popped up, notably Brian Rice's Arrow and Slate, and Tom Novelli's Forth-based Retro. (All of these are buried somewhere in the Tunes server.)
Tunes' Review Subproject has also managed to accumulate a rather comprehensive list of existing, dead and future OSs, as well as critiques thereof; a previous poster has already posted the link.