A much-lamented problem in the Scala community is the lack of solid, up-to-date documentation. The books are great but searching StackOverflow and the like brings up too many old solutions applicable only to Scala 2.9 and older. The language has changed a lot since then. It’s at 2.12 now with 2.11 still “supported” for a little bit longer (its last intended release is already out). The Scala Docs describing the core of the language got a lot better in 2.12 when someone devoted effort to cleaning up the docs a bit while also improving the output of scaladoc.
It seems that the profit motives behind Scala are really strong: everyone wants to make a buck off of what they know, locking the knowledge behind paid things like books, consulting services, seminars, etc. It’s OK but it hinders rapid adoption. The growth of Scala versus that of other languages that have gotten popular since its initial public release is evidence of it. I don’t think the community has struck the right balance in the way that other language communities have.
I’ve talked to Scalatypes who are interested in writing this freely available documentation. They just need a living wage to do it. They’ve not had any takers.
Source: Actively using Scala since 2013, I have shipped Scala in major on-premises products and will continue to do so for some time.
@soc Sorry to hear that. What’s your plan for the next? are you considering to contribute to other prog-lang’s community? such as Go/Rust etc.
I wouldn’t have wanted it to ask that myself, but we already have people coming from scala contributing and the previous exposure to traits helps a lot.
All the topics that are lamented in the post are seen as first class issues in the Rust ecosystem (which doesn’t mean that are always solved greatly!), we’d be tremendously honored if someone of that skill level would consider contributing.
I’m a bit of a Scala newcomer and pretty much write all my code to run on Spark, but have completed a few of the Coursera courses. Can someone point me at the shortcomings or danger zones of Scala? To me at least it doesn’t seem like there is a language out there that is functional, type safe and expressive like Scala which works universally in back-end services, web apps, and big data apps running on Spark/Kafka/etc. The only other language that is similar in this respect is Clojure but it’s not statically typed which is something I’m drawn to coming from Python. Are there alternatives to Scala people should be looking it?
To me, the big danger zone is that Scala has two largely incompatible groups of users. One is happy to use a better Java, the other is essentially writing Haskell on the JVM. Neither group likes the other’s code. The Haskell-flavored-Scala folks tend to be blowhards about it more often than the better-Java folks, so expect that style to win in any given project/organization. Also expect to lose people because of it. I’ve seen this happen from up close and from afar.
I wish Scala the language were separable from Scala the community. There are some great ideas in there, but I’m happier using most of them in a different language.
F# and Ocaml seem like strong contenders. Less Ocaml, but that’s mostly because of library support.
You can take a look at Haskell or close to Haskell languages:
At least Haskell is functional, type safe, and certainly as expressive as Scala. I used it Haskell along kafka, and for backend services as web apps. The first link talk about how it is used by tweag.io to run on Spark, I don’t have any personal experience with that.
I do think Scala is the best language going at the moment. But there are various rough edges, partly to do with JVM compatibility and partly to do with backwards compatibility with previous versions of Scala, plus the occasional bad design decision; just stuff like null, ClassTag, the contortions needed to implement HList and Record (which largely don’t cause problems for correct code but show up in things like the error messages you get when you make a mistake), the lack of enums or any truly first-class kind of sum type….
Pitfalls to avoid: SBT, akka actors, the cake pattern, pattern matching where it’s impossible to tell safe from unsafe, monad-like types that don’t obey the laws, implicit parameters used as actual parameters (something Odersky is now promoting), lack of kind polymorphism…
In terms of alternatives F# and OCaml don’t have HKT; Haskell is an option but seems to introduce as many problems as it solves (laziness making performance reasoning hard, lack of good tooling, limited compatibility with other ecosystems). I had high hopes for Ceylon but I’ve come to think union types are the wrong thing (they’re inherently noncompositional compared to the opaque disjoint union kind of sum type). I’m excited for Idris - that seems to take the good parts of Scala and also bring something new and valuable to the table.
My impression from a distance is that Scala is a language with some incredible ideas in it that has been plagued since the very beginning by implementation problems and a lack of coherent direction.
Martin Odersky had seemingly moved on years ago shortly after I first heard about the language, and it seems like it never really “broke out” in the ways its fans expected.
Your comment gives the impression that Odersky is no longer involved, this isn’t the case. He is still very much involved in the language design process and gives talks about it constantly. He is the top contributor to the upcoming Dotty release.
Your site has font issues in Edge and IE.
I’m not knowledgeable about Scala. What is the central driving force behind Scala? From wikipedia I see that there is a company founded by the original creator of the language. Is that the major backer? I’m just curious if @soc leaving stalls development, or is there an organization that remains.
I think development will be kind of fine. I don’t think I could have prevented any of the currently proposed language design train-wrecks anyway.
Documentation on the other hand … well, I guess they have realized that they have run out of people to mistreat and are now tapping into funds from the advisory board to make rudimentary fixes.
The top contributors are mostly associated with EPFL, either directly at the university, or via the Scala Center it hosts.