Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    primarykey
    data
    text
    <p>Modulo some scope-disambiguation constructs, almost all of these methods follow from the actual definition of a lambda abstraction:</p> <pre><code>λx.E </code></pre> <p>To answer your questions in order:</p> <p>I don't think there are any particular things that make the proposals by the Java community better or worse than anything else. As I said, it follows from the mathematical definition, and therefore all faithful implementations are going to have almost exactly the same form.</p> <p>Anonymous first-class functions bolted onto imperative languages tend to end up as a feature that some programmers love and use frequently, and that others ignore completely - therefore it is probably a sensible choice to give it some syntax that will not confuse the kinds of people who choose to ignore the presence of this particular language feature. I think hiding the complexity and particulars of implementation is what they have attempted to do by using syntax that blends well with Java, but which has no real connotation for Java programmers.</p> <p>It's probably desirable for them to use some bits of syntax that are not going to complicate existing definitions, and so they are slightly constrained in the symbols they can choose to use as operators and such. Certainly Java's insistence on remaining backwards-compatible limits the language evolution slightly, but I don't think this is necessarily a bad thing. The PHP approach is at the other end of the spectrum (i.e. "hey guys, let's break everything every time there is a new point release!"). I don't think that Java's evolution is inherently limited except by some of the fundamental tenets of its design - e.g. adherence to OOP principles, VM-based.</p> <p>I think it's very difficult to make strong statements about language evolution from Java's perspective. It is in a reasonably unique position. For one, it's very, very popular, but it's relatively old. Microsoft had the benefit of at least 10 years worth of Java legacy before they decided to even start designing a language called "C#". The C programming language basically stopped evolving at all. C++ has had few significant changes that found any mainstream acceptance. Java has continued to evolve through a slow but consistent process - if anything I think it is better-equipped to keep on evolving than any other languages with similarly huge installed code bases.</p>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. VO
      singulars
      1. This table or related slice is empty.
    2. VO
      singulars
      1. This table or related slice is empty.
    3. VO
      singulars
      1. This table or related slice is empty.
    1. COC++0x added lambdas, redefined auto (type inference), r-value references, variadic template args and more. To me these are huge additions. I think C++ committe has changed the way it works and only change the language when it's impossible or virtually impossible to add a useful feature as a library. There has been very brave efforts to do lambdas, type inference, return value optimization as libraries (See boost) but in the end it won't work without language support. I think that is a sound approach.
      singulars
    2. CO@FuleSnabel, true, I was deliberately ignoring C++0x because I considered that it was a reasonably bold redesign that remains somewhat unproven as to whether it will be fully adopted or not. Your point is well-taken though, and I think it will be a credit to the C++ community if they manage to get these language features well-integrated, widely supported in implementatons and used by the community.
      singulars
    3. COI have to disagree in that 'C++ has had few significant changes that found any mainstream acceptance'. Most changes to the core language are widely used, and big part of the library changes are also being used. C++ evolves slowly, but safely. Very few changes to the standard have turned out to be considered regrets, with `std::vector<bool>` specialization being the one I can remember, followed by `auto_ptr` that has been found to be less than perfect but is still widely used and effective --just not with usable in containers.
      singulars
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload