Live: Alternative and Emerging Languages Panel at JavaZone

Lineup:

Moderator: Robert C. Martin (Uncle Bob).

Everyone introduces themselves. Bill is to blame for the “emerging” v/s “dynamic” languages. Ola fools around with AI stuff, hello robot overlords!

Bob: “I’m sick and tired of new languages, why C++ wasn’t good enough? Same with Java?” Python isn’t really represented on the panel, although it’s not really emerging either.

Charles: “must embrace the multiple tools”. Big G: “haven’t you been frustrated with Java?”. Scott is annoyed by static typing, I’m annoyed by Scott :) Duck-billed platypuses comes into play, generic consulting bullshit ensues.

Ola: “Lisp developers laugh at Java”, forget to mention that they laugh at Ruby as well. Haskell guys will laugh at anyone. Bill just wanted something better, reminds that type inference makes Scalla waaay better than all that dynamic nonsense. All languages do trade-offs, Bill likes types. Charles: “Like C++ — keep using it. If something works better for you, use that. Embrace multiple tools!”.

Bob: “Why did you sacrifice the static typing? Do you have a runtime exception fetish?”.

Big G: “You don’t get too many runtime errors in Groovy.” He’s just way too good for that. Ola: “Scala has cool type inference, but way too complicated.” Says you get other benefits in dynamic languages, but doesn’t names them. Scott brings driving analogies, which don’t mean anything, blablabla.

Gilad: “Lies by academics — types are useful for catching errors. But those errors are trivial. Types are great for documentation, structuring and performance.” Charles: “Types are about not trusting the people who write the code”. Fair enough, but I don’t trust myself, not to mention others. Bill: “I’m getting nervous in a big system. Types protect against certain type of errors”. Kinda weak.

Bob: “Your languages are hideously slow. Explain!”

Scott: “Speed is overrated”. And this is when the CPUs have plateaued and we just get more concurrency that noone uses. Brings Java as example of slowness, but the CPUs caught up with Java, Groovy won’t be so lucky. Big G: “Thin DSL layer in Groovy on top of a Java library made a world of difference, still Java performance underneath.” Gilad: “Google V8 might be a target for many dynamic languages soon, ’cause it’s been developed for dynamic languages”.

Kirk: “Productivity is king, but performance is important, if you produce bytecode why are you slower than Java?”

Gilad: “JIT is locked behind the type system. This makes dynamic languages reimplement basic stuff”. Charles: “Harder to know where does a method invocation end up, INVOKEDYNAMIC to the rescue. Numerical types are a real issue, unboxing them is really hard, SmallTalk did that.” Sounds reasonable. Scott speaks again. I had to switch from Google Chrome to Firefox in between, because spellchecking there sucks :(

Charles: “DocumentBuilderFactory is ridiculous, static typing overhead sucks. It cannot be just one languages, it’s not enough…” Bill: “Not static type fault — structural types, implicit conversions.”

Me: “What about contracts?”

Ola: “Dynamic languages do have the same contracts. ” Fails to explain what are they, though. Bill: “draw() has no meaning in dynamic languages, but it doesn’t necessarily produce more bugs”. Gilad: “Typechecker should be just a tool that warns you, while using types for documentation”. Someone from the crowd: “I program in 26 languages and that’s why your argument sucks [meaning me]“. Scott speaks.

Someone: “The problem isn’t in language, but in the people who use it, is it?” Reaaally long explanation that boils down to nothing specific. Oh, “What about refactoring?” OMG, please stop talking now!

Big G: “Refactoring works on Groovy with IntelliJ IDEA”.

Someone: “Multiple languages are like teenage sex, when will multiple languages become mainstream?” Time’s up!