4 ms·
Honestly I suspect that this stems from a perception particularly among people from a non-traditional CS background that "functional programming" is intimidatin
by apendleton 9y ago
Honestly I suspect that this stems from a perception particularly among people from a non-traditional CS background that "functional programming" is intimidating, whereas Python is seen as approachable in a get-shit-done kind of way for programming novices. Python definitely did co-opt a lot of traditionally functional stuff, but did it in a way that obviates needing to know what a monad is, concern oneself with functional purity, etc., so there's a community of people now who don't care about any of that but are still familiar with some of these idioms, and this post is meant to make Rust look more accessible to them in a way that "Rust supports functional programming idioms" would not.
- supergarfield 9y agoThis is tangential to your main point, but: > did it in a way that obviates needing to know what a monad is, concern oneself with functional purity, Caring about both of these things in the context of functional programming essentially dates from the early 1990s. According to Wikipedia (I have no better source, but it matches what I know of pre-1990s functional languages), > Eugenio Moggi first described the general use of monads to structure programs in 1991. Functional programming existed before then. Scheme, an early functional language, is from the 1970s. It has basically all the FP idioms that you have in Python, is not pure, is dynamically typed, and the doc never once references monads. I'd actually say the definition of FP has shifted towards pure, category-theory oriented languages, but "traditionally functional stuff" definitely doesn't include monads.
- coldtea 9y ago>Functional programming existed before then [1991]. Scheme, an early functional language, is from the 1970s. Lisp is even older, as was touted as the de facto functional language since forever. And earlier MLs didn't have monads either. And of course, just because Moggi described monads in 1991, it doesn't mean it didn't take over a decade for them to make any kind of significant dent. (Assuming that they have made much of a dent today, which outside the world of Haskell, their explicit (as opposed to implicit) use is close to 0, anyway).
- willtim 9y agoThe problem with "traditionally functional stuff" was that one could only use functional programming for a subset of problems. Monads allow Haskell programmers to use FP to solve problems involving IO, mutation and effects. This is not redefining FP, it is extending it to a wider class of problems.
- coldtea 9y ago>Honestly I suspect that this stems from a perception particularly among people from a non-traditional CS background that "functional programming" is intimidating, whereas Python is seen as approachable in a get-shit-done kind of way for programming novices. Just people from a "non-traditional CS background"? Most CS graduates today will say the same thing with regards to e.g. Python vs Scheme or CL. >Python definitely did co-opt a lot of traditionally functional stuff, but did it in a way that obviates needing to know what a monad is, concern oneself with functional purity, etc. If you hanged around HN pre 2010, you'd seen that FP was all about Lisp (and things like map, reduce, macros, first class functions, etc), and few gave a rat's arse about "monads" and "purity" -- it was only starting to emerge in general consciousness, not dominant as it is today in FP circles.
- ansible 9y ago>: If you hanged around HN pre 2010, you'd seen that FP was all about Lisp (and things like map, reduce, macros, first class functions, etc), and few gave a rat's arse about "monads" and "purity" -- it was only starting to emerge in general consciousness, not dominant as it is today in FP circles. My recollection was a bit different. I got interested in Haskell around 2007 or so. And pre-2010, I recall encountering several articles about that on HN, though obviously there were often articles about the Lisp family.
- pjmlp 9y agoAs someone that learned FP when Haskell did not exist and Miranda papers were still fresh, this mentality that only Haskell matters as FP notion really feels odd.
- OtterCoder 9y agoI personally feel like Haskell makes a good reference implementation for functional programming. Whenever someone is explaining how to do some interesting FP thing in, say, JavaScript, I usually just ignore them and go read about how the same thing is done in Haskell, which is usually clearer and less burdened with the complexity of getting a mutable, proceedural, eager language to behave like an immutable, lazy, functional one.
- papito 9y agoYou are saying that Python is like the Bill Nye of functional programming: not really a scientist, but does make it accessible to the masses.
- vvanders 9y agoSaying someone who was a mechanical engineer was "not really a scientist" kinda does him a bit of a disservice. What made Bill Nye awesome was not only his passions for the subject matter but a solid background that let him communicate complex topics in a simple and engaging way.
- kbenson 9y agoNot to mention I don't recall him really calling himself a "scientist" in any formal sense, but my exposure to him has always been tangential. He was the "Bill Bye the Science Guy" in his original show, and afterwards I've always seem him explained as a science advocate. I mean, what's a scientist anyway? If it's someone in constant pursuit of knowledge, does a constant reading of new material to learn more count?
- icebraining 9y agoI'd say a scientist is someone who advances science, not just someone who reads results by others (unless they publish a study based on those results, like a meta-analysis or similar).
- deleted 9y ago[deleted]
- kbenson 9y agoDoes that mean the scientist that tests hypothesis that never works out, and never bothers to publish, isn't a scientist? What about the person that actually does advance knowledge, for their self, but doesn't share it? Are you not a scientist if you don't let everyone know what you found? You would conceivably still be performing science. Maybe the easiest way to define it as someone that intends to discover something new (or at least add new data to existing data, for corroboration or refutation)? I don't consider myself to be a scientist, but if I wanted to explore some topic in depth, and and started reading about it, and maybe performing my own small scale experiments to confirm what I had read, I think I would be "doing science" and I would then be at a minimum am amateur scientist.