CICE and ARM --> Closure, how?

J

Jan Burse

Dear All,

I am just reading on the Wiki page of Josh Bloch:

Bloch has proposed the extension of the Java
programming language with two features: Concise
Instance Creation Expressions (CICE) (coproposed
with Bob Lee and Doug Lea) and Automatic
Resource Management (ARM) blocks. The combination
of CICE and ARM formed one of the three early
proposals for adding support for closures to Java.

By ARM I understand the try-with-resource. Can somebody
explain me how this together with CICE is related to
closure? In a few sentences without looking much at
other proposals. I don't have any clue from the hip.

Bye
 
J

Joshua Cranmer

Dear All,

I am just reading on the Wiki page of Josh Bloch:

Bloch has proposed the extension of the Java
programming language with two features: Concise
Instance Creation Expressions (CICE) (coproposed
with Bob Lee and Doug Lea) and Automatic
Resource Management (ARM) blocks. The combination
of CICE and ARM formed one of the three early
proposals for adding support for closures to Java.

By ARM I understand the try-with-resource. Can somebody
explain me how this together with CICE is related to
closure? In a few sentences without looking much at
other proposals. I don't have any clue from the hip.

CICE+ARM was Bloch (and other)'s counterproposal to the other two main
closure proposals, BGGA (the acronym comes from the authors' names), and
FCM (First-Class Methods) (I think--I know a lot less about this than
the other two).

To call it a closures proposal is a slight misnomer, since it's more
like a "we don't want closures, but we can lighten up on necessary
syntax today." The ARM part is a response to BGGA's trumpeting of the
ability to do `withLock(lock) { }' via closures, by solving the
most-requested (and pretty much only requested) new control flow idiom,
which is the largest source of BGGA's complexity.

CICE, on the other hand, points out that Java already has limited closures:

new Thread(new Runnable() {
public void run() {
System.out.println("Look at me!");
}});

It proposed to "satisfy" demands for closures by reducing the syntax of
that expression to just:
new Thread(new Runnable() { System.out.println("Look at me!"); });

In other words, CICE+ARM boils down to the following things:
1. Reduce verbosity of anonymous inner classes (which are already a
light form of closures)
2. Add the automatic resource management idiom to reduce the desire for
creating custom control-flow graphs.

It really isn't adding anything new in the realm of closures, it is
merely about syntactic sugar to satisfy most common use cases.
 
J

Jan Burse

Thanks for the explanation.

Joshua said:
CICE+ARM was Bloch (and other)'s counterproposal to the other two main
closure proposals, BGGA (the acronym comes from the authors' names), and
FCM (First-Class Methods) (I think--I know a lot less about this than
the other two).

To call it a closures proposal is a slight misnomer, since it's more
like a "we don't want closures, but we can lighten up on necessary
syntax today." The ARM part is a response to BGGA's trumpeting of the
ability to do `withLock(lock) { }' via closures, by solving the
most-requested (and pretty much only requested) new control flow idiom,
which is the largest source of BGGA's complexity.

CICE, on the other hand, points out that Java already has limited closures:

new Thread(new Runnable() {
public void run() {
System.out.println("Look at me!");
}});

It proposed to "satisfy" demands for closures by reducing the syntax of
that expression to just:
new Thread(new Runnable() { System.out.println("Look at me!"); });

In other words, CICE+ARM boils down to the following things:
1. Reduce verbosity of anonymous inner classes (which are already a
light form of closures)
2. Add the automatic resource management idiom to reduce the desire for
creating custom control-flow graphs.

It really isn't adding anything new in the realm of closures, it is
merely about syntactic sugar to satisfy most common use cases.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,744
Messages
2,569,482
Members
44,901
Latest member
Noble71S45

Latest Threads

Top