Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

> Scala is the worst of the category of "functional looking languages built on the top of an imperative ecosystem".

Could you elaborate? Because that's not been my experience at all. I have found Scala to provide many tools to wrap around the idiosyncrasies of the underlying imperative that they are barely noticeable anymore.



I found F# really good at with this -> "wrap around the idiosyncrasies of the underlying imperative".

In the video Paul Phillips elaborates on many subject much better than I could ever do.

I also found the .net ecosystem libraries better, even though there are fewer libraries available.

Some links that I found great on the subject:

https://www.reddit.com/r/scala/comments/4246qc/heres_why_sca...

https://techblog.bozho.net/i-dont-like-scala/

To be honest with you my social circle of software engineers gave up Scala long time ago and we do not even consider it to try it ever again. Most of the projects we do we simple use Java for JVM (since version 8 there are many useful features that you can use and have relatively terse code that is also easy to read) for the .net ecosystem we use C# of F# depending on how relaxed the engineering team and the stakeholders about it.

For data engineering (ETLs, glue code, etc.) Python works. Since Spark has a Python interface it is also not needed to use Scala there.

For frontend obviously Scala was probably never a serious option.

There is no use for Scala for me or for the companies I work for. The last time I tried Scala it was horrendous. SBT? Seriously? Binary incompatibility between minor versions? I could go on an on of the collection of anti-patterns I have encountered. Since I have limited time and there are a ton of other software environments that we can use and have much better experience why on Earth would I want to waste time on Scala ever again?


Paul Phillips misses the point, and the "more than one way to do it" complaints are superficial. There's no language that prevents you from writing two functions that do the same thing, and that's all that most of those examples are (e.g. a -> b is just calling a function that returns (a, b)). Most of the time there aren't multiple semantic ways to do the same thing, which is what matters.

SBT is awful, don't use it.

"Minor versions" is overstating things - 2.11 was released in 2014, 2.12 was released in 2016, 2.13 in 2019, and 3.0 onwards are backwards compatible with 2.11. So that's one compatibility break every 2-3 years, which is better than most languages.

Scala is the only vaguely mainstream language I've found where you can do a whole enterprise-scale project in the language itself - no reflection, no AOP, no decorators, no macros, no monkeypatching, no nothing. So until I find another language where I can do custom context-like types (e.g. a type to represent "this must happen in a database transaction", and libraries already offer me functions like "take this list of database actions and combine them into a single database action" that work with my custom type) and "walk the object graph" style tasks (e.g. JSON serialization) in plain old type-safe code, I'm sticking with Scala.


It's not experience with Scala at all, but we all have different journeys. Should you ever find yourself using Scala again, I hope you make the same pleasant discoveries as I have.

Thanks for elaborating your point of view.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: