jastrachan | 5 Apr 18:35 2004

Re: high level language discussion

On 5 Apr 2004, at 17:08, robert kuzelj wrote:
>> I'm hoping it means we get a healthy debate about the language syntax 
>> - try and find as many wholes, ambiguities and rough edges and fix 
>> them - then end up with a water tight specification that we can all 
>> work from. The open source project should stay nimble & light and 
>> releasing often, allowing RAD and innovation, but we should be able 
>> to freeze the language syntax for a specific version number so that 
>> we all work from solid foundations.
> i would suggest that maybe the highlevel discussion starts anew
> on what groovy should be.
> it seems everbody on this list has slightly different view onto
> what groovy should be. and to be honest i dont think that the 
> definition
> on the homepage does really cut it - basically it says we're a bit like
> python, a bit like ruby and on top some smalltalk. ok thats a bit 
> unfair
> and i have to admit that it was at least responsible that i took a
> deeper look into the site.
> for me it was very important to have as close a syntax to java as
> possible. but due to the discussions mike brought us i had to realize
> at least two things
> a) some of the other features i request are simply not compatible
>    with this aim. i have to decide. so if its for me: forget about
>    java syntax if it gets in your way.
> b) language design is incredible hard. i new that before but only
>    now am grasping what extraordinary job guido van rossum did or
>    james gosling for that matter - even thou i am growing tired more
>    every day of my old spouse java and her inflexibility and her
>    incredible wordyness - but again i start to realize how well
>    belanced she is.
> so gain what should groovy be?
> A) a scripting language
> B) a java lang replacemt for large projects?
> C) terse
> D) explicit
> E) optional
> F) closure supporting
> G) statically typed
> H) dynamically typed
> I) both

All of the above? :)

The thing we really have to nail down is to ensure we have a 
non-ambiguous consistent language and that for all the 'optional' 
things, we clearly evaluate the costs & benefits and only use things if 
we absolutely think its worth it.

e.g. I'm warming to the idea of using an 'any' keyword to make field 
declarations not look wierd.

class Customer {
     any foo
     any bar
     String xyz

to indicate which fields are dynamically typed ('any') versus 
statically typed. Ditto on method declarations to indicate between 
void/Object/any return types etc.

Once the groovy-lang <at>  mail list is setup we should start the JCP 
process.  I was gonna start off by having a high level semantic model 
of what Groovy is & how it works & how it fits to Java so we all have a 
common model of what it is & what its trying to do - then start diving 
into specific issues of syntax & semantics in turn as we try to 
describe them. e.g. statements / terminators, class decls, 
fields/methods/properties, 'scripts', closures etc.