3 ms·
I've heard the standard C++ criticism that everyone programs in a different subset of the language leveled at Scala. How true do you think that is?
by nordsieck 9y ago
I've heard the standard C++ criticism that everyone programs in a different subset of the language leveled at Scala. How true do you think that is?
- dtech 9y agoI 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.
- pjmlp 9y agoThe irony is that can be applied to any multi-paradigm language, but since many are afraid of C++, only it gets the fame. To pick on my favourite scripting language, Python, you can go from "I just learned to print hello world" style up to "look at me, master of meta-programming with multiple inheritance and dynamic code generation". And this not counting all the changes that have happened throught all Python releases, with semantic impact how the code gets written. Yet many assume it is a "simple" language.
- jjtheblunt 9y agovery true