4 ms·
I have no experience with C++, so don't know how it compares. There is some truth in the statement, in that a Scala team will often gradually adapt more advanc
by dtech 9y ago
I have no experience with C++, so don't know how it compares.
There is some truth in the statement, in that a Scala team will often gradually adapt more advanced features of the language. I wouldn't call them different languages, but rather say Scala is a "Java N+5" in that sense. Java 8 is objectively much more advanced than Java 4, but it's very much the same language and a Java 4 dev will get used to and see value in Java 8's new features. Same with Scala .
The main schism is what some people jokingly call the "compiling Haskell with scalac" crowd. They are hardcore functional programmers who value FP ideals like category theory over all else. There even is a forked Scala compiler [1] (luckily the fork and mainline reconciled, and now every change in the fork is a PR for mainline). The crowd is mostly exemplified by libraries like ScalaZ [2] and to a lesser extent Cats [3] and shapeless [4]. Some even advocate replacing the whole Scala standard library with their own. Can you at that point still say you're using Scala? You can probably read that I do not personally like that style, and consider it a detriment to the community†, so consider my statements in light of that opinion.
The main reason why I don't like the style is that Scala is not powerful enough when compared to Haskell or Julia, requiring lots of magic and boilerplate to make it work. Maybe this will ultimately be resolved, as there have been gradual improvements over versions, and this will be the final niche Scala will occupy long-term, as I have not seen any contenders yet.
† I have tremendous respect for the maintainers of the library and their skills, but I don't think the schism is healthy.
[1] https://typelevel.org/scala/ https://typelevel.org/scala/
[2] https://github.com/scalaz/scalaz https://github.com/scalaz/scalaz
[3] https://github.com/typelevel/cats https://github.com/typelevel/cats
[4] https://github.com/milessabin/shapeless https://github.com/milessabin/shapeless
- runT1ME 9y agoAs a maintainer of one of the aforementioned libraries, I think the amount of dogma the proponents of them have is a bit overblown. :) At Verizon I worked in projects that were pure FP/heavy Scalaz, as well as working in scala projects that were basically java++. Both of them were projects I had architectural input on, but depending on the teams comfort level, we decided upon what style of Scala would be used. The language is deeper than some others, and while a java programmer might be able to pick up python in a few days and vice versa, there's definitely going to be more of a learning curve to pick up 'FP style Scala'. However, we had people who had no prior Scala experience come in and dive in successfully to even our most hardcore FP projects. As long as you are OK with a bit of ramp up, the disparity between various styles of Scala are a bit exaggerated in my experience.
- mindB 9y agoCurious why you brought up Julia here? We really don't seem to have the dogmatic FP advocates you're describing here, and the language is much more oriented to an imperative style than a functional style anyway.