7 ms·
ok, this is a sincere question i've read a lot of negative opinions on scala, that it's becoming too big and too complex and honestly, i was kinda sorta, wait
by systems 11y ago
ok, this is a sincere question
i've read a lot of negative opinions on scala, that it's becoming too big and too complex
and honestly, i was kinda sorta, waiting for it to fail or fall out of favor
this doesnt seem to be happening, on the contrary, scala seem to be getting more popular, compared to language which i favored (like clojure or f#)
are the negative opinions wrong, overblown, or is scala really heading for failure, what am i missing, what did i see wrong
- bguthrie 11y agoI use Scala frequently for internal microservices development. I also write a fair amount of Clojure. I believe that a lot of good and robust software is built in Scala, but that it suffers from a kind of complexity fetishization that offsets, for debugging purposes, a lot of the positive effects of robust typing. Compiler speed is also a problem for me personally. Given my choice of options, I will choose to build new systems in almost any other JVM language, including stock Java 8. However, the language isn't going anywhere, and is worth learning. I find that feedback is fastest in Clojure. Your mileage, as always, may vary.
- ihsw 11y agoScala's capacity for being onerously complex is high, but I wouldn't say it's too big and complex.
- catnaroek 11y agoScala isn't “becoming” too big and too complex. It already is. But, if you dig deep enough into the implementation details, you will find that pretty much every production-ready language is too big and too complex.
- justrudd 11y agoI wonder if people are having the same experience I had when I first encountered Scala. I was the newest dev on a team that had an existing code base that was built around Spray, Akka, and Slick. And they wrapped an Actor around Slick so it "fit better". I've written tons of asynchronous code (Java, C++, Linux, and Windows) so that wasn't what got me. It was just how the original devs spent so much time making everything was an actor. Even in areas that didn't need to be. At that point having never seen Scala, I just attributed it to the language vs the use of libraries. Having now spent time with just the language, I like it. Just my introduction was jarring because of all the "everything must be asynchronous" nature of the code base I "learned" on.
- deleted 11y ago[deleted]
- 20andup 11y agoCan you specify what you mean by too big or too complex? As far as concurrency goes it simpler than Java. You have Futures and Akka, that's it. You should read Java Concurrency in Practice, the entire book is explaining all the concurrency methods they have. And thats already a very good book (one of the top in my list). In Scala, I just need to read through a few pages of documentation and the rest is simply practice in mixing and matching patterns and a few configuration settings.
- skippytheroo 11y agoIf you look at stackoverflow surveys you'll notice that those using Scala are amongst the happiest users of any language and are very willing to continue using it. It's growing slowly but steadily and Spark is also driving adoption. With some exceptions most criticism seems to be coming from those who haven't had much exposure to scala and trot out the same tired old material time and again. Once you grok scala it makes more sense. It's a bit like complaining that Mandarin is hard to understand if you are English. It takes time to learn but it's worth it if you stick it out.
- nickbauman 11y agoNothing against Scala here at all. But I've heard that if you try to learn Mandarin as an adult westerner, you will never get to a point of conversational comfort in the language, let alone sound like you have native mastery of it: it's too complex and has tonality that westerners don't have anything to compare to. So this is a particularly poor choice of analogy if you're trying to make a case for Scala.
- skippytheroo 11y agoI selected Mandarin at random. Perhaps I should have just put $RANDOM_SPOKEN_LANGUAGE ;)
- clw8 11y agoActually, it's a good analogy because Mandarin's difficulty is also overblown. It's hard, yes, but I have no trouble being understood by the Chinese, and any Westerner living in China who makes the effort inevitably comes to that point as well.
- vzip 11y agoPeople say that about Mandarin, and really language learning as an adult in general, but the truth is most people don't put themselves in the situations to learn a foreign language nor do they exert the consistent effort required to acquire it. The biggest problem with Mandarin is not the tones but the fact that you can't fall back on written language to help you out with anything at all. It's like learning two difficult languages at once. If you really want to learn it, though, it's entirely possible. All it requires is a human brain and consistent effort.
- lmm 11y agoThe negative opinions were overblown. A lot of them were complaining that something that's impossible in other languages is hard or difficult to learn in Scala, or real but superficial problems. The language has plenty of warts and there are some bad libraries and tools out there, but all these things are superficial and transitory; the core is sound and I expect all successful future languages to have a very similar design. To give an equally sincere response: dynamic languages are dead, and languages without higher-kinded types are dying - they're too useful to do without, and Scala shows they're practical. We're still discovering more things you can do with Scala. I think the language we'll be using in ten or twenty years' time won't be Scala - or it will be a Scala that's changed unrecognizably from the Scala we know today. But I think that whatever language it is will have a strong type system with type inference and higher kinds and some kind of typeclass functionality and probably also traditional-OO subtyping (failing that at least Go-style delegation), will allow method calls without brackets and concise lambdas with something like "_", will have a culture of not using C libraries via FFI, and will be strictly evaluated. If you wrote a clean new version of Scala today there's a lot you'd leave out (you might end up with something that looked rather like Ceylon), but I think those things are here for good. Maybe it'll be Idris, maybe something else.
- jbooth 11y agoI think the most cutting criticisms of Scala are the ones that pointed out your exact quote here: "If you wrote a clean new version today, there's a lot you'd leave out" That said, the Scala community seems to be moving away from many of the dumber ideas (mostly along the lines of respecting readability over 'expressiveness').
- lmm 11y ago> That said, the Scala community seems to be moving away from many of the dumber ideas (mostly along the lines of respecting readability over 'expressiveness'). I don't think it's even that. I mean the symbolic method names are an unfortunate piece of community history that can't die soon enough, but other than that a lot of warts are just failed experiments or things that we now have a better way of doing or even things where a compiler flag gets you the right behaviour but the default is the bad backward-compatible way of doing things - Scala grew organically to reach the point it's at now, and it shows. If anything I think Typesafe/Lightbend listened to the critics too much and put too much effort into backward compatibility. The best thing for the language would be to remove a lot of old features, many of which are barely used in any case. On the plus side they've taken the positive step of modularizing the standard library and moving pieces out of the core.
- kailuowang 11y agoYes, scala is big and complex, but IMO, it remains by and large coherent. That might be the ultimate reason why scala developers from all kinds of different backgrounds didn't abandon it even after facing many of its shortcomings and bugs. I think scala will remain a very favorable language for any team that needs all of the following three. 1, ability to do functional programming with a strong(ish) type system 2, ability to do actor based parallel/distributed programming 3, Java compatibility
- hibikir 11y agoThe one negative that is 100% real, and is slowing language adoption, is the problems with its community. Everything else is pretty easy to fix IMO. There are a variety of 'factions' in the Scala community, with very different agendas. They disagree about which parts of the language are useful, and which ones to outright cut out. Research language focus, vs practical use in the enterprise. From easy to learn to (here, to learn Scala, first learn category theory and Haskell). From wanting a large language with batteries included, to wanting a really tiny standard library. And many in those groups not only hate each other's guts, but will very happily claim that whatever other groups are doing is not worth using under any circumstances. With a situation like that, it's very easy to find criticism about every single piece of the language, and every single company that has supported Scala in any way. Twitter Scala, Scalaz scala and Typesafe Scala are all different: I have never seen this level of division outside of the olden days of LISP. So of course everyone complains about it becoming too big: If you cut some features of the language, entire factions disappear. The complaints are purely political. So it's very easy to get ideas of doom and gloom from Scala, when it's being used in production in a lot of places, to solve very real problems. Akka, Scalding, Kafka and Spark power a lot of things, but the infighting has to end, and that will take a lot of attitude changes everywhere.
- runT1ME 11y agoI think this is even overblown. Verizon makes heavy use of Scalaz, but not all projects are done in 'scalaz' style. This works out OK. There isn't always time to onboard new folks to a fully functional style (which is the overall company culture/preference), 'typesafe scala' is certainly very pleasant to work with. That's one of the strengths of the language. You can be productive from day one writing 'java++' style scala, and slowly move to the functional side at the speed and level of 'purity' you desire.
- Homunculiheaded 11y ago"There are only two kinds of languages: the ones people complain about and the ones nobody uses." -- Bjarne Stroustrup I've seen many programming languages become popular (or fail to) over the years and this quote has always seemed to hold true. With Scala there was the first wave of people working in it that claimed that it was a grand panacea for all the problems in software (as is always the case with new languages). However, it wasn't until people started to really claim that the language was certainly doomed that it clearly was a success. In general I have found that Stroustrups quote is, counter-intuitively, a good way to determine whether the next hot new language will really stick or not. Furthermore, I have to admit that even some of my favorite programming languages fail this test and honestly these languages are extremely unlikely to ever achieve mainstream success. And if you really think about it, it's not so counter-intuitive. Programming languages don't show their real limitations until you are very deep in a large complicated project. The frustrations of the beginner are never the same as the frustrations of an expert and only an expert can really feel that a language is "doomed". This sense of "doom" is often just the realization of the once language X zealot who now sees that this new language is not a true panacea. But this moment of disillusionment is also the moment an idealized programming language has proven itself a practical one. The more people that feel this loss of faith in their favorite new language, the more people are building large, practical, real-world software projects with it.
- sheepmullet 11y ago> like clojure or f# Clojure is growing steadily. It just doesn't have rocket ship growth. It is certainly mature enough to use in production systems and many companies do. It has a few adoption issues though. The strong typing crowd don't like its dynamic typing, it's not a c-like language, and it doesn't have a large company backing it. F# has the perception in the industry as a testing ground for good ideas for C# and a second class citizen.