Hacker News new | ask | show | jobs
by pents90 3392 days ago
Scala appeals to those who love programming languages. Java and a few other languages appeal to those who love making software, something that Scala is terrible at.
4 comments

Actually not true. If you love making software you will probably use Scala without its esoteric features (for the better, imho) and you have a powerful and useful tool, yet very pleasant to work with.
If you are writing code alone, yes. If you are trying to decipher a lot of code somebody else created, not so much.
The point I was trying to make is that it does not have to be cryptic at all! I worked on a play app where it was really easy to go around and even JS front-end developers made small contributions. Maybe some teams need to set up rules, or do more code reviews idk.
Every teams ends up with different subset of features through. When you take over after different team with different culture, the deciphering problem gets back.

Also, through I did not seen it in Scala but in different language, the part of coding I personally enjoy the least was the prolonged fight over which features are going to be used with code reviews being primary tool to force other team members into submission. Seriously, I like following team standards, but new rules suddenly appearing during code review were pretty annoying - giving me a choice between not meeting deadline and following other dude random opinions whether I agree with them or not.

This isn't correct. There are lots of large, very popular open source projects written in Scala: Spark, Kafka, Akka, Mesos, ...

Apache Spark supports 4 languages: Scala, Java, Python and R. Most Spark applications are written in Scala.

I think Akka would prove the GP's point. :)
Why? I assume you are making a joke that Akka is overly complex or?

Akka is clearly a very successful project, being used widely for very high volume systems. Apache Spark removed Akka because so many users were having version compatibility issues between the version of Akka they were using and Spark was using. Enough people want to use both in the same application that the Spark guys rebuilt Spark without Akka.

I might agree with you regarding Akka Streams ;-)

Out of curiosity - which large projects are actually using Akka?
You may find the following page helpful: https://www.lightbend.com/resources/case-studies-and-stories
On top of my head: Play Framework, Spray and Spark Notebook (http://spark-notebook.io/).
Scala is a language of compromises. That's part of its success! I think it appeals to people who want to try out many different types of language styles, but the programming language purist in me hates it because it's not opinionated and is such a mish mash.
> Scala is a language of compromises

Scala tries to be everything at once, it's hardly a language of compromises. It was successful because when it was created Java sucked and now of course people are stuck with Scala deployments as nobody can decipher all that code. Java still sucks but less that it used to be. It needs type inference for like yesterday. The biggest drawback of the language is the slow toolchain.

I am opinionated and my opinion is that the more features in the language the better - as long as they're sanely organized, and not a mishmash of things hidden behind arcane syntax inventions. So right now I'm not too fond of Scala because of how messy it seems.
The only language I know of that has a scope comparable to Scala is Oz...a language designed to teach beginner programmers the superset of programming paradigms.

And compared to Oz, I'm quite happy with how neatly unified it has turned out to be. It's not perfect, but as someone who regularly uses both OOP and FP, I'm pretty happy with it. I'm really looking forward to Dotty, because a lot of the cruftier things about Scala can start to go away.

I totally agree with your first statement.

But I think it is complete BS to say that Scala isn't good for "making software". The two most successful projects of my career were relied heavily on Scala to deliver robust product on aggressive timescales, with teams largely composed of first-time Scala users.

You can read one of the stories here: http://artsy.github.io/blog/2016/08/09/the-tech-behind-live-...

I'm not going to tell you that it's an easy language to master. But I do believe it is a fantastic language for making software.