Bio
Gavin King is a Distinguished Engineer at Red Hat. He is the creator of Hibernate, a popular object/relational persistence solution for Java, the Ceylon programming language, and the Seam Framework, an application framework for enterprise Java. He's contributed to the Java Community Process as JBoss and then Red Hat representative for the EJB and JPA specifications and as spec lead and author of the CDI specification.
Gavin now helps lead the Quarkus project, focusing on data access technologies and developer usability experience.
Tags
Authors
So the comment thread of my previous post got me thinking again about the do/while statement. Frankly, it's difficult to see why we really need this as a first-class construct in modern programming languages. Here's my list of reasons for saying that.
Today I tried to write (approximately) this code in Java:
I've been thinking about the problem of passing a Sequence of values to a sequenced parameter in Ceylon (a varargs
parameter in Java terminology). Consider:
I've just finished implementing support for self types and type families in the Ceylon type analyzer. I think this stuff is pretty cool, if ever so slightly esoteric.
One of the things most people are taught early in their scientific education is that extrapolation is unreliable. And yet it's always seemed to me that the tendency of the Human mind to extrapolate current trends to the unknown future is so reflexive that we barely notice ourselves or others doing it. A huge percentage of popular debate in many fields (politics, economics, culture, science) falls prey to this fallacy. The fallacy is especially visible right now in the totally debased discussion of the causes and effects of climate change. Few of the loud voices on either side of this discussion, no matter how many times they mention the word science
are actually doing anything remotely approaching a critical, sceptical, Popperian scientific method. It's the victory of Kuhn's description of science, but vulgarized to the level of cable news, and then repurposed for political ends. There's barely a word written on this topic that isn't dripping with confirmation bias. A plague on both your houses.
A number of people have asked if Ceylon will have tuples. Well, I suppose, why not? It's easy enough to write the following generalized algebraic datatype:
Today I came up with an awesome new way to do annotation constraints in Ceylon, essentially using the metamodel types (yes, I mean the metamodel types, not the actual metamodel type instances) as a kind of query language for program elements. The advantages of the new approach are:
A method reference like Float.times is represented in curried
form in Ceylon. I can write:
I just ran across a great usecase for existential types (like Java's wildcard types, which Ceylon doesn't and won't support). It's a little involved, and revolves around an advanced feature of Ceylon that other languages don't have: the typesafe metamodel. But let me see if I can get the idea across.