I bet you can tell a language which has better - or maybe not as you think they should not be part. I totally disagree on that, I do not want to reinvent the wheel.
Libraries are great! I love boost, ruby-forge and all the rest. But *standard libraries* are problematic.
Java's standard library is huge. Consequentially, it has some poorly thought-out classes, methods and even frameworks (Vector, Thread::cancel() (or was it stop?), AWT). But because the libraries are *standard* libraries, they will live on forever. There is a name for that: CRUFT. Cruft is bad.
Much better to have libraries separate, and have programs depend on a library in a sensible way (which, in Java, is much harder than it should be because the standard class loader is more braindead than a school of shrimps).
And it's not just Java. C's (and C++) standard library sucks in major ways, too! For C, I think strncpy takes the crown as the most useless function in a standard library ever. For C++, I have always had a special hatred for std::vector<bool>.
I hope I have explained my motivations better now.
As an afternote: What should be in a standard library is stuff that often gets parsed between libraries: strings, vectors (ArrayList for you Javapeople due to an early blunder), n-tuples, perhaps threads and that sort of thing. That makes it possible for libraries to interact nicely without too much conversion.
Here is why I think parts of your list are unreasonable.
"No unnecessary overhead" and "sensible error messages": I'm not sure these are concrete enough to qualify as features. No language will probably ever satisfy everyone's opinion of "necessary overhead," or "sensible error messages." Some error messages are admittedly worse than others, but what may seem sensible to some will frustrate others. The same is true of language overhead.
By unnecessary overhead I meant that there should be no overhead which isn't required by the job at hand, unless explicitly requested. So,e.g, no mandatory array bounds check.
As for the sensible error message: To make it more precise: The error message should at least identify the offending token or construct uniquely, and should be able to have enough information that it doesn't take kilobytes of text to write out the error message. But yeah, I suppose that is not strictly quantifyable, I just feel this is a reel problem with C++ -- and the gcc implementation is just horrid (but work is underway to fix that, at least)
"No dependency on a virtual machine": as the performance of virtual machines begins to rival that of "bare iron" execution for high-level languages, the advantages of the one over the other diminish accordingly.
No, not at all. The virtual machine incurs several overheads, and only one of them is runtime. Virtual machines are in reality processors running on top of processors, compounding the many tasks including porting, debugging, memory management and so on. E.g, a Java program does not yield a meaningful core dump; it does not manage system memory properly and many excellent debugging tools are just MIA due to the virtual machine.
"everything an object" and reflection: this is nitpicking, but it seems that what you really want is some method of treating data objects uniformly and inspecting or coercing their type later on. As the authors of "Structure and Interpretation of Computer Programs" (http://mitpress.mit.edu/sicp/full-text/book/book.html) demonstrate, you can do this in LISP by treating everything as a list, a native type of that language, and providing the appropriate constructors, accessors, and predicates for working with lists that represent different types of data (in the book, they use integer, rational, real, and complex numbers as their type hierarchy).
That is fine, as long as this includes strings so that stuff like "asasas".to_upper() works or 2.next_in_sequence() works. I do not know LISP enough to know if this is possible.
(Off topic). I always liked the saying, "atheism is a religion the same way that not collecting stamps is a hobby". Also, people often interpret agnosticism to mean "I don't know whether a God exists", which is indecisive. But the real meaning of agnostic is "It is not possible to know for certain that God does or does not exist", and that's a decisive assertion.
Yeah, that's what I wanted to put in my quote. Unfortunately, the length limit is pretty strict:) So I had to go with just assuming people new the "modern" meaning of an agnostic=fence sitter, not the original agnostic=acknowledge that most questions are at the core indeterminable.
You forgot threads (and the memory model needed for that, see e.g. http://www.hpl.hp.com/personal/Hans_Boehm/c++mm/). Very difficult task to do well, that is why most languages to not even attempt.
Some others worth to consider are libraries (XML, etc.), documentation (Java has good, others have/are catching up), Javadoc and perhaps even support for things like UML, ctags, etc.
True about Memory model, granted. Libraries, definitely *not*. Libraries should exists independently of the language, so that they can be replaced if they suck (see Java for an example of how bad it can get). I don't regard this as *critical*, though, as library implementations are passable.
I'm sort of with that, except it means that you don't know what you can and can't do.
Actually, I would be amazed if there isn't such a clause in your laws in whatever country you live in already.
The police and judges can't actually determine how much attention you were paying to what, and the person who is actually the safety driver on the road could end up in court because the authorities can't tell. I think there's a lot to be said for the sharp steel spike from the steering wheel to the driver's chest...
That is the price we pay for "innocent until found guilty--- lots of people gets off the hook until they actually cause some damage. Or learns how to drive with whatever distraction the world offers.
As for the spike--- I doubt it would have much effect after a short while. I know what terrifies me into driving 30km/h in my neighborhood (the limit is 40): The thought of a kid jumping out behind a car or bush or something.
To the best of my knowledge, the legislation is fine. Perhaps parts needs to be enforced better, and maybe some adjustments are necessary, but overall, I think it is about as good as it gets until we get fully automated cars.
I really should write it down. I will forget some points. For each feature, I will list a language that actually implements this feature
Static typing, both duck and declared (Much like proposed in C++0x)
closures (like ruby, or C++0x). I'll even settle for just anonymous inline functions, but the C++0x standard shows how *easy* closures would be.
No "native types", everything an object, including nil, constants and whatever (much like ruby and lots of others)
Full range of memory techniques supported, including RAII, scoped, shared, weak, garbage collected. (Lots of examples for each point, but really none for them all)
Easy to parse grammar, so that the language is parsable with off-the-shelf parser (Java, ruby and many others). *Admittedly*, the parsers of today seems to be solving this problem even for perl and C++, so maybe it is not so important as it once was.
No dependency on a virtual machine, should be able to run on bare iron or not (c++)
No unneccessary overhead. Overhead introduced by features must only apply if the features are actually used (C++)
Full metaprogramming, including static reflection (e.g., the ability to enumerate over all members of a class. Sorry, I don't have an example for this one, but it does seem so *easy* to extend say C++ to do this.)
Sensible error messages (like NOT C++ currently and especially g++. "Expected primary-expression before;" is just not very helpful, and the template errors are much much worse. Much tied to the aforementioned grammar)
C interfaces must be easily callable (e.g., NOT like Java) and for preference, easy export of interfaces to at least C)
Full dynamic reflection, perhaps optionally (mostly for test)
But that is exactly the trouble. I know people who can and do text blind, with one hand. They could text while being only very slightly distracted. Then there are people who drive into stuff while looking at the landscape, or talking to someone on the other seat. And I know a lot of people who would not be distracted by your cute girl:) I see no other reasonable legislative route than "though shall not engage in overly distracting behavior while driving.", and letting the police & judges handle the rest.
I believe there's no way we can actually say whether there is or is not a god, but I feel there is none. People say that stance lacks conviction, but I feel I'm being more realistic on the matter.
That is how atheists typically puts it. You sir, are an atheist and an agnostic. Welcome to the crowd.
You might realize that that argument becomes rather silly if you substitute "god" with "invisible pink unicorn" or similar.
(I seem to have to hasten to add these days: Note that agnosticism as it was originally defined does not include or preclude atheism: indeed, most atheists are agnostics.)
Perhaps cyphercell prefers to stand apart from proscriptive, "I know best," dualistic, do-gooders, such as certain believers and atheists? You knowâ"people like you.
Dualism.. now there is a word that needs an antonym. Materialistic is the best I can do. Though, given the number of meanings of dualism that Wikipedia lists, perhaps it would be better to use another word.
David Hume, an early Anglo philosopher put it simply that the idea of cause-and-effect necessitates determinism, so free will (reacting to something according to your past experience) is actually determinism.
I am not claiming anything about free will, but do note that there are events without any apparent causes (vacuum particles, atomic decay at the very least). And it does look like there really is no cause, though I am certainly no expert.
Re:I'd fix bugs and contribute quality code
on
Firefox 3.5.1 Released
·
· Score: 4, Informative
Here, let me click on the top link for "firefox build instructions" in google: simple firefox build. Looks pretty standard to me. Tests, if there are any, are usually automated or findable by a similar exercise.
Actually, the linux blue screen of death is blinking of 2 (or is it three?) of the keyboard leds. Though support for blue screen of death is coming, by the name of kernel mode-settting. It is pretty rare, though.
Lockups I have seen, too, in both linux and windows. Lots of cases is hardware problems, but your problem sounds like a driver issue. Using proprietary drivers, perhaps?
The problem is, if the game is available for free, not too many people are going to pay for it. So unless the first person is willing to pay the full development cost for the game (say $40,000,000), the game doesn't get produced. (Kinda obvious, isn't it?)
My guess would be that we would see the rise of games-as-a-web-application. That is, the games would run on a server and all that would get copied (for free) would be the client. Recorded music would be promotional pieces and stage recordings only. Do bear in mind that the future is somewhat hard to predict, though.
But I think the grandparent is mistaken in believing the majority is against copyright. Rather, it is just like taxes: most people agree with taxes being good and necessary, but will happily avoid paying their *own* taxes. Such is human nature, I fear.
Meanwhile, you're transferring the gold certificates around, complete with fees for every transaction (straight to the vault owner, naturally) and he still has an impervious vault full of gold. If society breaks down--which gold buyers seem to expect--you really think he'll honor those scraps of paper? No, he'll be riding it out inside the vault.
I'm too paranoid to buy gold, I invested in seed corn. Too large to steal, too real to lose value.
And if all hell breaks loose, you could always malt the corn and brew enough beer to be drunk to old age. Perfect!
KDE is a highly integrated, cohesive environment, whereas GNOME mostly is a desktop, a file manager, a few applets and a bunch of assorted applications that happen to use gtk for drawing their ui stuff.
Gnome is also a project with decent "Human Interface Guidelines". Which KDE lacks. Badly.
I quit writing C/C++ code years ago because of the insane amount of micromanagement I was having to do. Your post has about convinced me to give Qt a chance, though. Thank you.
The thing about C++ is that it is easy to back yourself into a corner. E.g, if you write "delete" anywhere, you are most likely doing something very wrong. Get past this, and it is a quite powerful and effective language, though I would love to have some legacy stuff cleaned up --- like the default conversions.
Descent 3 and Freespace 1 + 2, part of the reason they bombed was because a large segment of Descent and other game players did not have 3D acceleration or could not afford it. This was lost on a lot of PC game developers and they ended up folding or going consoles (volition of freespace and freespace 2 fame comes to mind).
Nah, those games just sucked in a major way. Descent was interesting for 5 minutes what with the full 3D and so on, but ugly as sin and quite repetitive. Freespace tried to be Elite with a terrible story --- and that mix just wasn't very fun.
Besides, I do believe XBox360 and win32 uses the same freaking interface for 3D (directX), so 3D accel isn't even a distinguishing factor.
Nah, for my money, it is lack of sales that is killing the PC platform --- possibly due to rampant copying.
NumLock is like CapsLock - once pressed, it remains activated. My argument is that the numeric keypad should always be activated with no need to push any button at all.
That would make me sad. I never have that lock on. I can see the point of it if you're an accountant or frenchman, but personally I'd rather have the big pad of keys with sensible navigation (pgup/down/home/end) right there at the corners than an extra set of number keys. Instead of in another group.
Java has bad libraries???
I bet you can tell a language which has better - or maybe not as you think they should not be part. I totally disagree on that, I do not want to reinvent the wheel.
Libraries are great! I love boost, ruby-forge and all the rest. But *standard libraries* are problematic.
Java's standard library is huge. Consequentially, it has some poorly thought-out classes, methods and even frameworks (Vector, Thread::cancel() (or was it stop?), AWT). But because the libraries are *standard* libraries, they will live on forever. There is a name for that: CRUFT. Cruft is bad.
Much better to have libraries separate, and have programs depend on a library in a sensible way (which, in Java, is much harder than it should be because the standard class loader is more braindead than a school of shrimps).
And it's not just Java. C's (and C++) standard library sucks in major ways, too! For C, I think strncpy takes the crown as the most useless function in a standard library ever. For C++, I have always had a special hatred for std::vector<bool>.
I hope I have explained my motivations better now.
As an afternote: What should be in a standard library is stuff that often gets parsed between libraries: strings, vectors (ArrayList for you Javapeople due to an early blunder), n-tuples, perhaps threads and that sort of thing. That makes it possible for libraries to interact nicely without too much conversion.
...try Lua .... it covers *most* of these ....
It fails all the static ones. Lots and lots of script languages passing the other tests, e.g. ruby, python and I believe even ECMAscript.
Here is why I think parts of your list are unreasonable.
By unnecessary overhead I meant that there should be no overhead which isn't required by the job at hand, unless explicitly requested. So,e.g, no mandatory array bounds check.
As for the sensible error message: To make it more precise: The error message should at least identify the offending token or construct uniquely, and should be able to have enough information that it doesn't take kilobytes of text to write out the error message. But yeah, I suppose that is not strictly quantifyable, I just feel this is a reel problem with C++ -- and the gcc implementation is just horrid (but work is underway to fix that, at least)
"No dependency on a virtual machine": as the performance of virtual machines begins to rival that of "bare iron" execution for high-level languages, the advantages of the one over the other diminish accordingly.
No, not at all. The virtual machine incurs several overheads, and only one of them is runtime. Virtual machines are in reality processors running on top of processors, compounding the many tasks including porting, debugging, memory management and so on. E.g, a Java program does not yield a meaningful core dump; it does not manage system memory properly and many excellent debugging tools are just MIA due to the virtual machine.
"everything an object" and reflection: this is nitpicking, but it seems that what you really want is some method of treating data objects uniformly and inspecting or coercing their type later on. As the authors of "Structure and Interpretation of Computer Programs" (http://mitpress.mit.edu/sicp/full-text/book/book.html) demonstrate, you can do this in LISP by treating everything as a list, a native type of that language, and providing the appropriate constructors, accessors, and predicates for working with lists that represent different types of data (in the book, they use integer, rational, real, and complex numbers as their type hierarchy).
That is fine, as long as this includes strings so that stuff like "asasas".to_upper() works or 2.next_in_sequence() works. I do not know LISP enough to know if this is possible.
(Off topic). I always liked the saying, "atheism is a religion the same way that not collecting stamps is a hobby". Also, people often interpret agnosticism to mean "I don't know whether a God exists", which is indecisive. But the real meaning of agnostic is "It is not possible to know for certain that God does or does not exist", and that's a decisive assertion.
Yeah, that's what I wanted to put in my quote. Unfortunately, the length limit is pretty strict :) So I had to go with just assuming people new the "modern" meaning of an agnostic=fence sitter, not the original agnostic=acknowledge that most questions are at the core indeterminable.
Concepts was going to be the cure for that in C++. Now, alas, I am reading that concepts are not included in the next standard. A sad day indeed.
You forgot threads (and the memory model needed for that, see e.g. http://www.hpl.hp.com/personal/Hans_Boehm/c++mm/). Very difficult task to do well, that is why most languages to not even attempt.
Some others worth to consider are libraries (XML, etc.), documentation (Java has good, others have/are catching up), Javadoc and perhaps even support for things like UML, ctags, etc.
True about Memory model, granted. Libraries, definitely *not*. Libraries should exists independently of the language, so that they can be replaced if they suck (see Java for an example of how bad it can get). I don't regard this as *critical*, though, as library implementations are passable.
I'm sort of with that, except it means that you don't know what you can and can't do.
Actually, I would be amazed if there isn't such a clause in your laws in whatever country you live in already.
The police and judges can't actually determine how much attention you were paying to what, and the person who is actually the safety driver on the road could end up in court because the authorities can't tell. I think there's a lot to be said for the sharp steel spike from the steering wheel to the driver's chest...
That is the price we pay for "innocent until found guilty--- lots of people gets off the hook until they actually cause some damage. Or learns how to drive with whatever distraction the world offers.
As for the spike--- I doubt it would have much effect after a short while. I know what terrifies me into driving 30km/h in my neighborhood (the limit is 40): The thought of a kid jumping out behind a car or bush or something.
To the best of my knowledge, the legislation is fine. Perhaps parts needs to be enforced better, and maybe some adjustments are necessary, but overall, I think it is about as good as it gets until we get fully automated cars.
I really should write it down. I will forget some points. For each feature, I will list a language that actually implements this feature
I probably forgot a lot, but it's a start, no?
Isn't C and C++ open source now? Or at least as open source as Java is?
Indeed they are, as a quite a lot of other languages. I suppose they are debating which kid's language is best, really ;)
Not that I care, in my view, *all* languages fall short. And I don't even think my list is unreasonable!
But that is exactly the trouble. I know people who can and do text blind, with one hand. They could text while being only very slightly distracted. Then there are people who drive into stuff while looking at the landscape, or talking to someone on the other seat. And I know a lot of people who would not be distracted by your cute girl :) I see no other reasonable legislative route than "though shall not engage in overly distracting behavior while driving.", and letting the police & judges handle the rest.
I believe there's no way we can actually say whether there is or is not a god, but I feel there is none. People say that stance lacks conviction, but I feel I'm being more realistic on the matter.
That is how atheists typically puts it. You sir, are an atheist and an agnostic. Welcome to the crowd.
You might realize that that argument becomes rather silly if you substitute "god" with "invisible pink unicorn" or similar.
(I seem to have to hasten to add these days: Note that agnosticism as it was originally defined does not include or preclude atheism: indeed, most atheists are agnostics.)
Perhaps cyphercell prefers to stand apart from proscriptive, "I know best," dualistic, do-gooders, such as certain believers and atheists? You knowâ"people like you.
Dualism.. now there is a word that needs an antonym. Materialistic is the best I can do. Though, given the number of meanings of dualism that Wikipedia lists, perhaps it would be better to use another word.
David Hume, an early Anglo philosopher put it simply that the idea of cause-and-effect necessitates determinism, so free will (reacting to something according to your past experience) is actually determinism.
I am not claiming anything about free will, but do note that there are events without any apparent causes (vacuum particles, atomic decay at the very least). And it does look like there really is no cause, though I am certainly no expert.
What are six words you never, ever want to hear?
"I have a headache tonight, dear"
Here, let me click on the top link for "firefox build instructions" in google: simple firefox build. Looks pretty standard to me. Tests, if there are any, are usually automated or findable by a similar exercise.
Actually, the linux blue screen of death is blinking of 2 (or is it three?) of the keyboard leds. Though support for blue screen of death is coming, by the name of kernel mode-settting. It is pretty rare, though.
Lockups I have seen, too, in both linux and windows. Lots of cases is hardware problems, but your problem sounds like a driver issue. Using proprietary drivers, perhaps?
The problem is, if the game is available for free, not too many people are going to pay for it. So unless the first person is willing to pay the full development cost for the game (say $40,000,000), the game doesn't get produced. (Kinda obvious, isn't it?)
My guess would be that we would see the rise of games-as-a-web-application. That is, the games would run on a server and all that would get copied (for free) would be the client. Recorded music would be promotional pieces and stage recordings only. Do bear in mind that the future is somewhat hard to predict, though.
But I think the grandparent is mistaken in believing the majority is against copyright. Rather, it is just like taxes: most people agree with taxes being good and necessary, but will happily avoid paying their *own* taxes. Such is human nature, I fear.
Meanwhile, you're transferring the gold certificates around, complete with fees for every transaction (straight to the vault owner, naturally) and he still has an impervious vault full of gold. If society breaks down--which gold buyers seem to expect--you really think he'll honor those scraps of paper? No, he'll be riding it out inside the vault.
I'm too paranoid to buy gold, I invested in seed corn. Too large to steal, too real to lose value.
And if all hell breaks loose, you could always malt the corn and brew enough beer to be drunk to old age. Perfect!
No? Well, then i'll pass, thanks :)
What?
Firefox application dialog is exactly what you said it is, FIREFOX APPLICATION DIALOG, it is *not* the Gnome's application dialog... So blame Firefox.
On linux, they are GTK+ dialog boxes, which is not-exactly-but-almost the topic at hand.
KDE is a highly integrated, cohesive environment, whereas GNOME mostly is a desktop, a file manager, a few applets and a bunch of assorted applications that happen to use gtk for drawing their ui stuff.
Gnome is also a project with decent "Human Interface Guidelines". Which KDE lacks. Badly.
You mean like these??
I quit writing C/C++ code years ago because of the insane amount of micromanagement I was having to do. Your post has about convinced me to give Qt a chance, though. Thank you.
The thing about C++ is that it is easy to back yourself into a corner. E.g, if you write "delete" anywhere, you are most likely doing something very wrong. Get past this, and it is a quite powerful and effective language, though I would love to have some legacy stuff cleaned up --- like the default conversions.
Descent 3 and Freespace 1 + 2, part of the reason they bombed was because a large segment of Descent and other game players did not have 3D acceleration or could not afford it. This was lost on a lot of PC game developers and they ended up folding or going consoles (volition of freespace and freespace 2 fame comes to mind).
Nah, those games just sucked in a major way. Descent was interesting for 5 minutes what with the full 3D and so on, but ugly as sin and quite repetitive. Freespace tried to be Elite with a terrible story --- and that mix just wasn't very fun.
Besides, I do believe XBox360 and win32 uses the same freaking interface for 3D (directX), so 3D accel isn't even a distinguishing factor.
Nah, for my money, it is lack of sales that is killing the PC platform --- possibly due to rampant copying.
NumLock is like CapsLock - once pressed, it remains activated. My argument is that the numeric keypad should always be activated with no need to push any button at all.
That would make me sad. I never have that lock on. I can see the point of it if you're an accountant or frenchman, but personally I'd rather have the big pad of keys with sensible navigation (pgup/down/home/end) right there at the corners than an extra set of number keys. Instead of in another group.