I think our principles actually agree here, if not our conclusions. Scala truly does epitomise the idea that "less is more", a fact that becomes ever-more obvious with repeated exposure to the language :)
Scala is surprisingly small, with many features actually being implemented via the standard library and not as part of the core language spec. This includes both "big" stuff, like actors, and "small" stuff, like automatic conversion of Ints to Strings Much of this is made possible by core language features that actually *are* part of the spec: first class functions, case classes, implicits, mixins, operator notation, etc. So it really, really doesn't have everything out of the box, or rather it has two boxes: the core spec and the standard libs. It's just that the extension points in the core spec are so good that standard lib stuff can be made to look like it's an internal part of the language. Better still, you can use the same techniques in your own code - just look at ScalaTest, scalaz or akka to see what's possible. The only point I will disagree on (in absence of a particular use case): For *truly* performance-critical code, should you be using a database at all? The need to serialize/de-serialize everything via a magnetic platter can be a serious bottleneck! On 25 August 2010 09:49, Fabrizio Giudici <[email protected]>wrote: > > -----BEGIN PGP SIGNED MESSAGE----- > Hash: SHA1 > > On 8/25/10 10:25 , Kevin Wright wrote: > > lombok hooks into the compiler, extending Java code to allow some > > code generation. So it's not unreasonable to consider Java+Lombok > > to be a distinct language from Java or even an extension/evolution > > of Java. > > > > Scala reuses Java syntax as much as possible, changing it where > > necessary to add functional constructs and type inference. So > > it's not unreasonable to consider Scala an extension/evolution of > > Java. > > > > So comparing Scala to JavaLombokLambdaJ (JLL) is emphatically > > *not* the same as comparing Scala to Java. > > This is pretty much philosophy :-) while I think we're discussing how > to practically do things. My point is that Java is a *simple* language > with a reasonable set of extension points to tailor it to people's > needs (and these extension points have been designed purportedly, i.e. > Lombok is not playing any "trick", it's just using a feature - > annotations and compiler extensions - that has been put there for that > purpose). This means that different people can extend Java in > different ways, if they want. Scala has got everything out-of-the-box: > right, that's why I'm saying that it's more *complex*. > > > > > > > However, if you do compare Scala to JLL, three things stand out: - > > JLL is driven by annotations, so it's not a seamless integration > > that looks like part of the language > > As I said, annotations are a natural part of the language. > > > - JLL does everything with reflection, adding a performance cost > > that could be critical in some domains > > Lombok doesn't use annotations, but code generation at compile time. > lambdaj is using some reflection and has some performance hit. It's to > be seen how strong it is, in any case, and we can't just decide > without a case study. I'd also argue that complex list filtering that > are performance-critical are probably best to be done in the database, > rather than in the language (e.g. I don't think it's advisable in a > common scenario to load 1,000,000 of persons in memory to pick those > younger than 18). This is just a counter-example, of course. > > > - You still don't have pattern matching, or type classes, or etc, > > etc... > > Yes. Maybe I don't need them? :-P Seriously, I've said multiple times > that Scala is more powerful. It's to be said if all that > extra-complexity is really needed. I'm still on the side "Less is More". > > - -- > Fabrizio Giudici - Java Architect, Project Manager > Tidalwave s.a.s. - "We make Java work. Everywhere." > java.net/blog/fabriziogiudici - www.tidalwave.it/people > [email protected] > -----BEGIN PGP SIGNATURE----- > Version: GnuPG/MacGPG2 v2.0.14 (Darwin) > Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/ > > iEYEARECAAYFAkx02RoACgkQeDweFqgUGxf4wACfTQ6jUiAUH/nb6Ieu4ccvDg+6 > AZsAn1uf0JzS9L7u5wpOb95WBSM7+Vrr > =j3kd > -----END PGP SIGNATURE----- > > -- Kevin Wright mail/google talk: [email protected] wave: [email protected] skype: kev.lee.wright twitter: @thecoda -- You received this message because you are subscribed to the Google Groups "The Java Posse" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/javaposse?hl=en.
