Linux was supposed to be an alternative to windows, not a cheap bastardized rip off version that looks exactly like windows.
I have to disagree with you here. Linux is supposed to be whatever you want it to be! The source is available and open precisely so you can hack on it and turn it into whatever you want. The whole system is open and exposed to your tinkering for exactly the same reason.
This means that if you want something that looks exactly like Windows (but runs on a Unix core), then Linux is supposed to be an OS capable of giving you exactly that! It's the OS that you should be able to make into anything you like, and if that's what you like, then that's exactly what Linux should be able to deliver.
If you want Linux to be Windows, and you can't do it, then not only is Linux failing to be Windows, but Linux is also failing to be Linux!
Windows is an OS where someone else decides how you should do things and how they should look. Linux is not supposed to be like that. Anyone who therefore feels that Linux must be like Unix, or thinks Linux is "supposed to be about" emulating Unix rather than Windows or whatever other use poeple want to put it to, these people are people who still don't get it! Who are you to decide what programs are "being true" to the vision of Linux? People are diverse, we all have our own visions of what an OS should be. Linux should be able to embody all of them, except for the visions of those who think the point of Linux is to force others to work under their vision, such as some people who seem to think anyone using Linux should be forced to share the Unix vision.
I love Unix. I fell in love with it the first time I used it in 1987. I used Solaris on a daily basis for most of the 90's. I love Linux because it implements a Unix-like vision of how computers should work. But I'm not fool enough to believe everyone in the world shares my vision, or even that they should. I'm hopeful enough to believe Linux is capable of encompassing the visions of all these other users, as well as my own. If it cannot, then Linux truly will be a failure...
What, you mean like Yggdrasil? I don't think it has KDE at all. I suspect you'll find that any distribution that ships with KDE at all ships with KDE 1.1.2. (Does anyone know of a currently available distribution that uses an older version?)
That practice is illegal in some countries though... Implemented to stem the tide of frivolous lawsuits.
Heh! There are governments that attempt to reduce the number of lawsuits? That's an extremely alien concept to Americans. What would we do with all our time if we weren't kept busy suing one another?
But there used to be the pretense of unbiased reporting.
Err, I'm going to have to chalk this up to "The Good Old Days Syndrome", where people remember the past as being better than it actually was. I've been reading/. more or less forever, and I don't recall there ever being a pretense of unbiased reporting. It's just gone from being Rob's-slant-on-the-news to Rob-and-his-appointed-fellow-nerds slant on the news. If it had been a straight news site, I probably wouldn't read it, there are plenty of those out there. It is, and always has been, the slant that makes this site interesting...
If we pirate 100% of their sales out from under them, they won't be able to pay their lawyers.
Won't work. If lawyers think they can win a case, they're willing to work on it with no money up front. ("You can pay us by giving us 50% of the settlement.")
Flame me on the fact that double negatives are wrong, and I'll/prove/ I'm right.
Flame me for bad grammar, and you will be ignored.
How about we just flame you for being clueless? Ever notice the "News for Nerds" thing at the top of the page?
Understand who the articles here are targetted at, and you'll understand that there's nothing wrong with, nor ambiguous about, the use of double negatives.
Does the expression "a == !!a" evaluate to true or false (assuming "a" contains a canonical true or false for the language in question to begin with)? If you can't answer this question correctly, you're not one of the people this website is designed for, and are therefore not qualified to commment on what's appropriate. If you can answer this question correctly, you've just proven your previous post to be wrong.
No actual nerds or geeks were confused by the story. If a bunch of wannabees were, who cares?
Come on, saying that's all you need for a complete garbage collector is like saying this code is a complete garbage collector:
int gc(void) { mark(); sweep(); }
Yes, now that I look at it, you're right! Garbage collection is easy and requires only two lines of code!
Get real. Show me a GC that (a) deals with objects for varying type and size, not an array of CELLs, (b) preserves blocks of memory pointed to by nothing in the heap but by a pointer on some processes' stack, and (c) finds pointers on the heap while not knowing the internal structure of the objects allocated there.
If it doesn't satisfy those three requirements, let's not pretend it's anything other than a toy. Even at that, we're talking about fairly primative GC. Once you've solved those problems, make sure your GC is (a) fast, (b) thread-safe, and (c) reasonably real-time. Then we're talking about something that might be considered for use in a real program...
I've written several garbage collectors myself, and I can assure you they don't take a page or less of code. Not if you understand the real issues involved in writing real garbage collectors.
Umm, no. Under any given operating system, all programs allocate memory from the system using the exact same OS calls, regardless of what language they were written in.
If this functionality were moved to hardware, and the OS modified to support this, all languages would benefit. If the OS was not modified to support this, no languages would benefit, not even C.
I think you have some very fundamental misunderstandings about how memory allocation works. For the purposes we're discussing here, all non-stack based programming languages do it identically. Pascal, C, Ada, etc...
it sees as though it will make it so that programmers no longer have to code correctly,... i WANT to have to worry about maloc() calls etc.
Sometimes, the only correct way to make a free() call is to not make it. You don't know and have no way of knowing if you've got the last active reference to the block of memory or not. In such cases, using anything other than garbage collection is not coding "correctly".
Please explain to me why I need 'objects' and 'templates' if I want to write a program that, say, converts JPEG to TIFF. I mean, hell, if you're writing some huge crappy Windows app, maybe you need it. But if you're being sensible and writing a set of small, clean programs that interact well with each other, why do you need all this object shit?
You don't. Just like you don't need a compiler to write computer programs -- entering raw hex into a file works just fine if you're good enough at hand assembling your own code and understand the executable file format. But just because you don't need something doesn't mean it's not useful to have.
COMPUTERS ARE NOT OBJECT-ORIENTED; NEITHER SHOULD PROGRAMMING LANGUAGES BE.
Extending this argument to its logical conclusion, programming languages should not have structs, since computers only deal with information a register at a time. Why create this completely unnecessary higher level abstraction when it doesn't allow you to do anything you couldn't do before? Also, things like for and while loops ought to be replaced by labels and conditional gotos.
Perhaps because it makes life easier in many cases?
But in the name of progress, everyone wants of course to adopt a language that actually lets them do LESS
You mean like C? What's with these "functions" in C? C has this silly concept of a block of code that can ONLY be entered at this ONE point, so you can do LESS with it than if it allowed entry at any point like you can in assembly. What's with that? Why is C so limiting? Why can't I include in a function call a label within the function to start execution at?
Perhaps because it's dangerous and unnecessary?
The point being, C does all the same evil things you complain about C++ doing. It introduces unnecessary abstractions. It limits you, preventing you from doing things you "ought" to be able to do (if you think that because the CPU will let you do it, you "ought" to be able to do it). This is the price you pay for not coding in assembly language. Live with it, or don't, but it's silly to complain that the problem with such and such a language is that (to interpret your words down to their base meaning) it's not assembly language.
We don't want to overload the guest. If they guest wants to, he or she can answer more questions that the 10 sent to them. It's been done before. Bjarne obviously didn't want to. (Actually, from his comments, I get the impression he kind of did want to but really doesn't have the time.) Anyways, that's the guest's choice, no point blaming the/. crew...
It should be noted that these aren't problems specific to C++, but are really problems for strongly-typed languages. Once you've learned a weakly-typed language (like Lisp), programming in C++ or any strongly-typed language can be quite painful. The extra work you need to go through so it will accept doing things that find simple, easy expression in weakly-typed languages is agonizing.
Strong-typing gets you wonderful compiler performance. It should be used for anything where performance is essential. This does not negate the fact that it is hideously evil and should be avoided whenever possible, unless you like clunky, inelegant code...
I tend not to trust people who plug themselves and their products too much.
Funny, I always trust people more when their motivations are obvious, when they make no effort to hide them. Ted Kopple(sp?) made a similar point recently when asked about Sam Donaldson, who tends to be very open with what his own opinions are on some shows (e.g. This Week). The questioner seemed to think this made it harder to trust Sam's reporting on issues when you knew what his bias was. Ted pointed out that, like everyone else, Ted has his own biases. Are you better off trusting a new report by Ted, who keeps his biases hidden from view? Seems to me its easier to evaluate the story presented by Sam, since you know what his bias is and can take it into account, than it is to evaluate the story by Ted. By not airing his own views, Ted presents the illusion of being unbiased, but in answer to this questioner, his openly pointed out that this is a complete illusion, he does have his biases, same as any other reporter.
In short, it's a lot easier to trust someone when their motivations are plain, open, and blatant. Only a fool trusts people more when they know their motivations less...
(NB: Windows _does_ have MFC to abstract OS functionality, if you want it. From what I hear, it doesn't abstract that functionality very well, though...).
I have the dubious distinction of being an experienced coder for both MFC and for the bare Windows API sans MFC. Rather than saying MFC "doesn't abstract that functionality very well", it would be more accurate to say it "doesn't abstract that functionaily very much". MFC is a rather thin wrapper around the Windows API. Frankly, it doesn't really abstract away from it at all. It just adds some nice wrappers so you can use it using OO syntax.
All containers (such as Lists) are containers of Ojbects. You must cast those back to what they were, each time with the risk of a Class-mismatch (causing exceptions).
Actually, there's usually no risk at all of a Class-mismatch -- I know nothing has been put into the container other than Thingamabobs. What bothers me is, I know that what's coming out is a Thingamabob, and thus a run-time type check here is not necessary, but there's no way for me to tell the compiler that.
Not only is this ugly, you also loose all advantage of a strongly typed language.
You can avoid the ugliness by creating a specialized container (e.g. make a class ThingamabobContainer). This also means you don't need to typecast what comes out. Unfortunately, this doesn't really avoid the typecast, it just hides it (it occurs inside the code for ThingamabobContainer), and adds another level of crud into the code.
This would all look much prettier and be more elegant if Java had simply given in and been the weakly-typed language it should have been. Of course, this is the opinion of a warped Lisp fan...
Last month, I bought a clearance laptop (Dell LM P90, 16 MB RAM, 1 Gig HD, and 640*480 active matrix display) for $500 Canadian.... I don't know about these pda's or sub-laptops, but I think they must get a lot cheaper before they can compete with out-of-date computers.
Good for you. But I'm guessing your laptop has less than 6 hours of battery life. That makes it next to useless as far as I'm concerned. I'd say for $500, you were ripped off. On the other hand, this device looks to be worth about that...
I consider the GPL evil - it forever locks reusable code into a non-commercial model.
This is, of course, completely false. First of all, it relies on the false assumption that open source software is necessarily non-commerical, and secondly, it ignores the fact that if you want to use someone's code in a closed source project, you need only obtain a closed source license from them. The GPL in no way prevents the author from giving different licensing terms to whoever asks, so it most certainly does not "forever lock" the code into anything.
Please note that you have no right to access the binaries, source code or artwork ("Content") produced by QuakeLives or the content herein without specifically agreeing to this. Any other access is illegal. And being as the GPL only regulates HOW we distribute, it does not regulate WHO we distribute to, if you do not agree to this, QuakeLives does not give you permission to access the Content of this site, hence, you legally are not allowed access to these files and doing so is punishable by law.
I think Slade is overlooking something. He can place his code under any restrictions he wants, but he's focusing on your rights and ignoring the fact that by doing this, he looses his right to the Quake code, under section 4 & 5.
I have to disagree with you here. Linux is supposed to be whatever you want it to be! The source is available and open precisely so you can hack on it and turn it into whatever you want. The whole system is open and exposed to your tinkering for exactly the same reason.
This means that if you want something that looks exactly like Windows (but runs on a Unix core), then Linux is supposed to be an OS capable of giving you exactly that! It's the OS that you should be able to make into anything you like, and if that's what you like, then that's exactly what Linux should be able to deliver.
If you want Linux to be Windows, and you can't do it, then not only is Linux failing to be Windows, but Linux is also failing to be Linux!
Windows is an OS where someone else decides how you should do things and how they should look. Linux is not supposed to be like that. Anyone who therefore feels that Linux must be like Unix, or thinks Linux is "supposed to be about" emulating Unix rather than Windows or whatever other use poeple want to put it to, these people are people who still don't get it! Who are you to decide what programs are "being true" to the vision of Linux? People are diverse, we all have our own visions of what an OS should be. Linux should be able to embody all of them, except for the visions of those who think the point of Linux is to force others to work under their vision, such as some people who seem to think anyone using Linux should be forced to share the Unix vision.
I love Unix. I fell in love with it the first time I used it in 1987. I used Solaris on a daily basis for most of the 90's. I love Linux because it implements a Unix-like vision of how computers should work. But I'm not fool enough to believe everyone in the world shares my vision, or even that they should. I'm hopeful enough to believe Linux is capable of encompassing the visions of all these other users, as well as my own. If it cannot, then Linux truly will be a failure...
--
--
--
Heh! There are governments that attempt to reduce the number of lawsuits? That's an extremely alien concept to Americans. What would we do with all our time if we weren't kept busy suing one another?
--
Err, I'm going to have to chalk this up to "The Good Old Days Syndrome", where people remember the past as being better than it actually was. I've been reading /. more or less forever, and I don't recall there ever being a pretense of unbiased reporting. It's just gone from being Rob's-slant-on-the-news to Rob-and-his-appointed-fellow-nerds slant on the news. If it had been a straight news site, I probably wouldn't read it, there are plenty of those out there. It is, and always has been, the slant that makes this site interesting...
--
Won't work. If lawyers think they can win a case, they're willing to work on it with no money up front. ("You can pay us by giving us 50% of the settlement.")
--
Flame me for bad grammar, and you will be ignored.
How about we just flame you for being clueless? Ever notice the "News for Nerds" thing at the top of the page?
Understand who the articles here are targetted at, and you'll understand that there's nothing wrong with, nor ambiguous about, the use of double negatives.
Does the expression "a == !!a" evaluate to true or false (assuming "a" contains a canonical true or false for the language in question to begin with)? If you can't answer this question correctly, you're not one of the people this website is designed for, and are therefore not qualified to commment on what's appropriate. If you can answer this question correctly, you've just proven your previous post to be wrong.
No actual nerds or geeks were confused by the story. If a bunch of wannabees were, who cares?
--
--
Come on, saying that's all you need for a complete garbage collector is like saying this code is a complete garbage collector:
int gc(void)
{
mark();
sweep();
}
Yes, now that I look at it, you're right! Garbage collection is easy and requires only two lines of code!
Get real. Show me a GC that (a) deals with objects for varying type and size, not an array of CELLs, (b) preserves blocks of memory pointed to by nothing in the heap but by a pointer on some processes' stack, and (c) finds pointers on the heap while not knowing the internal structure of the objects allocated there.
If it doesn't satisfy those three requirements, let's not pretend it's anything other than a toy. Even at that, we're talking about fairly primative GC. Once you've solved those problems, make sure your GC is (a) fast, (b) thread-safe, and (c) reasonably real-time. Then we're talking about something that might be considered for use in a real program...
I've written several garbage collectors myself, and I can assure you they don't take a page or less of code. Not if you understand the real issues involved in writing real garbage collectors.
--
If this functionality were moved to hardware, and the OS modified to support this, all languages would benefit. If the OS was not modified to support this, no languages would benefit, not even C.
I think you have some very fundamental misunderstandings about how memory allocation works. For the purposes we're discussing here, all non-stack based programming languages do it identically. Pascal, C, Ada, etc...
--
Sometimes, the only correct way to make a free() call is to not make it. You don't know and have no way of knowing if you've got the last active reference to the block of memory or not. In such cases, using anything other than garbage collection is not coding "correctly".
--
ARGH!!! I didn't, until you mentioned it! Now that's what I see every time I glance at it, and I hate Disney! Thanks a lot...
--
Especially when you remember the stock split, so if you bought 100 shares at $45 then, you'd be selling 200 shares at $68 now.
--
You don't. Just like you don't need a compiler to write computer programs -- entering raw hex into a file works just fine if you're good enough at hand assembling your own code and understand the executable file format. But just because you don't need something doesn't mean it's not useful to have.
COMPUTERS ARE NOT OBJECT-ORIENTED; NEITHER SHOULD PROGRAMMING LANGUAGES BE.
Extending this argument to its logical conclusion, programming languages should not have structs, since computers only deal with information a register at a time. Why create this completely unnecessary higher level abstraction when it doesn't allow you to do anything you couldn't do before? Also, things like for and while loops ought to be replaced by labels and conditional gotos.
Perhaps because it makes life easier in many cases?
But in the name of progress, everyone wants of course to adopt a language that actually lets them do LESS
You mean like C? What's with these "functions" in C? C has this silly concept of a block of code that can ONLY be entered at this ONE point, so you can do LESS with it than if it allowed entry at any point like you can in assembly. What's with that? Why is C so limiting? Why can't I include in a function call a label within the function to start execution at?
Perhaps because it's dangerous and unnecessary?
The point being, C does all the same evil things you complain about C++ doing. It introduces unnecessary abstractions. It limits you, preventing you from doing things you "ought" to be able to do (if you think that because the CPU will let you do it, you "ought" to be able to do it). This is the price you pay for not coding in assembly language. Live with it, or don't, but it's silly to complain that the problem with such and such a language is that (to interpret your words down to their base meaning) it's not assembly language.
--
--
Strong-typing gets you wonderful compiler performance. It should be used for anything where performance is essential. This does not negate the fact that it is hideously evil and should be avoided whenever possible, unless you like clunky, inelegant code...
--
Funny, I always trust people more when their motivations are obvious, when they make no effort to hide them. Ted Kopple(sp?) made a similar point recently when asked about Sam Donaldson, who tends to be very open with what his own opinions are on some shows (e.g. This Week). The questioner seemed to think this made it harder to trust Sam's reporting on issues when you knew what his bias was. Ted pointed out that, like everyone else, Ted has his own biases. Are you better off trusting a new report by Ted, who keeps his biases hidden from view? Seems to me its easier to evaluate the story presented by Sam, since you know what his bias is and can take it into account, than it is to evaluate the story by Ted. By not airing his own views, Ted presents the illusion of being unbiased, but in answer to this questioner, his openly pointed out that this is a complete illusion, he does have his biases, same as any other reporter.
In short, it's a lot easier to trust someone when their motivations are plain, open, and blatant. Only a fool trusts people more when they know their motivations less...
--
They say it's only a game...
...they lie!
--
I have the dubious distinction of being an experienced coder for both MFC and for the bare Windows API sans MFC. Rather than saying MFC "doesn't abstract that functionality very well", it would be more accurate to say it "doesn't abstract that functionaily very much". MFC is a rather thin wrapper around the Windows API. Frankly, it doesn't really abstract away from it at all. It just adds some nice wrappers so you can use it using OO syntax.
--
I hearby nominate this for Understatement of the Month!
--
Actually, there's usually no risk at all of a Class-mismatch -- I know nothing has been put into the container other than Thingamabobs. What bothers me is, I know that what's coming out is a Thingamabob, and thus a run-time type check here is not necessary, but there's no way for me to tell the compiler that.
Not only is this ugly, you also loose all advantage of a strongly typed language.
You can avoid the ugliness by creating a specialized container (e.g. make a class ThingamabobContainer). This also means you don't need to typecast what comes out. Unfortunately, this doesn't really avoid the typecast, it just hides it (it occurs inside the code for ThingamabobContainer), and adds another level of crud into the code.
This would all look much prettier and be more elegant if Java had simply given in and been the weakly-typed language it should have been. Of course, this is the opinion of a warped Lisp fan...
--
Good for you. But I'm guessing your laptop has less than 6 hours of battery life. That makes it next to useless as far as I'm concerned. I'd say for $500, you were ripped off. On the other hand, this device looks to be worth about that...
--
--
This is, of course, completely false. First of all, it relies on the false assumption that open source software is necessarily non-commerical, and secondly, it ignores the fact that if you want to use someone's code in a closed source project, you need only obtain a closed source license from them. The GPL in no way prevents the author from giving different licensing terms to whoever asks, so it most certainly does not "forever lock" the code into anything.
--
I think Slade is overlooking something. He can place his code under any restrictions he wants, but he's focusing on your rights and ignoring the fact that by doing this, he looses his right to the Quake code, under section 4 & 5.
--