Skip to content

Comment on Scala – The Simple Parts

Comments

From most of the people I talk to, they rarely complain that scala sold out to industry, but instead talk about how complex the language is.

For truly widespread adoption, I'm talking PHP or Java levels, you need to have a totally different mindset. I don't think Scala is that language.

There is a lot to love about Scala, but one of the hurdles is/was the compile time. I used Scala and I didn't love the tooling around it. Even installing and running scalatra, I felt like it was maven installing THE WORLD, just to build a very small thing. Then, once I got it going to have a very simple change, save, refresh to see changes loop in my web workflow was like 3-10 sec. Not huge, but I'm used to PHP or Ruby dev with instant refresh cycles. Then on the TDD side, it would take upwards of 10 seconds to noticed that files had changed to run my test suite in SBT. Again, I'm used to < 1 second to notice a change and run my entire test suite in ruby.

I'm not sure if that's Scala's fault or Scalatra or SBT, but no matter how I sliced it, as of 9 months ago or so, Scala didn't feel amazing to develop code in. Everything felt a bit clunky. The code itself I loved, but the way I got there felt worse.

Surprisingly when I tried Go, it was a much better developer experience in terms of the near instant compile, refresh, see change loop and also running tests was nearly instant. The "instant" feeling I get in PHP and Ruby was there, but in a compiled language. However, in Go, I don't have some of the functional and immutable concepts that I have in Scala, which sort of sucks.

At the end of the day I'm making tradeoffs somewhere and it doesn't feel awesome anywhere. I might check out Facebook's Hack simply because it offers type checking, performance, and fast refresh. Also maybe the latest .NET stuff announced with continuous compile might bridge the gap for C#. I really don't know.

I have yet to find the language that really feels amazing as a developer in sort of all areas. Every language seems to have baked in tradeoffs.

I'm gonna sound like a weirdo, but I still like Java, especially Java 8, and IntelliJ.

It's remarkably uncool to like Java, but I know what you mean. I did a web app using Play! version 1 and it was a really enjoyable experience, even though it was in Java. Also, Android development is not brilliant, but most of that is the emulator's slowness, not the Java language itself.

Also I love IntelliJ or Netbeans both a lot more than Eclipse.

I'm sure there is a Java dev experience that is pretty great, especially if you can pull in some of the functional things from Java 8 and maybe immutable things from guava. I haven't tried that.

I have tried Kotlin and I enjoyed playing with it in IntelliJ, though I haven't done anything beyond project euler problems and some JUnit testing.

On the JVM I like Scala and Clojure more than Java, but I am realistic and know that those languages are only available to me for hobby projects, given how the enterprise works.

I think achieving PHP or Java levels of adoption is as much about timing and serendipity as it does language features.

Java(blue collar language http://dfjug.org/thefeelofjava.pdf) is easy. Scala is not(http://blog.goodstuff.im/yes-virginia-scala-is-hard). (I am a Scala fan.)

I wish they would get rid of CanBuildFrom

I write Scala production code on a daily basis and I've never had to even look at CanBuildFrom. I know it's there (I remember the API docs before they started hiding things), I just never have to deal with it.

I know it's a common complaint, it's just one that's never impacted me in the real world. Never comes up.

A majority of PHP users are not devs and just know enough to upload files on a server or tweak Wordpress.There is not that much serious PHP "engineers".

Anyway,it's great Scala choosed the JVM because it can be part of the stack of any business that already relies on it.That's what matters IHMO.If it is not fit,one can still switch back to java and still use the jar developped in scala or exploit java libs.

That's just a load of CS elite nonsense.

Mass market programming languages are built on the back of "non serious engineers" as you call it. PHP is big because it is legible and works for literally 10 million "not serious PHP engineers".

Ridiculing the funnel of people into engineering is insane. This comment alone is the reason why 50 women didn't go into CS this week.

Hyperbole much? If a man or woman is that put off by this sort of comment, they're probably more suited for another field of endeavor.

I prefer the term rhetoric.

It has been proven that anxiety about not "knowing enough" or being "good enough" at programming is keeping women out of CS. By segregating students into ability levels, one college was able to get enrollment up to 42% in CS:

http://www.bloomberg.com/video/76028566-harvey-mudd-presiden...

Considering how important programming is becoming, how many aspects of our lives are ALREADY controlled by code, your "suited for another field of endeavor" comment just makes no sense.

One is a prerequisite of the other though. That much is undeniable.

I don't think that's true at all. There are plenty of "bad" languages that have become popular.

The language features for making it big are realistically:

- how easy is it to understand this language

- how quickly can i do something useful in it?

PHP -> It made it trivial to make active webpages, something that was a disaster in other languages until recently. Do you even remember perl cgi-bin?

Java -> provided a realistic replacement for C++.

BASIC -> People go could from 0 to program nearly instantly.

The "good vs bad" you hint at just doesn't really register on this scale.

Right, I think people forget that Java essentially aimed to be a vastly simplified version of C++ with garbage collection and memory safety. This was something a lot of people were crying out for at the time. There were some bad decisions in early Java (making data structures synchronized by default, lack of generics), but it's got to the point now where it's pretty good at what it's intended to be.

Yeah I think Java was the right(enough) solution at exactly the right time. I write some Java, but can't say I've ever really enjoyed it. Scala feels, well just more interesting to me. But it isn't easy.

That's a really loose/convenient definition.

I started out with ASP2 BTW so I managed to skip cgi.

I wouldn't argue that Scala is going to be The Next Big Thing. I think the industry is large enough that there isn't going to be one. At least not for web development. Everyone prioritizes something different.

I find Scala a really consistent language though. Which fits my own personal definition of "simple" well enough. Much more so than say, Ruby. Where even "truthiness" is somehow a vague concept.

The underscore in Scala for example is, when you grok it, actually a really simple concept. So is map/flatMap/filter. So for-comprehensions. And Extractors/Pattern-Matching. It's all a bunch of orthogonal, simple features that together are greater than the sum of their parts.

IMO.

Depending on if you've run into the issues Paul Phillips highlights in scala.collections you might find some fault there. I haven't personally beyond the fact that for me, CBF might as well imply a sealed class and custom collections are something I tend to avoid (that wasn't true of c#).

That's a tangent though I suppose. Just the same, the argument was features as a prerequisite for timing. And while there's some obvious truth in that, considering previous examples, just about any modern language would meet that challenge.

I'm using it in industry right now, and my biggest complaint would be along the lines of "it's sold out". I'm very worried that Odersky's talk of "simplifying" the type system will mean removing features that I use and depend on (in my real, revenue-generating applications).

AboutSource Built by g1lg1l

Hackerly is an independent reader for Hacker News, built on the public HN API. Not affiliated with Y Combinator.