6 ms·
Awesome -- I'm super glad to see there's going to be some leadership by the folks from the "Scala, a language for making nice software" contingent to balance ou
by jowiar 11y ago
Awesome -- I'm super glad to see there's going to be some leadership by the folks from the "Scala, a language for making nice software" contingent to balance out the echo chamber of the "Scala, where if you don't have a graduate degree you're going to feel like a moron" contingent.
Edit: To clarify what I mean -- http://underscore.io/blog/posts/2015/06/10/an-introduction-to-cats.html http://underscore.io/blog/posts/2015/06/10/an-introduction-t... exemplifies, to me, what is wrong in Scala-land. If Abstract Algebra is prerequisite knowledge for tools I 'really should be using', something has gone horribly wrong.
- ane 11y agoThat's... actually simple stuff. Have you had a look at Scalaz? Or Shapeless? The whole point of Cats is to solve the overkill of Scalaz, where you sometimes do need algebra, by making abstractions simpler and safer to use. Remember, nobody is forcing you to use this wizardry in Scala. You can write it in a simple, matter-of-fact better Java style; or you can leverage the power of abstractions to create something advanced. You don't have to indulge in applicative functors and coproducts just because. Use them wisely, if at all!
- incepted 11y ago> Remember, nobody is forcing you to use this wizardry in Scala. We heard the same thing with C++ 20 years ago and see where it went...
- jowiar 11y agoThat's... actually simple stuff. If you have the prerequisite knowledge. Most people don't. And then somehow it always manages to lead to codebases that look like `a \~=>>> b`. nobody is forcing you to use this wizardry in Scala Except that sorting out things in open source code absolutely does entail dealing with this. With JS, Python, or Java, I can dive into just about any open-source codebase, and at least get some clue as to what's going on. I think a large part of why Scala's open-source situation is pretty awful is that so many Scala codebases are a bunch of dudes waving their [censored]s around, using libraries that consist of inscrutable squiggles and meaningless terms, just to demonstrate how smart they are. You can write it in a simple, matter-of-fact better Java style; or you can leverage the power of abstractions to create something advanced. This is a false dichotomy. When I look at code written by Martin Odersky, I don't see people trying to brag about their grad degrees through their code. And the reason this project makes me so happy is that it really feels like "the good people" of Scala reclaiming the community from the LambdaBros.
- eastWestMath 11y agoIf it's something a sophomore with no background beyond calculus can handle, it is simple stuff. It's ridiculous that treating software engineers as though they have a bachelor's degree in STEM makes you a "LambdaBro."
- jowiar 11y agoIt's disingenuous to say that this is included in a "bachelor's degree in STEM" -- it's part of a specific course of study. Part of the reason this issue pisses me off so much is that I have a degree from one of the top CS programs in the world. I was definitely more of a theory than a systems person. And yet it still feels like a pile of unnecessary ego-stroking gibberish. I feel comfortable saying most people who make software are less-experienced in this area than I am. When I run into this, I can at least say: "This is bullshit", and not feel the imposter syndrome of "It's just me -- I'm not smart enough for this" that I imagine most people feel. Beyond that, functional programming is, by and large, easier than imperative programming. I love writing Scala -- It's honest about side effects, honest about concurrency, and has one of the better type checkers around. And I'm sick of seeing people try to "fence off the riffraff" by raising the barrier of entry to the Scala community.
- eastWestMath 11y agoI didn't say it's included, I'm saying anyone capable of a bachelor's degree in STEM is capable of picking it up. And if you think you were a "theory" person, but don't know the basics of abstract algebra, then you have an incredibly naive idea of what theoretical computer science entails. Hint: there's a lot of abstract algebra.
- bgar 11y agoBeyond that, functional programming is, by and large, easier than imperative programming. You say this but dislike even a bit of abstract algebra? I see a conflict here; anyone that likes FP, moreso, typed FP, should be familiar with simple concepts like monoids, functors, and monads. Honestly, I don't understand how someone can write in a functional language and not know these concepts.... they're literally Haskell 101. That doesn't even scratch the surface of what FP can do...
- jghn 11y agoI usually view stuff coming out of Underscore, including this, as being in the former camp
- domlebo70 11y agoUnderstanding for loops and if statements are pre requisites for many tools. Why is understanding some basic algebra, completely unreasonable. Cats and Scalaz allow you to represent things cleanly - surely that's a win. Can they be abused? Yes, of course. But please don't throw the baby out with the bathwater.
- incepted 11y ago> Understanding for loops and if statements are pre requisites for many tools. Why is understanding some basic algebra, completely unreasonable. That's a slippery slope. When you are staring at a huge stack of accumulated knowledge, you need to decide when you can start ignoring the details past a certain level. It's not required to know assembly to write code in a modern language, but it helps. It shouldn't be required to know category theory to write code in a modern language either.
- deleted 11y ago[deleted]
- domlebo70 11y agoI hear you. I wouldn't say you need to understand any cat theory. Just be able to read types, and you are fine. Problem is, people aren't used to that,
- AzzieElbab 11y agoBut cats and scalaz are based/implement category theory concepts. You would only use either library if you understand what they do and why you need them. Otherwise, it is like using OpenCV to search through database and then complain about complexity and overhead
- jowiar 11y agoThe problem, though, is the context. The article I linked presented the assorted category theory tools as things the community 'really should be using'. And doing that has an effect, in that it increases the number of concepts that a person needs to grok to be a functioning member of the community -- to be able to dive into open-source code, discuss code with other participants, etc. Adding concepts should only happen when it's clear that the benefits are larger than the costs -- not just for the individual, but for the community. It requires far less knowledge to dive into a Ruby or JS codebase than it does a Scala codebase. And adding "category theory" as a necessary prereq for being part of the Scala community just makes things incredibly exclusive.