> Moving it to the practical, I can boil it down to this: the current
> version of scalac will be hated fiercely by 'programming is a job, not
> a hobby' professionals, because it is of precious little help when you
> make the invariable mistake.

I wasn't referring to this sort of person at all (a type of person I
have not met for years, but thats probably due to the circles I am
in). Why must we use something that is suitable for these sorts of
people? I thought the promise of a MLVM is that producers/consumers of
features and libraries could use what they please (within reason).

(perhaps I posted this to the wrong topic).

On Dec 17, 10:14 pm, Reinier Zwitserloot <reini...@gmail.com> wrote:
> I don't think it's up to me to -prove- scala's problems here, as
> proving it would take a few man-weeks- of work. Call it personal
> experience + a strong personal conviction that if you were to try and
> prove it, you'd succeed:
>
> As Alan said, scala's lenience in syntax (example: allowing both a dot
> and a space), the ability to automatically rewire objects to fit the
> required type, a.k.a. extensive inferred casting (implicit def
> shenanigans), extensive inference for types.
>
> Note that haskell, for example, SPECIFICALLY chose to have absolutely
> ZERO inferred casting, not even a float to an int, because they
> believe that combining inferred types with inferred casting eventually
> leads to ambiguous code, or if it doesn't, to code which is only a few
> characters away from a completely different interpretation. I'm sure
> Odersky knows about haskell, so where's the paper to prove haskell is
> wrong? I'd think the onus is on scala to prove that its strategy is
> sound, especially considering that the limited resources we have right
> now, seem to indicate I'm right: The current version of scalac will
> indeed bite your head off when you typo out.
>
> Personally, when I was toying around with scala, I ran into quite a
> few very confusing errors. For about 3/4s of them, when I finally
> figured out what I did wrong, I grokked the error message. I
> understood what the compiler was thinking. But that didn't change the
> simple fact that the error message was no help then and would be no
> help later. I even realized that it would be really hard to rewrite
> the compiler so it would have realized that I was thinking along
> completely different lines.
>
> Such a compiler would need a hefty amount of A.I. and would need to
> have the ability to provide a cascade of error interpretations, where
> the compiler gives you a few different ASTs each with their own
> (probably completely different) errors in them, along with a button
> that reads: "None of these are close to what I was thinking about,
> please use your A.I. to go to some more depth to come up with even
> more outlandish interpretations".
>
> That sounds like an awesome tool, perhaps, but its quite a leap from
> how we work now. The principle of highlighting mistakes with red wavy
> underlines certainly needs quite some redesign before it would work
> with a language that is so complicated that the compiler is forced to
> give you multiple interpretations for most syntax errors.
>
> Many of these problems are due to scala's 'academic' nature: In
> attempting to prove how smooth the language can LOOK, in the hands of
> a professional, they've made their grammar too permissive. One is
> reminded of applescript, which looks fantastic (just like english),
> but is virtually unwritable for a programmer, because only very
> specifically structured 'english' sentences are actually understood by
> the parser.
>
> For example, what if a method had to be specific about which separator
> is allowed? You could still create DSLs in scala, you'd just have to
> be more specific about it. Because often code is adapted to function
> in different ways, some way to override the allowed separator in your
> own source file with some sort of tactical import statement might be
> warranted. Sure, this means any example showing off this feature would
> not be complete without a bunch of 'settings' lines, either in the
> source file that uses the separators, or the source file that contains
> the method you'll be using an alternative separator for. Looks bad in
> the example, but in practice works much better.
>
> What if scala would never cast automatically, and implicit def instead
> was a feature to inform the compiler about being more useful? What if
> using the 'wrong' type, but one where an implicit def is available,
> simply causes the compiler to emit: A 'Foo' doesn't work here. But a
> 'Bar' will, and I can convert a foo to a bar for you here, by calling
> convert(fooInstance, Bar) or some such. Looks dumb on a casual glance
> (if the compiler knows how to fix it, why doesn't it do so?), but
> taking into account that people make mistakes all the time, it is FAR
> easier to debug that error (Uh, whoops, I didn't mean to use either a
> Foo or a Bar here, but this unrelated Baz thingie instead!) compared
> to a runtime error where you seemingly execute the wrong method.
>
> I could come up with a few more of these examples, but it'd be all
> anecdotal. The real way to prove this is to take a bunch of real scala
> code, write an engine that creates random permutations of the text in
> ways that are similar to how humans sometimes make mistakes, and to
> have some sort of measure of the distance  between any given source
> code file and any given AST. Then see how scala's mean Distance
> between Nearest Alternative Interpretation (mean DNAI!) compares to
> java's number, or python's number, or haskell's number.
>
> Would be interesting research, surely, but not something I can whip up
> in an hour or two.
>
> Moving it to the practical, I can boil it down to this: the current
> version of scalac will be hated fiercely by 'programming is a job, not
> a hobby' professionals, because it is of precious little help when you
> make the invariable mistake. This will need to be addressed before
> scala has a serious chance in 'the enterprise'. I have no proof of
> this (no test lab with a roomful of programmers in the basement,
> sorry), but from speaking with many other enthusiasts who gave scala a
> spin, this was complaint one, with a big margin. Anecdotal evidence
> will have to do. As an addendum, my gut feeling tells me that this is
> a virtually impossible job without reducing scala's syntactic
> flexibility. I have no proof of this. Merely many examples and some
> incomplete reasoning based on the idea of thinking about how scalac
> would have to be changed in order to be more useful everytime it
> throws a confusing error at me, and not coming up with simple
> solutions most of the time. Could be I'm a lousy engineer. Could be
> its a formidable job.
>
> On Dec 17, 3:22 am, Alan Kent <alan.j.k...@saic.com> wrote:
>
> > I thought the technical point was in the first sentence - the point that
> > minor typos cause very strange/confusing error messages.  Because of
> > things like you can leave out semi colons, leave out parenthesis, etc -
> > all useful in their own ways - it means that given a sequence of tokens
> > the compiler may easily misinterpret what the programmer intended.
> > Other languages with a more rigid grammar (e.g. Java function calls must
> > *always* have parenthesis) makes it easier for the compiler to correctly
> > guess what the problem really is.
>
> > To me the real question is whether this is a symptom of the language
> > grammar or just that the compiler needs improving.  Good error diagnosis
> > in compilers can be very hard to achieve with more permissive grammars.
>
> > Alan
>
> > peter wrote:
> > > I read your rant but I do not see *any* technical points.
>
> > > On Dec 16, 5:06 pm, Reinier Zwitserloot <reini...@gmail.com> wrote:
>
> > >> No amount of tooling in the world is going to fix scala's uncanny
> > >> ability to throw tantrums the moment you make some typos.
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "The 
Java Posse" group.
To post to this group, send email to javaposse@googlegroups.com
To unsubscribe from this group, send email to 
javaposse+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/javaposse?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to