Is Scala worth learning in 2017?

What major companies use Scala? Is Scala worth learning in 2017? If I learn Scala, could I easily learn Haskell? I am looking for a FP language that would make me employable. Coming from Java-OOP-Land.

Other urls found in this thread:

cs.kent.ac.uk/people/staff/dat/miranda/whyfp90.pdf
soc.github.io/six-years-of-scala-development/departure.html
twitter.com/SFWRedditGifs

...

what's wrong?

Nah man nothing, Scala just makes me feel si-

If you can learn Haskell and you already know Java, then you'd probably end up writing good Scala code.

Scala is harder than Haskell because scala is bloatware. Learn kotlin if you want a JVM language.

I don't know Haskell. I'd rather learn Haskell first, but I have a job opportunity if I learn Scala instead.

So, I almost feel like the uncool kid studying a language just to get hired when I'd rather be studying another language. Anyway, is Scala a good language to learn for baby's first FP?

If I learn Scala could I easily pick up Haskell? I'm going through the coursera class / another book.

No Scala is not a good language to learn FP as it's an object-functional programming language, you'll probably end up not writing idiomatic Scala code as you only know OOP.

Read learn you a Haskell to learn some basic functional programming.

Thanks for the link. I'll read through this. Do they actually teach what a Monad is if you read everything in order?

Yes, Scala is the FP language that is most employable. Well-known companies such as Twitter, LinkedIn, The Guardian etc. use it. The language is firmly rooted in research (check out the upcoming dot compiler), while at the same time is highly productive for real world problems such as web services (Play framework), concurrency (Akka), and big data (Spark).

I think more people should consider it, I know I certainly didn't give it a fair chance. Coming from both a Java and Haskell background, it seems to me that it makes the right compromises. There's also quite a bit of innovative ideas, for example how tightly they were able to combine objects and functions, more so than any other language. I am a few chapters into Odersky's book and it's really good.

>What major companies use Scala?
twitter, linkedin, theguardian.com
>Is Scala worth learning in 2017?
Tbh I was on the Scala hype train for a couple of years, but it has lost some steam recently. I also came to realize that the language is a bit too complex for my needs and the code I write looks messy with all them parentheses. I prefer Kotlin and Elixir nowadays, but I mostly do Java (and Typescript).
>If I learn Scala, could I easily learn Haskell?
You should do it the other way around -- learn FP in a pure, clean Haskell environment and then use that knowledge to do shit in Scala. I think that Scala's convoluted syntax and the mixing of OOP and FP makes it much worse for learning FP than Haskell. It's better for getting shit done though.
>I am looking for a FP language that would make me employable.
I'd say just do some Haskell in your spare time and wait a couple of years. And if not, Scala is the best choice right now.

Thanks. I have a job opportunity if I learn Scala. Not sure if they'd hire me if I learned Haskell instead, so it gives me an incentive to learn Scala first. I will learn Haskell at some point and DESU I have been shifting between learning Haskell and Scala at the same time. I'm not deep into either to get confused, but I am afraid I'll have to eventually drop one and stick with the other.

Does Haskell have things like call by name and call by value that I'm learning about in Scala? Also, can either of you explain what the difference between lazy evaluation and call by name is?

unironically it's a great language. Ignore the people here shilling that java/jvm is bad, or that OOP In general is bad. they're all retards who have never actually worked as programmers.
I love scala, it fixes 90% of java's problems. There aren't really many jobs with it though, most places, especially banks want java instead. (banks will probably continue to even if java gets cI basically only get to use it for my own projects, every employer I have only wants java.
I hope more people use it soon but it hasn't really taken off. Haskell is much worse, and has even less jobs (as in, literally nobody will pay you to write haskell). Where I live there aren't very many jobs in it, maybe there's more in the USA or something. Also, despite being kind of useless haskell is probably better specifically for learning functional, as scala is both.

call by value -> call by variable*

Used Scala extensively at a major investment bank. it was used a lot for parallel performance with akka actor model

Cool, thanks for the insight. If it weren't for the job thing I'd learn Haskell first. But I really don't want to be a NEET any longer than I have to so I am leaning towards fully focusing on Scala for the time being. I can't find much on it and literally don't know anyone that programs in it.

What resources did you use to learn? My main point is the Coursera class and Atomic Scala. Any others you'd recommend?

Currently, I only know Java.

Odersky teaching "Functional Programming Principles in Scala" on coursera. Starts this month.

>kotlin
And enjoy being unemployed.
Yes OP. Scala is worth learning if you want to be employable. But learn you some haskell first so you can comfortably use scalaz

Thanks. Enrolled in it.

Nigga what? Do you live in africa or what? In central yuropoor shitton of companies are migrating to scala. There are about 10 haskell shops just in my shithole of a country and they all pay very well to their haskell programmers. Scala is being adopted so fast because it fixes most of java's problems while not forcing you into FP, which does result in terrible scala code being written, but it is still miles better than the java abominations we're all accustomed to.
Anyway. Learn haskell first, then go scala so you don't end up producing shit like the regular java monkey does.

Lazy evaluation is when you don't execute code until you absolutely need the result. For example, Haskell will let you create an "infinite" list. You obviously can't hold that in memory, but once you try to do something on it, for example taking the first 10 elements from it, then it will actually go ahead and calculate those, but not any more than you need.

Call by name does what I described above, but if the same variable is used twice in the same computation it'll evaluate it twice. Haskell is call by need which is a bit smarter in that it will memoize (cache) the result and reuse it later on, and since it's pure (for the most part) there's no problem with doing so.

>unironically it's a great language. Ignore the people here shilling that java/jvm is bad, or that OOP In general is bad. they're all retards who have never actually worked as programmers.
>I love scala, it fixes 90% of java's problems.
word
>Haskell is much worse, and has even less jobs (as in, literally nobody will pay you to write haskell). Where I live there aren't very many jobs in it, maybe there's more in the USA or something.
I have a friend that writes Haskell professionally. But yes for the most part, most hiring is through people you know. There's some jobs in the Bay Area, some in the UK/Europe, some in Singapore (Standard Chartered)
>Also, despite being kind of useless haskell is probably better specifically for learning functional, as scala is both.
Agreed

OP you should also check out the book I mentioned in my previous response: Programming in Scala 3rd Ed (2nd Ed is too old) by Martin Odersky's (the creator of Scala). Kind of pricey but I seem to learn quicker or easier from books instead of videos, just my 2c.

Apologies in advance for formatting/typos, I'm on mobile right now.

Read this to understand the advantages or niceties of FP

cs.kent.ac.uk/people/staff/dat/miranda/whyfp90.pdf

I would learn something like Haskell or Erlang first (at least some basics) and then look into Scala.

You have to understand one thing:
Scala is a language for experienced programmers. It's basically the C++ for the Java ecosystem: powerful and great at what it does, but not something you learn at one weekend.


I was trying to get into Scala for fun. And the basics of Scala are great, it's much more sensible than Java most of the time. And list manipulation, iterators and so on are really good:

for (i

This "new hip programming language of the month" shit really needs to stop already.

No, it is overengineered pile of shit

bumping this thread.

>Is Scala worth learning in 2017?
soc.github.io/six-years-of-scala-development/departure.html

Thanks for the response. Your explanation made sense on the differences.

I'll get the recommended book and already started following the coursera classes.

People are recommending I learn Haskell first. Is it OK if I stick to the coursera classes + your recommended book? I have a job opportunity if I learn Scala first, otherwise I would learn Haskell first. I still plan to learn Haskell no matter what.

It seems like the Coursera learning will be fine, as to me it seems (least early on, I don't know about later on) it sticks to teaching things the FP way.

I already taught myself basic lambda calculus and am learning elementary category theory (working through a book).

The issue I had with Scala is you can get away with writing straight Java and never really learn how to write in a functional programming style. Other than that no real complaints.

Thing is it's learn something to get a job, or learn something else (which I really want to learn) and get no job. I need a job for the time being. So that why I was wondering if Scala is still worth learning in 2017. I will learn Haskell regardless. Kind of curious what it'd be like to learn both at the same time. I'm still sticking with Scala for job purposes... but closely following Haskell in parallel.

More than scala itself, what you need to learn is functional programming.

Ok cool. Thanks for the clarification. I'll refrain as much as I can writing non-FP code n Scala. So far the coursera videos seem to follow the FP approach

so basically if i learn FP proper via scala I should be good on transferring those concepts to haskell and so on? that was the meat of my initial question.

I love Scala. I work with datashit so I use it somewhat. Java developers at my work hate it though.

You should eventually learn both. My perspective is that Haskell is a better FP language but Scala is more practical. You can find Haskell jobs but Scala is much, much more common, and many conventional enterprise people are familiar enough with Scala and will be impressed if you know it.

But, its sort of tossup. Scala allows dumbshit Java devs to basically transcribe Java into Scala, but at the end of the day it gets work done and things built and tested... which is why managers tolerate Scala, and you don't see Haskell very often in industry.

I took the first two of those Coursera classes and they were excellent (especially the second) and I'll be working on the third soon. I don't think you write any non-FP code in those courses, so don't worry about learning non-FP Scala.

Okay, excellent reply thank you. I will continue onward learning Scala via the coursera links and reading from the recommended books listed. I will closely follow learning Haskell in parallel. I think Haskell looks more interesting from an academic perspective (which is why I want to learn it more than Scala) but I gotta eat and pay bills and need a job and when my potential boss told me I have an opportunity for a job I figure I'd take him up on it and learn Scala.

Are there any good IRC / Slack / Discord channels I should be aware of for Scala?

Also, it seems like Scala is used a lot in big data applications. Do you actually need to know stats to do that? Or is it data engineering kind of roles where you build the platforms for data analysis?

No, you don't need to know a ton of statistics. You're exactly right, generally you build and implement platforms and models.

Probably 90% of data science is obtaining, cleaning, storing, and retrieving data in computationally efficient ways. The other 10% is hardcore statistics and applied math.

Where I work, there's a group that prototypes mathematical models (usually in Python, R, or something), and then it's passed over to another group that implements it in some scalable infrastructure and optimizes it (I work with the first group, so I'm not 100% familiar). There's some overlap but generally mathfags do math, CSfags do the programming.

Sweet. Thanks for the responses.

Lolno, its contributors are leaving left and right because they realized how many unfixable errors they made in the language and the standard library.

Use Kotlin.

fuck scala

Why should I abondon it if someone is willing to pay me to learn it? I don't care about scala as much as learning FP and getting a job

Kotlin is already more popular than Scala. It's very popular in Android development. Scala has been an unmitigated disaster and everybody knows it.

Are you a 9 year old that needs handholding and pretty pictures? Then I'll recommend you the learnyouahaskell book. If you're outside that target audience I'd say you should stay away from it.

>Twitter, LinkedIn, The Guardian

LinkedIn and The Guardian have dropped it. Kevin Scott has been very vocal about LinkedIn attempting to move away from Scala and minimize their dependency on it.

Former VP of Platform Engineering at Twitter (Raffi Krikorian) came out publicly and said that choosing Scala was a mistake and most services there are slowly moving to Java.

Typesafe even re-branded to Lightbend just to get away from their Scala first image. Their new frameworks now focus on Java libraries first and foremost lmao.

99.9% (probably more) of jobs working with the JVM just use Java so if you just want a job just learn that.

Okay OP here. I decided to go with my initial interest on Haskell. Can I get any jobs with it? I'm doing it out of pure academic interest.

It seems like scala isn't the best place to start.

>Can I get any jobs with it?

No. For every one of the very small number of Haskell jobs there are dozens of programmers that have been using it for years that want it. It doesn't help that even most major cities have exactly zero companies using Haskell.

wtf I hate Scala now

>Google to support kotlin right now


Lol fag. Never listen to g. Not even to me.