Path: csiph.com!x330-a1.tempe.blueboxinc.net!usenet.pasdenom.info!news.albasani.net!.POSTED!not-for-mail From: Jan Burse Newsgroups: comp.lang.java.programmer Subject: Re: CICE and ARM --> Closure, how? Date: Sun, 09 Oct 2011 00:54:44 +0200 Organization: albasani.net Lines: 54 Message-ID: References: Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Trace: news.albasani.net FSxynLyEtAjw5qbDXaXKVe6HCLNbs91vDe5LfianslL63PYQ7r9HA9goM8/3fV0zp16scU7TRJjqf07diCVgBg== NNTP-Posting-Date: Sat, 8 Oct 2011 22:54:46 +0000 (UTC) Injection-Info: news.albasani.net; logging-data="aQUVeIMbSCOa0S/ELlKTP+t+Lf5L44tZsfulVdnU0i+YrkQTKFVQSDnqxW7wsFVqqmtK2sHTxcIYuTlH9iqs60ZrXOEAWN4n01m3ruFdDPw2bkqoNP1u1FY8bQrSYaWC"; mail-complaints-to="abuse@albasani.net" User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:7.0.1) Gecko/20110928 Firefox/7.0.1 SeaMonkey/2.4.1 In-Reply-To: Cancel-Lock: sha1:TCKH1QRN6hUWkB0xy6E7NRiqJak= Xref: x330-a1.tempe.blueboxinc.net comp.lang.java.programmer:8653 Thanks for the explanation. Joshua Cranmer schrieb: > On 10/7/2011 4:04 PM, Jan Burse wrote: >> 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. >