Re: 7.0 wishlist?
- From: Harold Yarmouth <hyarmouth991476@xxxxxxxxxxx>
- Date: Fri, 07 Nov 2008 00:21:05 -0500
Joshua Cranmer wrote:
Harold Yarmouth wrote:Joshua Cranmer wrote:Harold Yarmouth wrote:Just as they make unchecked casts of generic collections at their own risk right now, and prefer to avoid doing so whenever possible.
The primary purpose of unchecked conversions is to facilitate migration to generics at disparate times.
No, unchecked conversions have other, commonplace uses. Frameworks/reflection, for starters, and there are other cases where they can't always be avoided because the compiler sometimes just isn't smart enough to prove everything the programmer can about what types can actually be occurring where.
Which is to facilitate migration of generics.
No, unchecked conversions have other, commonplace uses, as I just got through explaining. Now the final word on that matter has been said, so please don't keep arguing this point.
such unchecked conversions will be unnecessary with reified generics.
That's an argument for reifying generics, not an argument against allowing a programmer to cast to an interface with matching signatures.
Such casts would also be intended to typically be temporary, until whoever owned the target class got around to tacking on the appropriate "implements Foo".
My guess is that you're dead-set against operator overloading, probably at least partly for emotional reasons, and that is why you refuse to actually seriously read and consider proposals for them, and furthermore why you respond with mild but noticeable rudeness whenever the subject comes up here.
Hey! You guessed wrong!
Hey! You just insulted me again!
What is your beef with me, anyway?
I actually support operator overloading.
That claim is not consistent with a single other word you've written in this thread, and frankly inconsistent with a great many of those.
Your proposals are not adequately addressing these hurdles.
I didn't ask for your opinion of how "adequately" I do anything, and I'll thank you not to broadcast negative such opinions in any public place!
My proposals were quite adequate in every meaningful respect. They were not detailed specifications covering every single corner case -- I leave that sort of thing to higher geeks on the totem pole. If you'd have preferred to see a post full of detailed specification proposals, rather than broad use-case based proposals, well, too bad. This newsgroup is not solely for posting things you like. Its charter constrains the topic to Java programming and related topics, and no farther. Language change proposals seem on-topic enough to me.
An appropriate response by you would have been any of:
* None at all;
* "Please provide more details regarding suggestion X";
* "How do you plan to address possible problem Y?"
Yours was none of the above. Yours was full of things resembling:
* "That will never work!"
* "I don't like this."
* "Are you crazy?!"
* "Idiot. That's completely pointless, and won't work besides."
(Though the epithets were less explicit than above, those are basically accurate capsule summaries of the semantic content of the things you wrote.)
It looked like unreasoning negativity about the proposals (liberally sprinkled with strongly implied negative opinions of the proposer), not like either reasoned objections OR requests for further detail.
If you really intended the latter, perhaps you should work on your communication skills.
Sorry, but if you want to explain your reasoning, you'll have to actually explain your reasoning, not fob me off with some URL that's so long it won't work (with this news software at least) anyway.
I'm trying to save bandwidth and breath.
You can save more bandwidth and breath by not replying at all. In fact, by insulting me, dissing my proposals without explaining why, and generally pissing me off, you ended up *wasting* bandwidth and breath arguing with me for several further iterations. Your strategy backfired, sir!
Brevity at the expense of no longer communicating your true meaning (e.g. "Idiot, that will never work" taking the place of a detailed suggestion of problems that would need to be overcome, or a request for more detail from the proposer) is too much brevity.
[ Snip several paragraphs of information all resulting from an incorrect
No. Nothing about me is "incorrect" and you will desist from publicly insulting me now.
I thought we were making progress, but, sadly, I now see that you have no intention of engaging in civil discourse, and indeed most of your rudeness and your "miscommunications" have probably been quite deliberate.
(Why else would you have said all that you have about how it's been a miscommunication and you're sorry for coming off as ruder than you intended, then turn right around and engage in frank namecalling again?)
The contract for .plus should include commutativity. That leaves .times. There, one could specify that if times is noncommutative there be a .leftHandedTimes (or whatever name seems most suitable) that reverses the roles of LHS and RHS.
Operator overloading is (or at least should be) principally used for mathematical constructs.
Agreed.
There are several structures for which operations are not commutative.
And generally, these are regarded as "multiplication-like" rather than "addition-like". I DID take abstract algebra 101 in university you know.
Note that, in programming, even regular addition is not necessarily commutative.
a + b == b + a, right? No.
((byteArray[i++] & 0xff) << 8) + (byteArray[i++] & 0xff) is no
(byteArray[i++] & 0xff) + ((byteArray[i++] & 0xff).
That's cheating -- the expressions for a and b have side effects. My proposal can be amended to specify that temporaries be made and side effects occur in the "expected" order:
z = x + y; -> t = x; u = y; z = x.plus(y); or z = y.plus(x);
If x and y are expressions with side effects, this will do the right thing. (This is similar to how you'd make a C macro safer.)
I trusted the engineers at Sun to get little details like this right. Apparently you don't trust them as much, so unless I come up with a strategy to deal with such corner-cases, you assume the corner-cases will cause trouble in production code down the line.
I find your lack of faith disturbing.
(There's also the question of whether x + y == y + x with doubles and other fp types, even given roundoff, but the operation is conceptually commutative even if it's only approximately so in actual implementation, and code that relies on fp == equality is code that has a design flaw regardless.
* "Inverting" operations is often perilous. Dividing by a matrix is conceptually equivalent to multiplying by its (pseudo)inverse, but inversion is one of the worst things one can do where solving a matrix equation is preferred.
It is not the job of the language designer to enforce against every conceivable misuse of a language feature, least of all to do so by simply refusing to add any features at all for fear that they might otherwise be abused.
You're making assumptions which don't pan out.
You're making insulting insinuations about me in public which don't pan out.
Study some abstract algebra
This, I find to be exceptionally condescending and rude. How dare you insinuate publicly that I'm uneducated in an area where I am, in fact, educated!
Obviously in some cases inversion or division like operations just won't make sense, or won't always work depending on the operands. This is not a coherent argument against allowing operator overloading any more than it is a coherent argument against allowing a method to be named "dividedBy" that throws exceptions or is not present in Object and all of its subclasses.
I'm sorry. I assumed you had been a denizen of this newsgroup for a while
A quick Google Groups search should have disabused you of that notion.
The main thread on which I discussed this
is not relevant to the present discussion. As I have already indicated, I am not here to argue with canned replies. I am here to have civil and intelligent discussions with educated adult human beings.
It's repeating the same thing over and over again.
Yes, you are. Fortunately I have found some people here that are, like myself, educated adult human beings with a willingness to have civil and intelligent discussions instead of repeating the same thing over and over again.
Unfortunately, you do not appear to be one of these.
As I said, I do not wish to repeat myself when it adds nothing new.
Then either say something original or don't click "reply".
That would make me a politician.
Voted for Obama this time 'round. Next time, I don't know who I'll vote for (since I don't even know who'll be running), but I do know I won't be voting for you. (Sorry.)
No language exists in a vacuum; note that Java's generics feature
is roughly based on C++'s templates, at least in terms of syntax.
But this was not mandatory. It could have been done differently; it just didn't turn out to be.
Technically speaking, the United States /could/ declare war on China tomorrow. Probably won't, though. Practically speaking, it is difficult for Java to not have chosen C++ syntax for various reasons.
Well, as I said, there's not very many other plausible syntaxes in the specific case of generic parameter lists, save for variation in the choice of delimiters.
If either of the last two does not happen, the creation will end up being more verbose.
So, some things should happen before other things. This is the substance of your argument that none of them should happen at all?
As I see it, all three would have to happen for any one to be sufficiently valuable to warrant consideration for inclusion.
So, some things should happen at the same time as some other things. This is the substance of your argument that none of them should happen at all?
(What's the point of getting clean drinking water to that African village? They'll just slaughter each other in war or die of malnutrition or disease anyway. What's the point of peacemaking there? They'll just die of cholera from their contaminated water supply anyway. Etc. How fortunate for African villages that aid workers do not think as you apparently do!)
In my experience with languages such as C and C++
Your experience with "languages such as C and C++" is not relevant. We are discussing Java. Your experience with Java is thus the only thing along those lines that would be relevant.
You are discussing inclusion of a C/C++ feature.
I am discussing inclusion of a feature. What other languages might happen to have similar features is not germane.
"... our reactions to basic proposals before repeating the proposal without adding anything new to say."
So your objection is now that I was *unoriginal* in some way?
No, my objection is that you've added nothing to the debate.
In other words, your objection is that I was unoriginal.
OK, then.
Guilty as charged.
Now what are you going to do, lock me up along with about 6 billion other people? I'd like to see you try.
It's not that I don't like them, it's just that no one bothers to add anything new, so it's the same bloody stuff being repeated once every month or so.
If that's your opinion, then you should just ignore the subject whenever it comes up. Attacking everyone who wants to participate in such discussions, simply for doing so, is inappropriate behavior and even, I'd argue, an affront to the concept of free speech.
I'm trying to help you by letting you do something: add value to a currently valueless debate.
You are insulting me and engaging in unproductive discourse that generates more heat than light in an effort to *help* me?
You think that being rude to me somehow enables me to do something I otherwise didn't do?
I disagree. I think that all you've done is cloud the issue and clutter up this entire thread with your negativty, *impeding* any discussion you'd find valuable. The more time I have to spend defending myself against unpleasant and inaccurate public insinuations made about me, the less time I have to spend refining my proposals or discussing them intelligently and in detail with other civil, rational adults. The more such people are turned off from reading this entire thread because it looks more like a pissing match than a reasoned debate (no thanks to you) the fewer will engage in adding that "value" you apparently crave.
More generally, of the below three actions, precisely one can add value to a Usenet debate, and one tends to subtract it, while the remaining one has no effect. You get three guesses to determine which is which (and there are only six possible permutations). Time starts now:
* Add value yourself by posting a reasoned and intelligent response.
* Flame one of the other participants for not adding enough value for
your tastes.
* Lurk instead of posting anything to the thread at all.
Maybe if I can clue you in enough, I can finally give you the help
you need...
As long as you cling to the attitude that Harold Yarmouth is a poor uneducated idiot that has to be patronized and treated like a child until eventually he might some day be able to contribute something of value, instead of understanding that in fact Harold Yarmouth is an intelligent and educated man who already can contribute plenty of value (even if not all of it fits your *personal* definition of "of value"), then we can not have any productive or worthwhile discussion about Java and it would therefore be best for all concerned if you did not reply to any more of my posts in this newsgroup.
Insulting, patronizing, rude nonsense like what you wrote above can serve no constructive purpose here. All it might do is further inflame tempers and "shed more heat than light".
Also, see above. (You have two guesses left after, apparently, one wrong one, and half your time remains. Use it wisely!)
I would expect that someone should respect the right of the people to peacably assemble and discuss Java programming here. If some people here wish to have a civil, level-headed discussion of operator overloading, I see nothing in the newsgroup charter to forbid it, or to justify your hostility towards them for doing so.
Pedantically, we're not discussing Java programming. We're discussing Java features.
Java's features directly impact Java programming, and indeed are at the very heart of Java programming.
[ More aggravating paragraphs based on a faulty assumption ]
The only faulty assumptions that have been made here have been made by you. The only one being intentionally aggravating around here is you.
As I said, I don't hate operator overloading. I'd love for it to be included.
Every previous post of yours implied exactly the opposite.
You have forgotten one of the more important lessons for being a politician: stay on message, and say it clearly. You've apparently done neither. :-)
It's just that your proposal has flaws for which you have not found, nor (apparently) seek to find, fixes.
As stated originally, it lacked detail and glossed over some areas. I wouldn't precisely call that "has flaws". You may have made assumptions, filling in the blanks (incorrectly) and then concluding that it "has flaws". Heck, perhaps it actually does have flaws.
Merely accusing it of having flaws is not constructive, however.
Polishing and working out a very detailed all-i's-dotted-and-t's-crossed specification was a task I figured to leave to greater minds than mine.
Instead, all I seem to have gotten is apparently-unreasoning criticism from apparently-lesser ones -- though that appearance *may* be the result of a simple refusal to communicate clearly on the part of the critic in question.
.
- Follow-Ups:
- Re: 7.0 wishlist?
- From: Joshua Cranmer
- Re: 7.0 wishlist?
- References:
- Re: 7.0 wishlist?
- From: Harold Yarmouth
- Re: 7.0 wishlist?
- From: Joshua Cranmer
- Re: 7.0 wishlist?
- From: Harold Yarmouth
- Re: 7.0 wishlist?
- From: Joshua Cranmer
- Re: 7.0 wishlist?
- Prev by Date: Re: Possible bug in Calendar
- Next by Date: Re: 7.0 wishlist?
- Previous by thread: Re: 7.0 wishlist?
- Next by thread: Re: 7.0 wishlist?
- Index(es):