Bruce Eckel: Rethinking Scala
youtube.com
youtube.com
Like others, I was also a bit perplexed by his description of the community. In his descriptions of Python's BDFL, I couldn't help but feel Odersky's leadership was shortchanged a bit. I primarily programmed in Scala for the past year and my experience with the community has been nothing but positive, whether on mailing lists or StackOverflow.
Of course, perception is reality, and even Odersky has spoken on a culture of elitism in Scala in the past. I also think the lack of women in the Scala scene makes a point in itself, as well. I just wish more cogent examples had been provided, because the problems in the community need to be highlighted before they can be solved.
My biggest issue with Scala hasn't been community, but lack of maturity on the project level. The larger Python, JS, and Ruby communities simply have more out there in terms of community contributed content. The tradeoff for me has been that versus the sheer elegance of Scala.
I also think there's a lot of truth to the point that the multiparadigm of ways to do something in Scala leads to each team or organization developing a distinct style, which is unfortunate. On the other hand, Scala code seems have this property of evolution toward succinctness and elegance over time. You may not know how to get it right the first shot, but you'll eventually roll down the gradually sloped pit of success. In JS, by contrast, doing things the right way tends to look almost like an abuse of the language.
In any case, I do suggest anyone who haven't seen or tried Scala to give it a shot. It's a fun and productive language. And the community is pretty great in my experience...
This part ties directly into the premise of interactive tooling, in that, once you have an IDE with tab completion for all your types and methods, you notice the huge benefit this adds when confronting gigantic but powerful, feature-complete libraries. Doubly so, for a compiled language that can accurately infer syntax integrity as you type, based on compiled binaries that don't require painfully witchy runtime linking against fragile, obscure file system paths.
As long as you don't shoot yourself in the foot (or let some grumpy, adversarial senile developer hobble you) with a horrid, torturous crackpot scheme of reflection and introspection, or stultifying nightmare-mode XML, Java's still pretty damn handy any old day of the week.
There's definitely still an enterprisey, corporate air to the culture of Java, and it can be near as bad as dealing with an obnoxious Oracle DBA, or a smug Dennis Nedry Windows admin, but that's more a political issue than a programmerly issue. Is that the product of an "evil bit" flipped to "true" on a league of legends server? I'm not so sure. Newer languages get a lot of bro-grammers, so I'd say pick your poison...
Just sayin'...
"virtual machines and garbage collection which when java first appeared were still ridiculous concepts"
So I'm listening to a guy's thoughts on programming languages who apparently never heard of lisp and is seemingly unaware of Guy Steele.
"Our time is much better spent using a high level language..." Which is a sweepingly generalisation for which the exceptions, nuances and caveats are very clear to most reading Hacker News.
I'm stopping now. That's 10 minutes of my life I'm not getting back. If someone thinks this promotes scala please think again, it probably has the opposite effect. If someone was kind enough to point out where the non-ridiculous content actually starts and provide some summary of why it might be worth anyone's time I'd have another look but I think I'll be looking for thoughts on scala elsewhere. Signal to noise far too low for me here. YMMV.
As an aside, promoting a wider popularity for a skill set you already have is usually a good idea professionally. Ask any Perl expert. This is probably has something to do with the vitriol in the "programming language wars." It's nothing new, Dick Gabriel described C as "a virus." Many C++ promoters hate on C reflexively even when they're right. Many Java's hate on C++, Pythonistas on Perl, Haskell on Scala etc etc. Choose life.
He clearly states that they were considered ridiculous because of their (perceived) performance - he didn't say people doubted their existence.
He did not say this.
You are imagining it. Re-watch the video if you don't believe me.
You're getting tripped up by the fact that he's talking about popular languages, not languages in general. Java was the first time most of the people who only ever did their work in C and C++ encountered virtual machines and garbage collection.
UCSD Pascal (which was widely known in the 80s) had a virtual machine, but no GC.
Maclisp had GC, but no virtual machine.
about 9:10 "virtual machines and garbage collection which when java first appeared were still ridiculous concepts"
Well absolutely, yeah, that's exactly what he did say. Word for word. In direct quotes. With a timestamp so you can go and listen to those exact words.
Spelling it out there were multiple implementations of Lisp with garbage collection that were described by many at the time and afterward as successful and efficient. Guy Steele was on the Java design committee. Yes. No really he was.
Previously, among other things he'd done this: http://library.readscheme.org/page1.html
Now if Mr Eckel just did a bad job in the first 10 minutes but improved and so I was hasty, ok, make that case - I specifically asked about that. If my direct quote is somehow wrong because of context and I missed it, please provide the quote in the wider context. But let's not make this a language wars style "Nyer nyer you're wrong because I said. C is a virus. Perl is line noise any perceived criticism of my favourite tech is evil" or whatever.
Choose life.
If tech is good make its case. This is someone watching something and responding on the front page of HN because they're interested seems like quite a weird reaction to me - others mentioned things about the "scala community" elsewhere in these comments. Maybe this is another example that helps someone's case?
He is clearly saying that the typical programmer at the time thought virtual machines and garbage collection were ridiculous because of their perceived lack of efficiency.
He never says he agrees with that assessment.
He is simply demonstrating what the common arguments were against Java at the time, and if you were programming back then you know he's correct - plenty of programmers were not convinced, and they were wrong.
> But let's not make this a language wars style "Nyer nyer you're wrong because I said. C is a virus.
This is not a language war. Lisp was my language of choice fifteen years ago, and is still one of my favorites.
Starting 8:57 note this is direct quote, word for word accurate so that all the surrounding context is right there.
"Then java comes along and yes, java had a lot of, um, questionable decisions, but ah, some of the things that were brought along were the idea of virtual machines and garbage collection which when java first appeared were still ridiculous concepts that could never be efficient enough. And there was... And you can see the pattern of argument there's "Oh well it will never be efficient enough." And of course now we've had enough time to not really think about the efficiency of virtual machines and garbage collection it's basically proven - we've had faster and faster hardware and we realize our time is much better spent in um using a higher level language than it is chasing some of the bugs that happen without this kind of stuff." --Bruce Eckel
So there it is. Transcribed and checked. I'm not going mad (or at least this isn't further evidence of it). My assessment in the wider context of the surrounding quote looks completely accurate. Sweeping, nuance free generalization and ignorance of things that existed, commercially prior to Java. You may look at it squarely and decide to revisit your comments. I think he really does agree with the comments he is making himself while he's making them.
I have no idea why you're understanding something else that he isn't saying and putting words in his mouth that aren't there. If he meant something different to what he said, ok, he should have said something different to communicate the different thing, yeah? It doesn't usually pay to make assumptions based on no evidence so I'm not making any.
Revisiting this whole thread it looks about as pointless as the time dropped on the video. I shouldn't tar scala with that brush though, it may not be representative of either the language or its community.
Yeah ok, so I'm wrong every downvote proves it as does all these responses reacting to things that literally were not said. I think we really can call this whole post, thread and all discussion of it a total bust.
Note also I deliberately used direct quotes. If they are unfair please find something that isn't vague to demonstrate that.
Edit: Noting more downvotes received and no more replies. Is this language wars? Do you thin this is the scala community? The only reason I would have tried the video and posted here is due to an interest in scala and I've really tried to be fair in my responses. No matter, life is too short to waste more time on it.
I don't know why you're getting downvoted, but I do think people are disagreeing with you simply because their experience is like mine. These concepts weren't truly novel when they went mainstream in the 2000s, but they were new to many.
Guy Steele is a genuine programming language expert who designed Scheme with Gerry Sussman, wrote the standard common lisp texts, the C reference manual and so on.
"We were not out to win over the Lisp programmers; we were after the C++ programmers. We managed to drag a lot of them about halfway to Lisp."
- Guy Steele, Java spec co-author
http://www.paulgraham.com/quotes.html
I'm not claiming expertise on Java, VMs, Lisp and programming languages in general and don't pretend to be. I've picked up that much but Mr Eckel hasn't. So does that fact that he has missed such a basic count for the expertise of this presentation on programming languages or against it? But maybe Mr Eckel has a lot friends who like to downvote any criticism of his presentation however reasoned and respectful? Maybe he's a lovely guy and mostly does a lot better?
edit: minor spelling & grammar
Mostly on a few American companies.
Lisp Machines were hardly known outside US.
I heard about them at the university for the first time, in the mid-90's and I was already coding since the mid-80's.
Also on the university I got to learn about Smalltalk, Prolog, Caml Light, Oberon, Modula-3. All languages with GC, some of them used for system programing which is still considered an heresy today.
At least on my home country all those languages were considered esoteric by the average developer and seen as something that one is required to use while at university.
I got to learn about them, because one of my focus at the university was in compiler design, so I got to read a lot about language design.
The average programmer without a degree? Not so.
Industry used Lisp in some projects. Philips medical research for example. Alcatel.
BMW wrote applications in Smalltalk.
Lisp's performance was okay, but it did need a lot of memory in many cases (with a few exceptions). Whenever you developed serious with Lisp in the 80s and early 90s, you had the machines with the most memory around. Using lots of memory then was a delivery problem, because not only the applications were expensive, but also the hardware which was needed to run them. Memory was extremely expensive in the 80s.
Java had some influence from Lisp implementations, but not so much from the virtual machine architecture. Virtual machines in software were not the focus of the Lisp world, which had lots of native code compilers. Smalltalk usually used a VM approach.
Generally Java did not get much from Lisp anyway. Half-way is not true, maybe 10%. Steele worked for SUN because he was a language spec guy (he wrote books and specs).
There were widely used VMs without GC and there were lots of systems with GC, but no VM.
[0] http://www.artima.com/weblogs/viewpost.jsp?thread=328540
So I'm listening to a guy's thoughts on programming languages who apparently never heard of lisp and is seemingly unaware of Guy Steele.
No, you're listening to a guy that has met Guy Steele personally several times and knew about him and Scheme (maybe even before you were born, if you're 20-something), that is making a specific point from a SPECIFIC context (of the enterprise IT at large).
When Java appeared, a VM and GC was laughed at in the huge majority of programming jobs, both for "shrink wrapped" software (where C++ still trumps all to this day) and for enterprise development.
Neither Lisp, nor Scheme or Smalltalk or any VM lanuage had made any great inroads to those areas at the time, so from the context of the software houses/enterprise IT industry it just as if GC and VMs didn't exist at all...
So common pattern: pick something that is totally and utterly irrelevant in regards to main message and dismiss the whole thing so arrogantly.
In my mind this is the root of many problems in our industry and world overall. Big discussion regarding ideas are just not possible, because so many considers The Message as just a combination of words/arguments in isolation, but it is not, it is so much more!