Monads and Gonads

  Рет қаралды 145,837

Google TechTalks

Google TechTalks

11 жыл бұрын

Google Tech Talk
January 15, 2013
(more info below)
Presented by Douglas Crockford
ABSTRACT
The wonders of monads are finally revealed without resorting to Category Theory or Haskell. It turns out that monads are trivially expressed in JavaScript, and are one of the key enablers of Ajax. Monads are amazing. They are simple things, almost trivially implemented, with enormous power to manage complexity. But understanding them is surprisingly difficult, and most people, once they have that ah-ha moment, seem to lose the ability to explain them to others.

Пікірлер: 170
@LukeVanIn
@LukeVanIn 8 жыл бұрын
GoogleTechTalks: The only multi-billion dollar company sponsored talks by leading experts, filmed on VHS tape in a damp parking garage.
@kalekold
@kalekold 4 жыл бұрын
How it should be.
@WMTeWu
@WMTeWu 9 жыл бұрын
I think The Curse is holding...
@csbnikhil
@csbnikhil 2 жыл бұрын
Hahaha, but sad. I guess people never really understand what it is, just that they get used to using it. This could explain the existence of that curse.
@robertoprince6804
@robertoprince6804 8 жыл бұрын
Doug said in a Google Talk "...go to Bing and Google for..."
@NicholasShanks
@NicholasShanks 5 жыл бұрын
He's definitely just trolling the audience.
@driziiD
@driziiD 3 жыл бұрын
i'm convinced that douglas crockford has figured out programming, this, and his frontend masters course have convinced me of this
@emstudios14
@emstudios14 2 жыл бұрын
Each time I listen to Douglas Crockford, I always get more inspiration on JavaScript. This is a brilliant tech talk on Monads.
@MrMirville
@MrMirville 2 жыл бұрын
Monads transform anybody presenting them into a guru : bad, bad, bad. I would give them another name : serializable, or flowable types, as they can occur or not, as they can occur several times with different values. You can eat and make burritos without learning Spanish but knowing a little but of Spanish does help a lot to meet those who make them best.
@emeka1978
@emeka1978 11 жыл бұрын
Gotta love this man. A real living legend.
@danielearwicker
@danielearwicker 9 жыл бұрын
10:51 'M' means 'large plastic bag containing...'. 't' means 'small bag of peanuts'. 'u' means peanut. So 'M t' means 'large plastic bag containing small bags of peanuts' and 'M u' means 'large plastic bag of peanuts'. The thing in the middle '(t -> Mu)' means 'open a bag of peanuts and empty it into a big plastic bag'. So the whole thing says: "take a large plastic bag containing many small bags of peanuts, open each bag of peanuts and empty it into another large plastic bag, and you will end up with a large plastic bag full of peanuts." No mention is made of what happens to all the empty leftover bags, but don't worry: they are automatically recycled (unless you're using C/C++).
@ksysinfo3465
@ksysinfo3465 8 жыл бұрын
+Daniel Earwicker Brilliant!This is the single must intelligent and comprehensible thing anyone has ever said about monads. Of course, you do know that volatilizing the the first Crockford law of monad pedagogy (maybe) considered harmful.
@ulilulable
@ulilulable 7 жыл бұрын
Or, in the case of the reverse state monad: "Open the bag waiting for peanuts and get its contents from the future. Then you will have had a small bag of peanuts to begin with."
@panesofglass
@panesofglass 9 жыл бұрын
The notion that the IO monad is useless is incorrect for Haskell, though probably true for an untyped language like JavaScript. The IO declares that the computation performs an IO side-effect, and any other computations need to take this into account.
@odw32
@odw32 9 жыл бұрын
Ryan Riley Crockford explaining monads is like a taco expert explaining buritto wraps. "Burittos are just like tacos, but with a soft shell". Completely wrong in the eyes of someone who likes burittos, but a helpful pointer for a taco lover who has never tasted a burrito and desperately tries to imagine the concept. I think his perspective on the subject is valuable, although his lack of humility and fanboyism is quite off-putting sometimes.
@JeremyAndersonBoise
@JeremyAndersonBoise 8 жыл бұрын
Orian de Wit As a taco lover, this talk is relevant to me, can you explain what is a burrito? I agree with the arrogance part, but every technology needs a few fanatics or it won't gain traction, so I forgive that. This is great for those of us new to functional programming.
@LuisFernandoValenzuela
@LuisFernandoValenzuela 7 жыл бұрын
Orian de Wit real tacos don't have "shells" but a tortilla, which is soft. but I get your point, I don't want to start a pointless flame war😂
@nyx211
@nyx211 6 жыл бұрын
So basically, a monad is a box containing a value. You can pack a value into a box (return function) and you can unpack a box, transform the value in some way then pack the result into another box (bind function).
@griof
@griof 6 жыл бұрын
the best way I understand monads not using maths is: "A closed batch of code in which you have user defined functions going from pure functional into the monad and one single function to compute things from out of the monad within the monad (Bind function)". Simpler words: "Take a monadic value -> Bind it in order to "extract" (actually compose) the non-monadic value -> Use a function to make some computation on this value and be sure you function ends by wrapping the result into the monad -> Now you have a monadic value. Repeat from step one 'till you do all computations you desire" Not so dificult.. isn't it? I know I haven't talk about the return function or laws or whatever complicated concept. I got to explain this to my workmates, do you thing It is a good way to do so?
@tiny4nick
@tiny4nick 10 жыл бұрын
Promises were known to be nomads much time before Douglas realized it. For example, Don Syme implemented async computation in F# in nomadic style and he said he adapted the idea from Haskell.
@MrSimax99
@MrSimax99 6 жыл бұрын
nomads?
@HumanoidTyphoon91
@HumanoidTyphoon91 7 жыл бұрын
15:46 I want all my global level stuff to be white... TRIGGERING INTENSIFIES!
@hotbelgo
@hotbelgo 10 жыл бұрын
Wow - that was tough, but lovely to hear how modern JS remains
@rudevich
@rudevich 10 жыл бұрын
He talks not about programming without highlighting, he shows a really interesting convept of highlighting - scope-oriented highlighting.
@JonWiden
@JonWiden 11 жыл бұрын
Definitely one of the most interesting tech-talks I've seen in a while - very eye-opening inspiring stuff! One the concurrency part: I guess games in their essense must classify as turn based systems - Pondering how (if) one could use this approach for building a multi-threaded asynchronous game engine...
@christopherthorn8356
@christopherthorn8356 9 жыл бұрын
"Caching is a deal with the devil: we have something which is likely to be wrong, but is sometimes right, and we don't know when it transitions from being right and wrong. With memoization, that never occurs: once it's memoized it's right and it will always be right" - D.C. 5:02
@rostislavsvoboda7013
@rostislavsvoboda7013 10 жыл бұрын
My advice: Going through some more monad-related material definitely helps to appreciate this talk! Really.
@RogerKeulen
@RogerKeulen 11 жыл бұрын
Yep, great talk ! Very clear and understandable.
@jamma246
@jamma246 4 жыл бұрын
On Haskell: 8:10 _"And it kind of works.... except it's kind of hard"_ Is it really that hard though, or is it just a bit foreign to people who have learned to program in a different way? I found the elegance of the language a decent pay off to invest time into, and once it clicks it's really satisfying and not actually that hard to program in.
@danp9885
@danp9885 10 жыл бұрын
oh. my. god. this is so amazing, just.. wow! you guys! wow!
@davorb
@davorb 11 жыл бұрын
This was a really great talk.
@jingoringo
@jingoringo 3 жыл бұрын
The natural response to this talk is: do u have the COGONADS to understand COMONADS?!
@holdenmcgroin8917
@holdenmcgroin8917 4 жыл бұрын
I really admire those who understand this guy! Must be some kind of genius!
@lepidoptera9337
@lepidoptera9337 2 жыл бұрын
I admire those who can explain complicated topics easily. This is not the guy for that.
@lepidoptera9337
@lepidoptera9337 2 жыл бұрын
@FichDich InDemArsch Not sure why it's even a concept we need.
@lepidoptera9337
@lepidoptera9337 2 жыл бұрын
@FichDich InDemArsch So basically it's all just a psychological inability to admit that computers are not executing pure functions? Why are we wasting time on such personal psychoses?
@Verrisin
@Verrisin 6 жыл бұрын
60FPS in 2013? damn, talk about being ahead of time! Awesome. I noticed right away and was very pleasantly surprised! - ok, I'm 40s in, now let's see what is it actually about. XD
@KevinBeal
@KevinBeal 10 жыл бұрын
Is it really true that "grown up programmers" don't use syntax highlighting? Or is it that dinosaurs learned programming before syntax highlighting was popular? I'm not a great programmer, but I can find the code I want much faster with highlighting. And maybe I'm just a n00b or something, but I actually like it being fun & colorful :)
@aidanprattewart
@aidanprattewart 4 жыл бұрын
I mean, I judge my code off of how pretty it looks, so if you're a noob, I don't know where that puts me.
@ryanleemartin7758
@ryanleemartin7758 3 жыл бұрын
minimal highlighting is good. fruit salad highlighting is noisy
@KevinBeal
@KevinBeal 3 жыл бұрын
I've since made my editor only highlight strings and comments to differentiate anything that could look like code from actual code. I like it so far.
@epgui
@epgui Жыл бұрын
@@KevinBeal There's nothing wrong with syntax highlighting. Do whatever makes you productive.
@AlecTaylor6
@AlecTaylor6 10 жыл бұрын
Think I understand the term now, so "Monad" basically refers to function workflows utilising lexical closure?
@TheWarriorScholar
@TheWarriorScholar 7 жыл бұрын
this dude is an OG fosho!
@DannyGratzer
@DannyGratzer 10 жыл бұрын
What a monad is (and this talk did a not so nice job explaining) is a type/object/whatever with 2 operations. `bind` which works by taking a function `a -> m b` and the monad object `m a` and combining them to produce a new monad object `m b` and then another function `inject` which sticks an arbitrary object `a` into a monad `m a`
@ASmallTurnip67
@ASmallTurnip67 9 жыл бұрын
Helpful talk, but at 26:06 division by zero in JavaScript produces Infinity, not Nan...
@codyromano7868
@codyromano7868 10 жыл бұрын
"I don't use syntax highlighting because it's for kindergarteners and I'm an adult." This comment doesn't offend me, but I can see how it would alienate many developers. Crockford should've been humble and considerate of his audience instead of adding fuel to a meaningless flame war about which editor or coding style is "correct."
@JLRishe
@JLRishe 9 жыл бұрын
If he wasn't telling people what the One True coding style is, he wouldn't be Douglas Crockford.
@codyromano7868
@codyromano7868 9 жыл бұрын
Fair enough :)
@Skyturnip
@Skyturnip 9 жыл бұрын
He's a dick. Pure and simple. Implying that people who use syntax highlighting are 4 years old. Then he goes on to say how great highlighting is... Utterly dumb guy
@Skyturnip
@Skyturnip 8 жыл бұрын
***** " he takes himself too seriously, thus offending those who take their-selves too seriously." Troll
@Skyturnip
@Skyturnip 8 жыл бұрын
***** "absorb the info" ... Haha. You're clearly a robot.
@dermuiker
@dermuiker 10 жыл бұрын
oh god i am noob
@JonasAlmeida0
@JonasAlmeida0 10 жыл бұрын
link to Crockford's github project: github.com/douglascrockford/monad
@MoonWho78
@MoonWho78 11 жыл бұрын
Spoken like a true boss
@someman7
@someman7 11 жыл бұрын
Everyone can use a computer, and some of those can program, but to be a computer scientist, you need math, because it is - like most other sciences when you go deep enough - based on math. So, it's like saying statistics or physics is hijacked by mathematicians. As for Linux, it only matters for efficiency on which level you abstract things (HW, OS, or language). I'm talking about ease of use. Finally, I'm not defending JS which isn't a lang which I particularly like, let alone a functional one.
@iraasta
@iraasta 9 жыл бұрын
Erlang had lexical closures ages before JavaScript. Even ages before NetScape existed
@edgeeffect
@edgeeffect 8 жыл бұрын
+Krzysztof Wende Yes... but Erlang isn't really a "mainstream" language, is it?
@karolrvn
@karolrvn 4 жыл бұрын
How about the Either monad?
@someman7
@someman7 11 жыл бұрын
My point is, concept of monads as presented here seems simple. I find it hard to believe that the only source of complexity (assuming one is familiar with functional programming) is (category) theory. Programmers don't need to study the theory of lambda calculus to be able to apply it, once it's explained to them another way, so I find it hard to believe that the same could've been done for monads but wasn't until Crockford. P.S. Apparently sequential execution can also be done using CPS.
@shmore
@shmore 11 жыл бұрын
That was fantastic.
@rostislavsvoboda7013
@rostislavsvoboda7013 10 жыл бұрын
Because javascript is much much more that just the stuff that makes a web page looks good.
@TakanashiYuuji
@TakanashiYuuji 11 жыл бұрын
I'd like to know in which direction you think programming languages will evolve. Did you watch the interview on channel9 he mentioned? Google/Bing for: "hewitt actor model channel9" and you'll find it.
@dragoran149
@dragoran149 3 жыл бұрын
Just looks like the decorator pattern with fluent interface to me...
@FreiheitKampfer
@FreiheitKampfer 11 жыл бұрын
Where are the GTAC 2012 vids?
@someman7
@someman7 11 жыл бұрын
19:00 is method chaining. I find it hard to believe that monads are simply objects/closures.
@Vectorh
@Vectorh 7 жыл бұрын
I am still confused. This talk explains how we've been using monads and not knowing it, but I don't understand why I need to KNOW I've been using monads. In fact this makes them seem rather unremarkable and unimportant. Why again do we actually NEED them or need to know we're using them? When is it important to think in terms of Monads first, rather than accidentally using them?
@MrTyler918273
@MrTyler918273 6 жыл бұрын
Yea this talk was not very helpful. The problem is that he is trying to show monads through example (which I agree is necessary to get a feel for them) but then he gives examples that seem trivial (especially in a language like Javascript). He was mostly showing the identity monad, which is just normal function composition. To appreciate monads I agree that you don't need to know how to program in Haskell, but you do need to understand what pure functional programming is. That means no mutable state, no side effects, etc. So here is my explanation of monads for those people: Remember that the power of functional programming is all about the composition of functions. Monads are kind of a way to supercharge function composition so that it does something extra as well. The bind function (>>= in Haskell) is just this supercharged function composition with added behavior. Each type of monad is like a context that you can apply to a computation to tell it what that extra behavior should be when things are composed using bind. For example in the Maybe monad the context is "this computation could fail (eg. dividing by 0)". The added behavior, then, when we compose these functions using bind is "If any of these computations fail, the whole thing fails". This allows you to quickly assemble a long string of computations without having to check for nulls or errors at every step. In the List monad the context is "this computation could produce any number of results". The added behavior when we compose these functions using bind is then "take all of those returned values and pass them all through the next function". This allows you to model non determinism or simply string together a bunch of growing (or failing, it could return 0 results) computations without the need for nested looping or explicit recursion. In the State monad the context is "this computation relies on a state that might change after each computation". The added behavior when we compose these functions using bind is then "thread that state (which might have been changed) through from each computation to the next one for me". This allows you to do computations as if there was some global, mutable state while still remaining pure. In the IO monad the context is "this computation has side effects/is impure". The added behavior when we compose these functions can kind of be thought of as "I understand that this result is impure so go ahead and pass it along to the next function anyway". This allows you to identify and acknowledge exactly what parts of your code are impure and separate it from the pure stuff. So in general these things can be done without monads, but using them abstracts away a lot of boilerplate and confusing patterns. When you see a new monad, just think "what is the context of one of these computations" and then "what is the extra behavior that is added to composing these kinds of computations". Also, if you can think of another context like this and some added behavior that would go along with composing functions of that type, then you can write your own monad. One more thing that makes monads especially useful in actual functional languages like haskell is that haskell has a special notation for monads called do notation. This idea of passing the result of the previous computation to the next using bind is a way of sequencing computations in order and do notation allows you to write functional monadic code in a very procedural way. Under the hood, though, it is still functional.
@CoreyMinter
@CoreyMinter 10 жыл бұрын
apologies for switching from 'bicycle shed' to bicycles. but you could still get what I mean.
@CosmiaNebula
@CosmiaNebula 4 жыл бұрын
After hearing this talk my ovaries are now fully monadic.
@jingoringo
@jingoringo 3 жыл бұрын
perhaps they are comonadic?
@Rainbow-lj5pp
@Rainbow-lj5pp 9 жыл бұрын
``Go to Bing and search for 'monad burrito'...'' LOL!
@rostislavsvoboda7013
@rostislavsvoboda7013 10 жыл бұрын
I paused every time I didn't get it and now I do get it :)
@WMTeWu
@WMTeWu 10 жыл бұрын
My piece of advice for confused ones: Read "Learn You a Haskell for Great Good!" chapters 11 - 13 instead trying to appreciate this talk
@nerdy_cat
@nerdy_cat Жыл бұрын
IT HAD TO BE SAID...
@dovh49
@dovh49 4 жыл бұрын
JS now has generator functions so now we can have the do notation.
@dovh49
@dovh49 3 жыл бұрын
@@agenticmark Yeah, I've just been using promises for monads actually. And I even created a validation system with promises github.com/jon49/MealPlanner/blob/master/src/app/utils/validation.ts#L74 It would be interesting to see how to make generators without function generators.
@stozwald
@stozwald 11 жыл бұрын
He says that JavaScript was the first mainstream language to have closures, but Perl got there a couple years earlier. I wonder if he doesn't know that Perl has closures or he doesn't know that it's mainstream. I do get tired of language partisans (to include several of Perl's bigger cheerleaders) acting like they don't know there are any languages besides C (too low-level), Lisp (too weird, I suppose), Java (too verbose), and whatever their personal fave is.
@clumma
@clumma 11 жыл бұрын
Over 10 minutes of analogies about how easy we're going to make monads; 10 seconds on the slide containing all the meat.
@jamma246
@jamma246 4 жыл бұрын
9:00 _"In other to understand monads, you first need to learn Haskell and Category Theory"_ But does anyone actually say this? I've essentially never see people say this seriously. What's true is that it's worthwhile learning Haskell and Category Theory, so you probably should. I haven't seen many people say that's the only way you can learn about monads though. This whole "monads are hard", "monads require you to be a genius mathematician",... blah blah blah, that people recite endlessly has become such a silly and pointless cliche. If these "instructional talks" spent less time going on about ivory towers, how hard monads are, how everyone is claiming you need to be a category theorist to understand them (which no one is) and just got to the straightforward abstraction of the concept, with simplified discussion and then practical examples, people would actually learn about them way faster. We don't need this boring 15 minute fluff in every introduction to them. It's just weird.
@trucid2
@trucid2 10 жыл бұрын
Who is forcing what and on whom? Giving a presentation is not force, but the opposite.
@echatav
@echatav 11 жыл бұрын
A monad is a monoid object in the monoidal category of endofunctors. Duh.
@lennyhome
@lennyhome 10 жыл бұрын
I like Crockford as a speaker and I consider myself to be a Crockfordian in many respects, but this time he got bamboozled by Haskell people. Monads are coroutines. Support for coroutines is available for almost any programming language except Java.
@rebelg
@rebelg 7 жыл бұрын
Nope. Coroutines are monads. Monad is a more general concept than a coroutine.
@yaccz
@yaccz 10 жыл бұрын
Am I the only bothered by the hand on the wall?
@monadbornslippy
@monadbornslippy 11 жыл бұрын
it means "basic unit of reality" (google leibniz)
@someman7
@someman7 11 жыл бұрын
I've made several, which was very gratuitous of me, seeing what I was given.
@epgui
@epgui Жыл бұрын
If you're trying to understand monads, look for Graham Hutton's videos instead. You probably don't *need* to learn haskell to understand monads, but I think learning both at the same time is actually easier than trying to learn monads in the context of javascript.
@rostislavsvoboda7013
@rostislavsvoboda7013 10 жыл бұрын
And what's wrong about that M&G in JS? It's like you say "I won't use that bicycle shed because of it's color".
@Shanthakumar
@Shanthakumar 9 жыл бұрын
Eventually it makes sense o_O
@CoreyMinter
@CoreyMinter 11 жыл бұрын
Fine, but if the title was "Monads and Gonads.js" we could have known this was going to be entirely based on Javascript before getting so far into the presentation.
@mwgkgk
@mwgkgk 7 жыл бұрын
I have a thing for older men talking about functional programming
@agustinbs
@agustinbs 10 жыл бұрын
11:50 if you have the "huevos", you can :D
@ArihantAV
@ArihantAV 8 жыл бұрын
28:39 : "Go to Bing and Google for..."? :D
@alexnezhynsky9707
@alexnezhynsky9707 5 жыл бұрын
Correct.
@idemchenko-js
@idemchenko-js 5 жыл бұрын
This is yet another failed explanation of monads. Sorry. But it is. Monad is not an object. It is not an object with a bind method. This is an idea, first of all. An interface, if you wish. Monad is a way of describing a sequential computation within a certain context. This is a mathematical structure, first of all. Category theory helps a lot to remove the noise of the poorly designed language and look into a pure structure. I would disagree with the statement that Haskell doesn't always go right. GHC points exactly at the problematic point and sometimes may even suggest a solution. The message is not opaque, it says "argument a1 expected to have X type but it is of a Y type". A type system is the set of constraints on top of your untyped language that guarantees the correctness of your code.
@alexk6745
@alexk6745 5 жыл бұрын
Completely agree that this is a failed explanation. The main problem is that he even has not explained a problem. The 2nd problem is just he assumes a lot that people have understood him and continues to talk further loosing the people. No one in auditory asks the questions as no one wants to look stupid. I watched this kzbin.info/www/bejne/kJnYeXaqh5irp5o video and I lost at 36.40. From this video I understood they wanna set of chained operations on an object. The only thing is not clear to me why is in RxJS in v 6. decided to go away from chaining and created the .pipe method ?
@idemchenko-js
@idemchenko-js 5 жыл бұрын
@@alexk6745 my assumption would be that '.pipe' puts emphasis on pure functions, rather than '.prototype' and 'this'. Once I took a glimpse at how would one build a custom operator. I am far away from being an expert at this, but it looked like a simple function composition. To be honest, I always try to avoid 'this' in JS as much as possible and from this premise '.pipe' looks fine to me.
@Maarttttt
@Maarttttt 10 жыл бұрын
What a load of Crockford.
@xekind
@xekind 11 жыл бұрын
28:38 "go to bing and google for monad burrito"
@mullikine
@mullikine Ай бұрын
Haha we have tree-sitter now. 15:22
@teckyify
@teckyify 11 жыл бұрын
I don't think that he really wanted to talk about Monads, he actually took that topic for marketing reasons to attract people and talk about concurrency.
@TakanashiYuuji
@TakanashiYuuji 11 жыл бұрын
Wow, Godwin's law so soon? I guess we're done here. I was hoping for a constructive discussion. This is why we can't have nice things.
@nugapa3
@nugapa3 11 жыл бұрын
He he, kids, play with your dynamic languages inside a browser. Thank God js is localized there. Just imagine a welding robot giving you a promise that it won't weld you. But then it says "I lied". Or a nuclear how about fission reactor's promise ? or just imagine Douglas convincing Linus to switch to BEAUTIFUL and POWERFUL monads for doing IO or implementing syscals :) LOL
@avtaras
@avtaras 10 ай бұрын
Nobody is going to talk about the title?!
@lennyhome
@lennyhome 11 жыл бұрын
Programming languages, like everything else, should evolve on the basis of necessity. Trying to force some concept of how you would like things to be against how things really are, known to lead to disasters. You might be aware of a certain guy who wanted all human beings to be tall and blonde and what the result of that was.
@Mrgreatestfreakout
@Mrgreatestfreakout 11 жыл бұрын
he is more famous than James Gosling now =*)
@basarat
@basarat 11 жыл бұрын
Tough crowd. Didn't hear much laughter at the jokes. Much more lively crowd here: /watch?v=dkZFtimgAcM
@tedmosby9409
@tedmosby9409 6 жыл бұрын
am so pro i cant make a txt editor with colors
@shweddedglowy
@shweddedglowy 10 жыл бұрын
First 12 minutes: Waste of time. 14:29: "Macroids" seem like an entertaining abstraction that just adds complexity comparable to Haskell's typeclasses. But then he surprises by showing that this enables some really neat syntax found in a lot of JavaScript libraries. jQuery is monadic? Cool! Unfortunately, he ends with the same fallacy as when you teach monads in Haskell: He ends up explaining a lot of syntactic convenience, rather than focus on the essential. He changes the subject 29 minutes in.
@HueyTheDoctor
@HueyTheDoctor 11 жыл бұрын
Arthur Young led me here.
@blacktoothgriner
@blacktoothgriner 5 жыл бұрын
Troll game is fire
@JuanMendes
@JuanMendes 11 жыл бұрын
Go to bing and google for monad burrito for the win
@existentialsmut
@existentialsmut 11 жыл бұрын
The title of this talk should be revisited :(
@zetaconvex1987
@zetaconvex1987 11 жыл бұрын
Too much background noise.
@WMTeWu
@WMTeWu 10 жыл бұрын
Very poor explanation of Monads. It confused me more then it helped.
@someman7
@someman7 11 жыл бұрын
Why ignorance? It's math. The reason functional programming is important nowadays is scalability. If you continue using imperative programming languages in the concurrent age, I'm sure you're going to have a harder time with that, than I do with my side-effect evasion.
@mousedresden604
@mousedresden604 11 жыл бұрын
Why is a Javascript guy doing monads?
@UnproductiveSunbeam
@UnproductiveSunbeam 11 жыл бұрын
126635 subscribers and 28220043 video reproductions but Google Tech Talks doesn't have an avatar, come on guys, get your game together
@2002budokan
@2002budokan 3 жыл бұрын
1. First write a mainfesto about the virtues of immutability. 2. Then invent mechanisms for escaping immutability. If there is a nonsense in the programming world for years, it is paradigm bigotry. If you live in a hybrid world, you should speak a hybrid language.
@jacksnow1381
@jacksnow1381 6 жыл бұрын
The curse is broken thanks!
@chrisf1600
@chrisf1600 8 жыл бұрын
I gave up after 25 min of this talk, none the wiser. The curse strikes again. I then scrolled down to Danny Gratzer's 2-line comment below and the concept clicked IMMEDIATELY. Thanks a million Danny ! I find it incredible how so many smart people do such an awful job explaining such a simple concept. I'd also like to mention that I found the title of the talk offputting, as well as the throwaway comment about huevos around the 12 min mark. Programming is a heavily male-dominated field, and stuff like this just adds to the feeling that it's a club for boys. "You too can learn about monads, if you've got the balls".
@robertoprince6804
@robertoprince6804 7 жыл бұрын
Hi Chris, you said "Programming is a heavily male-dominated fiel", and that is true, but there is not genitalia testing on the door, if women want to program they just have to pick a book about it or visit any number of online resources. Douglas Crockford is an old fart, by also his very smart and his contribution on creating JSON and educating people about programming is very important. And just to finish, it is the case that on any engineering-related subject men are the bast majority, but at least on the west all women are free to pick their major/career and they are very much welcome to join the ranks of the engineers.
@nickreilingh1381
@nickreilingh1381 7 жыл бұрын
So do you disagree with the notion that the language Crockford uses here might make women feel less welcome in the technology community?
@robertoprince6804
@robertoprince6804 7 жыл бұрын
Yes Nick, get over it, don't be so sensitive, your feelings are not that important
@danielearwicker
@danielearwicker 7 жыл бұрын
I think choice of language is important and Nick raises an important point. However Crockford might be thinking a few steps ahead. He used the word "gonad", which actually refers to the ovaries in the female as well as the testes in the male, so it is entirely inclusive language. He also uses the term "huevos", which is slang for testes but literally means "eggs", the very type of cell produced by the ovaries ("huevos" is derived from the latin ova meaning eggs, as is "ovaries" of course). I suspect he intentionally chose these terms as satirical joke on gendered language.
@nickreilingh1381
@nickreilingh1381 7 жыл бұрын
You just did a tu quoque by implying a loaded question making an ad-hominem attack on your own strawman. Just to be clear, if a woman in tech says "I feel unwelcome in the programming community because the use of gendered slang and lack of inclusivity make it seem like a boys club," your answer is: "Your feelings are not important, and by the way we're not checking genitalia at the door so there's no problem." So basically, programming is a heavily male-dominated field, and you see no issue with this. But it's very important that we know how smart Douglas Crockford is.
@edgeeffect
@edgeeffect 2 жыл бұрын
Excellent clickbait title Douglas! :)
@nerdy_cat
@nerdy_cat Жыл бұрын
So, syntax highlighting is for kinder gardeners, but a pair of hanging parenthesis are confusing to the reader? Sometimes Crockford's way of thinking makes no sense to me.
@bertvv
@bertvv 11 жыл бұрын
He lost me on the axioms slide...
@lennyhome
@lennyhome 11 жыл бұрын
Just check out Wikipedia's article about Lisp. And you're putting words in my mouth also. I've never said that "hiding complexity does nothing practical". What I'm telling you is that people smarter than you, me and the guy in this talk, already found out that functional programming in practice fails to hide anything.
@TakanashiYuuji
@TakanashiYuuji 11 жыл бұрын
> This talk is about doing absolutely nothing in a convoluted way. This talk is about hiding complexity. Complexity inevitably always happens, monads are way to deal with it. His reasoning is that monads are a tough subject to explain, but at the same time we're already using them. If your argument is that: hiding complexity does nothing practical, in the same way that refactoring doesn't add new features. I would agree with you, but you are also missing the point.
@felixlipski3956
@felixlipski3956 3 жыл бұрын
God damn this guy hates Haskell
@lennyhome
@lennyhome 11 жыл бұрын
Right. Try to make a point next time you write something.
@anticipayo
@anticipayo 4 жыл бұрын
I cant think of anything dumber than explaining monads with js
What is a Monad? - Computerphile
21:50
Computerphile
Рет қаралды 587 М.
Get value out of your monad - Mark Seemann
58:59
NDC Conferences
Рет қаралды 24 М.
Điều cuối cùng mẹ có thể làm cho con || Sad Story  #shorts
01:00
1 класс vs 11 класс (рисунок)
00:37
БЕРТ
Рет қаралды 3,3 МЛН
Угадайте концовку😂
00:11
Poopigirl
Рет қаралды 4,2 МЛН
JavaScript: The Good Parts
1:03:48
Google TechTalks
Рет қаралды 583 М.
What the Heck Are Monads?!
21:08
ArjanCodes
Рет қаралды 66 М.
Robert C  Martin -  Functional Programming; What? Why? When?
58:27
Category Theory for the Working Hacker by Philip Wadler
50:52
Lambda World
Рет қаралды 90 М.
Running a startup on Haskell
50:23
jasonofthel33t
Рет қаралды 110 М.
The Absolute Best Intro to Monads For Software Engineers
15:12
Studying With Alex
Рет қаралды 536 М.
The Gnostic Monad
6:29
Two Old Dudes Production
Рет қаралды 16 М.
Adventure with Types in Haskell - Simon Peyton Jones (Lecture 1)
1:33:37
Brian Beckman: The Zen of Stateless State - The State Monad
1:06:59
jasonofthel33t
Рет қаралды 47 М.
Такого вы точно не видели #SonyEricsson #MPF10 #K700
0:19
BenJi Mobile Channel
Рет қаралды 1,7 МЛН
Секретная функция ютуба 😱🐍 #shorts
0:14
Владислав Шудейко
Рет қаралды 2 МЛН
Интел подвинься, ARM уже в ПК!
14:06
PRO Hi-Tech
Рет қаралды 156 М.
Распаковка айфона под водой!💦(🎥: @saken_kagarov on IG)
0:20
Взрывная История
Рет қаралды 10 МЛН