From: Arne Vajhøj on
On 14-12-2009 22:24, Roedy Green wrote:
> On Mon, 14 Dec 2009 10:46:31 GMT, Arved Sandstrom
> <dcest61(a)hotmail.com> wrote, quoted or indirectly quoted someone who
> said :
>> I'll probably write a new blog "Stupid New Language
>> Blogs are Considered Evil." :-)
>
> Java is not the final language. If you don't participate in
> discussions of what is successor should be like, you can't very well
> complain at the flaws of its successor. It is a bit like voting.

The equivalent of voting is to join the JCP/ANSI/ISO/ECMA/whatever
that actually controls the languages.

Writing at a blog is the equivalent of whining over the
politicians at the local bar.

Arne
From: Lew on
Arved Sandstrom wrote, quoted or indirectly quoted someone who said :
>>> I'll probably write a new blog
>>> "Stupid New Language Blogs are Considered Evil." :-)

Roedy Green wrote:
>> Java is not the final language. If you don't participate in

Nor was COBOL, but you can still make a good living as a COBOL programmer.

>> discussions of what is successor should be like, you can't very well
>> complain at the flaws of its successor. It is a bit like voting.

The least significant bit. :-)

Arne Vajhøj wrote:
> The equivalent of voting is to join the JCP/ANSI/ISO/ECMA/whatever
> that actually controls the languages.
>
> Writing at a blog is the equivalent of whining over the
> politicians at the local bar.

Anyway, Arved said "*Stupid* New Language Blogs are Considered Evil", not
"*Well-reasoned, Intelligent* Blogs ..."

To carry the analogy further, whining at the local bar, writing letters to
your Congressperson and local newspaper (can you tell I'm from the U.S., where
we get to do that sort of thing?) and blogging are things that influence
politicians (at least here in the U.S.). Some of those whiners become
politicians themselves, perhaps even President or Vice-President (as here),
even to the point of winning the Nobel Peace Prize. Similarly, intelligent
whiners with a good point that actually makes sense can influence the
development and popularity of computer languages like Java. In fact, it's
programmers who made Java popular in the first place.

As Arved cited in his post, and I shall paraphrase to more closely match the
1947 original from Sir Winston Churchill: "No one pretends that Java is
perfect or all-wise. Indeed, it has been said that Java is the worst form of
programming environment except all those other forms that have been tried from
time to time."

--
Lew
From: bugbear on
Arne Vajh�j wrote:
> On 14-12-2009 05:46, Arved Sandstrom wrote:
>> If I read one more blog about what a new language should have (*) where
>> the author can't wait to show how "in" he or she is by excoriating
>> checked exceptions I'll probably write a new blog "Stupid New Language
>> Blogs are Considered Evil." :-)
>>
>> Seriously, get over it already. The supposed anguish that checked
>> exceptions cause - namely, that you can't easily ignore them - is
>> exactly the point. I myself have never noticed that this is all that
>> much extra work. And what I *have* noticed - time and time again - is
>> that an OO language that has only unchecked exceptions leads in general
>> to poor error handling. But that's just a real-world observation: if it
>> happens to conflict with theory who am I to argue with blog
>> theoreticians?
>
> A pretty huge portion of blogs is written by mediocre persons that
> think it sounds "cool" to criticize something.

Agreed. There's normally very little proposals of "this would be better"
just lots of "this isn't good enough" for the self declared genius.

BugBear
From: Leif Roar Moldskred on
Arne Vajh�j <arne(a)vajhoej.dk> wrote:
>
> I don't like the idea of having throwchecked and throwunchecked. It
> could become very messy with the same exception being both.
>
> I seems quite fair to me that the type carry the information whether
> it is checked or not. If necessary just create two types.

*shrugs* I just don't see checked versus unchecked exceptions as different
_types_ but rather as different uses. UncheckedWidgetException and
CheckedWidgetException have the same semantic meaning and the same
intrinsic behaviour: they're just _thrown_ differently -- and that
difference is external and not part of their behaviour.

> I don't like the extends RuntimeException => unchecked either. @Checked
> and @Unchecked would be much nicer. But annotations did not exist back
> then. And now it is too late.

Hmm. Is it? It's too late to get checked-ness separated from the type
system, but not for @Checked and @Unchecked annotations. As long as this
property is implicitly inherited until overridden, all Sun would need
to not break existing code would be to mark Exception as @Checked and
RuntimeException as @Unchecked.

It wouldn't remove the problem that all (existing) runtime exceptions are
unchecked, but it would let us make unchecked exceptions that are not
runtime exceptions.

>> To prevent lazy programming, let us add the rule that a method also have
>> to declare all unchecked exceptions which are thrown _directly_ from
>> within that method (i.e. thrown by an explicit throw statement in the
>> method body.)
>
> Does not make sense to me.

The idea was to require the same amount of immediate effort (to add a
throws declaration) when throwing an unchecked exception as when throwing
a checked exception, so that lazy programmers don't use unchecked
exceptions just because it's easier there and then.

(Plus, I'd like to see more unchecked exceptions declared in the method
headers.)

It probably wouldn't be worth the implementation effort or the added
complexity to the specification, though.

>
> Does not make sense to me. The code could just as well be inside
> the method.

Sure -- but it's one pointless level of indentation removed. Which I'll admit
isn't a big deal, but then again the code can just as well be on the _outside_
of the method too.

> Test on type is an anti-OO thing.

Sure -- but tests on type are what the current catch statements
are all about too. They're just particularly awkward and limited
tests on type.

--
Leif Roar Moldskred
From: Andreas Leitgeb on
Arne Vajhøj <arne(a)vajhoej.dk> wrote:
>> Then, give us some way to handle more than one type of exception in the
>> same catch statement. "catch( FooException, BarException, WeirdException ex ) { }"
> That has been proposed before. I guess it is OK.

I don't quite get it, what would be the actual compiletime type of "ex"
in the (here empty) catch-block.

>> or, hell, why not re-use the switch syntax?
>> catch( IOException ex ) {
>> case FileNotFoundException: logFileNotFound( ); break;
>> [...]
>> } // end catch( )
> Test on type is an anti-OO thing.

I'm somewhat sure, that each of these types would specify an "upper bound"
in the same way that the catch-type itself does.

PS: I agreed to your comments on the not-quoted paragraphs.