Пікірлер
@wanderlustfunk
@wanderlustfunk 2 ай бұрын
i was numb through this, he really got me with that 1 + 0 = 0 + 1
@Masmikh
@Masmikh 3 ай бұрын
This was the best VO talk I have ever seen. After watching and reseaching countless hours on the subject I can finllay get my head around it. Thank you!
@yarilich544
@yarilich544 3 ай бұрын
Enjoyed the talk very much, especially the humor. I came here as a professional Scala developer after an interview where I failed to enumerate functional programming patterns I use. I leave kinda disappointed because I use most of these patterns daily anyway. I guess when I'm asked to enumerate functional programming patterns I use again, I'm just going to use the fancy names like continuations, monadic bind and functors.
@solmateusbraga
@solmateusbraga 4 ай бұрын
The guy laughing like a hyena at 4:20... I mean, 4 20. Joke makes itself.
@kevinaguirresanchez2431
@kevinaguirresanchez2431 10 ай бұрын
Thanks for sharing the video with us
@bobslave7063
@bobslave7063 Жыл бұрын
That was epic :D. Thanks a lot!
@TJ-hs1qm
@TJ-hs1qm Жыл бұрын
Joker ??? 😂
@thingsiplay
@thingsiplay Жыл бұрын
I'm more interested into Haskell than F#. This talk is generic enough to be understood. Thank you, very well done.
@kodekata
@kodekata Жыл бұрын
There is a problem with the technique used at 57:40. The Order total is wrong when the code is refactored. Original: 2 * 19.98 + 1 * 1.99 + 3 * 3.99 = 53.92 Refactored: 6 * 25.96 = 155.76
@DevOpsCraftsman
@DevOpsCraftsman Жыл бұрын
Awesome! I never realized that such amount of usefulness was hidden inside ValueObjects until today...
@NonTwinBrothers
@NonTwinBrothers 2 жыл бұрын
The captions at 30:55 lmao
@stas4112
@stas4112 2 жыл бұрын
While I have quite a long way to go until I can properly re-program my brain to think more functionally, this talk really helped spark a couple light bulb moments. Some of the ideas I actually ran back to my company's OOP Enterprise code and implemented, funny enough. Great video, hopefully a couple more of these and I'll have my head wrapped around this crazy functional world :)
@andrzejpurtak6811
@andrzejpurtak6811 2 жыл бұрын
Awesome content! I come from java world and still find it very inspiring
@bobweiram6321
@bobweiram6321 3 жыл бұрын
Functional programming is all BS, summed up as f(BS)! None of these talks illustrate clearly how to use functional programming to solve a the types of problems developers need to solve. They always cherrypick some mathematical problem like Fibonacci sequences. They also emphasize brevity of the code without discussing metrics we really care about such as performance. It's all intellectual masturbation.
@dasprince0
@dasprince0 3 жыл бұрын
Probably the best talk I've watched so far on FP! Explained everything clearly!
@amoljoshi6546
@amoljoshi6546 3 жыл бұрын
Ivan, many thanks for taking efforts to upload this valuable video. Got a new direction of thinking.
@crist2000a
@crist2000a 4 жыл бұрын
I do not follow why some people are so thrilled by FP? At some point it looks simple but I see limitations mostly.
@ivanplyusnin3292
@ivanplyusnin3292 4 жыл бұрын
There is no silver bullet unfortunately, all programming paradigms has its own pros and cons. In the end it depends on project, administrative politics, area of use, your team, your level, tasks etc. But it is better to be aware of all of them in order to choose the most appropriate one in your current situation. P.S. Yeah, seems like functional programming has its own benefits, compared to OO style for example and vice versa.
@gpnryou
@gpnryou 4 жыл бұрын
The only reason mathematicians got there first is because they didn't have computers way before we didn't.
@JMiskovsky
@JMiskovsky 4 жыл бұрын
Wow, great! I think that FP patterns combine nicely with DB in 6th normal forms, since you call functions with included another functions - > You get benefits of right definition what to call. And in some super fast DB where only value pairs are possible you could get super fast code. There is Convergence I think.
@ivanplyusnin3292
@ivanplyusnin3292 4 жыл бұрын
Nice catch. You may try to implement a sample project since practice is the best judge for ideas. Try look at www.anchormodeling.com/about/ for some inspiration.
@JMiskovsky
@JMiskovsky 4 жыл бұрын
@@ivanplyusnin3292 I thought about using Key Value pair DB like REDIS or MemcacheDB. What do you think? Tools you provided link to might be way to MODEL DATA -> USE Key value DB in 6NF WITH Functional programming . Only think is how to store precipitant data. kzbin.info/www/bejne/jWO9aJmYeLGGitk
@KennethKasajian
@KennethKasajian 4 жыл бұрын
you talk about how object-oriented is bad in the example where methods that take a string, expecting an e-mail address, could pass in some other string that's not an e-mail address such as a last name, to present the benefit of value-objects. but then you talk about how interfaces aren't needed in F# because you can functions compatible based on structure. It's a little bit misleading because in object-oriented programming, interfaces are the way you give data stronger type-safe guarantees. The interface from OOP which you seem to down-play *is* the primary mechanism to provide a type .
@DrewRoses2
@DrewRoses2 4 жыл бұрын
One of the best intros do FP, hands down. Every concept is explained in a clear, pragmatic way and on top of that Scott has a great sense of humor!
@ian3084
@ian3084 5 жыл бұрын
This was a very good presentation. But the more i watch/learn about FP the more holes i discover. For very small benefits we add so many not necessary things, complexity, dependencies, ugliness of code, non-uniformity, potential for errors ...
@bmbiz
@bmbiz 4 жыл бұрын
Except it's the exact opposite of most of those things. Keep watching/learning.
@chrisvouga8832
@chrisvouga8832 5 жыл бұрын
Next time take some cough medicine before you give a talk 😐
@TheR971
@TheR971 5 жыл бұрын
That's a very first CS semester talk. And give this man some water!
@whatever63644
@whatever63644 5 жыл бұрын
this is what happens when you invite a standup comedian to a technical conference
@pandiatonicism
@pandiatonicism 5 жыл бұрын
I came for the FP, I stayed for the LOLs.
@richerite
@richerite 5 жыл бұрын
Is there no straightforward way to define NonZeroInteger type?
@NikolaiAleksandrenko
@NikolaiAleksandrenko 6 жыл бұрын
Best talk on FP I've seen. Thank you.
@NicolasJulioFlores
@NicolasJulioFlores 6 жыл бұрын
Alright I'm sort of confused. At 23:19 he talks about how he could rewrite the interface in F# using one function... If the interface is already only one method, and that method only accepts int and returns int. Could he not have just done the same thing in the original language by just ... scrapping the interface?
@MercedeX7
@MercedeX7 6 жыл бұрын
what's with that hohohahaha? 🤔
@xmorse
@xmorse 6 жыл бұрын
brilliant
@PulpFreePress
@PulpFreePress 6 жыл бұрын
Still a great presentation even today. Thanks for posting.
@KubeckiOfficial
@KubeckiOfficial 6 жыл бұрын
Strait to the point - I loved it! :)
@thecount25
@thecount25 6 жыл бұрын
The equivalent of Objects in Functional programming are actually not functions, it's actors.
@akbaralam8683
@akbaralam8683 6 жыл бұрын
That guy man, I guess he is a best friend of the speaker.
@linhe6729
@linhe6729 6 жыл бұрын
Also www.smashcompany.com/technology/object-oriented-programming-is-an-expensive-disaster-which-must-end
@linhe6729
@linhe6729 6 жыл бұрын
Thank you for this great talk!
@Noble_1776
@Noble_1776 7 жыл бұрын
Does List.fold loop or is it a recursive higher order function? He says loop in the video but I am guessing that is just a hiccup and he means recursion but I don't know f#. From my understanding a big part of functional programming is treat data as immutable, so no loops. Is that right?
@REL1C
@REL1C 4 жыл бұрын
There is nothing wrong with loops in functional programming. Recursion is usually just a loop anyway. Look at the source for List.fold for an answer to your question. github.com/dotnet/fsharp/blob/main/src/fsharp/FSharp.Core/list.fs#L216-216
@ZSpecZA
@ZSpecZA 7 жыл бұрын
Actual talk begins at 6:45
@bojanmatic024
@bojanmatic024 7 жыл бұрын
You can't really have something like NonIntegerZero in most languages. This is sort of the limit of even the most powerful static type systems. It is the domain of dependent typing but then you have to give up Turing-completeness...
@mxBug
@mxBug 6 жыл бұрын
no, dependently typed languages like F* and Idris are still Turing complete! diverging (non-terminating) functions are allowed, as long as they're marked as such.
@romanemul1
@romanemul1 7 жыл бұрын
basically many presenters which i have seen so far started introduction into FP same way as the last statement. "Monad is just a monoid....." together with bunch of lines with FP stuff while repeating same words over and over. Monoids, monads, functors, endomorphisms without explaining single word. This guy made this stuff much more clearer. Very good presentation.
@billyclabough9835
@billyclabough9835 7 жыл бұрын
I made it to ivory tower before audience laughter became to annoying
@no_more_free_nicks
@no_more_free_nicks 7 жыл бұрын
Functional patterns allow you to accumulate a lot of calories in your body.
@nvbkdw
@nvbkdw 7 жыл бұрын
who is the guy with wide laughter? since he get every point, must be another FP expert
@jwj410
@jwj410 7 жыл бұрын
Excellent talk
@pneptun
@pneptun 7 жыл бұрын
1) 43:05 I didn't get the error handling part - he showed the code before and after error handling, it was the same, ok great soooo - where was the error handling? where did all the different error messages go? they were different for each error so surely you had to put them somewhere... highly misleading (he suggested 200% extra lines just for error handling, 0 extra lines for error handling in F# - that's what i'm challenging: the code did go into the monads sooo ... it's not like it disappeared ;) 2) 42:26 he got the promises wrong - the promises ACTUALLY SOLVE the pyramid of doom the exact same way bind does :-D he presented it as if they just rewrote it in different words.
@robertomartinez8966
@robertomartinez8966 7 жыл бұрын
In minute 16:00 he talks about a NonZeroInteger that fails at COMPILING TIME, how can we do this in F#? I cannot find anyway to do that.
@robertomartinez8966
@robertomartinez8966 7 жыл бұрын
I post a question in Stackoverflow(stackoverflow.com/questions/45626196/defining-a-non-zero-integer-type-in-f/45635075#45635075) about this matter and all responses revolve around creating a NonZeroInteger type that throws an exception when a zero is passed to constructor, but this can be achieved with any OO programming language so why the video's author claims this as a F# or a functional programming goodness. Honestly I feel tricked.
@mxBug
@mxBug 6 жыл бұрын
F* has refinement types that can do exactly what you're thinking of (among many other static typing features), and can be reduced to F#. www.fstar-lang.org/ But I think you're missing the forest for the trees. Even that example you linked shows how sum types like Option can be used to handle errors _without_ exceptions. If you watch the rest of the talk (or more relevantly, the follow-up talk on error handling vimeo.com/97344498 ) there are many examples of why that property is useful.
@bocckoka
@bocckoka 7 жыл бұрын
Top floor is for Martin-Löf, Idris, Agda, Coq and the like.
@fartzy
@fartzy 7 жыл бұрын
Is it just me, or does anyone else think exceptions are kind of nice. Why do the extra work, everyone knows what divide by zero exception means. Handling exceptions with try catch and doing some custom logic is hardly a new concept.
@bocckoka
@bocckoka 7 жыл бұрын
that's really not the question. the question whether or not to compiler enforces that side effects are handled.
@fartzy
@fartzy 7 жыл бұрын
doesnt the program exit if you want it to
@PaulWalker-lk3gi
@PaulWalker-lk3gi 7 жыл бұрын
I took a lot from this but def started to lose me around 42:00 (although that does look a lot like error handling in node)