Тёмный

Stay with C# or switch to F#? Let's fight! Let's vote! - Vagif Abilov & Max Arshinov 

NDC Conferences
Подписаться 192 тыс.
Просмотров 2,9 тыс.
50% 1

This talk was recorded at NDC London in London, England. #ndclondon #ndcconferences #developer #softwaredeveloper
Attend the next NDC conference near you:
ndcconferences.com
ndclondon.com/
Subscribe to our RU-vid channel and learn every day:
/ @NDC
Follow our Social Media!
/ ndcconferences
/ ndc_conferences
/ ndc_conferences
#dotnet #csharp #fsharp #functionalprogramming
We are two developers with a long experience in OOP, and in the .NET world it means C#. Both of us later discovered functional programming, and in the .NET world it means F#. One of us was convinced to make a switch to F# with its immutable data and terse syntax and never looked back. The other one was convinced that the evolution of C# and adoption of FP elements make it a solid language to take advantages of both paradigms. Perhaps both of us are right in our choices but what would YOU do?
Come to our session, and you will become our judge. You will be presented a series of small tasks with solutions in both languages, and you will vote for a winner in each category. Perhaps yo can make a choice for your own future?

Наука

Опубликовано:

 

12 май 2024

Поделиться:

Ссылка:

Скачать:

Готовим ссылку...

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 41   
@striker865
@striker865 27 дней назад
F# is so concise and pleasant to work with
@TheUArabej
@TheUArabej 26 дней назад
Funcional bros - stand up
@aguluman
@aguluman 19 дней назад
We up.
@WillEhrendreich
@WillEhrendreich 23 дня назад
How have you guys not talked about the best part of fsharp? TYPE INFERENCE. seriously. I'd take Hindly Milner type inference over almost any feature. not having to babysit the compiler is the most amazing speed multiplier in code.
@WillEhrendreich
@WillEhrendreich 23 дня назад
this is also an objectively superior feature, it's a land slide victory in fsharp's favor, csharp has nothing to answer it.
@maxarshinov
@maxarshinov 23 дня назад
We had to cut it out because of the time constraints;)
@WillEhrendreich
@WillEhrendreich 22 дня назад
@@maxarshinov gotta pick which seem like the most useful issues to bring up, I understand. I just think it might be more of a win than most people realize, and is the thing that I miss most when I use csharp. The ability to let the compiler do the mental gymnastics of figuring out how to make the function signatures fit together is incredibly helpful for composability. Csharp's compiler doesn't help you make composition easier, it's a pedantic "uhm ackshually" jerk that will refuse to do anything until you've got it's magic secret code words spelled out and pronounced correctly. It will gladly tell you you're wrong, though not exhaustively check everything you'd like. It will tell you you're not passing the right thing around but it's up to you to figure out what will make it happy, when in the same situations it's clear to fsharp's compiler what you wanted from the beginning, and like a true pal, just says, "alright, I see what you're getting at, let me just adjust this automatically for you, make sure things are good to go and safe under the hood, you just keep exploring the actual problem you set out to solve, I'll do the drudgery for you. I'm a computer after all, that's what I'm good for. "
@aguluman
@aguluman 19 дней назад
​@@WillEhrendreichHi Will.
@WillEhrendreich
@WillEhrendreich 19 дней назад
@@aguluman haha hey man!
@carlosleyva-calistenia6400
@carlosleyva-calistenia6400 20 дней назад
I have found only one reason to use C# over F# and that's the lack of partial class support. Yes, I'm aware about type extensions and whatnot and I like them way better, but some fringe cases really require partial classes for some technical reasons I forgot (like Godot 4.x). Other than that, everything that can be done in C# can be done in F#, but it's way easier to reason about and there's less noise distracting me from the things that actually matters: the algorithms.
@aguluman
@aguluman 19 дней назад
Thanks for the feedback. The community appreciates it.
@benttranberg2690
@benttranberg2690 19 дней назад
C# adopting features from F#/FP is not going to turn it into a language that can compete with F#, unless it is somehow morphed into F# in time. That, obviously, makes no sense when we already have F#. If you are a C# developer that wonders whether F# is worth the bother - just try it. If you don't like the boost in productivity, the increased quality, the reduced verbosity and complexity, the improved architecture, the power, and the pure joy of not wasting time... well, fair enough. At least you have plenty of work.
@robhunt8378
@robhunt8378 24 дня назад
When you have to rely on heavy mutability => C# For pretty much everything else, F# is what Microsoft wishes C# could be.
@asedtf
@asedtf 19 дней назад
I can't believe they managed to get all 5 F# developers to attend the same talk
@aguluman
@aguluman 19 дней назад
😂😂😂😂😂😂😂😂😂😂😂😂😂😂😂. You guys kill me.
@Gr3gB311
@Gr3gB311 6 дней назад
FIA! There are SIX of us!
@aguluman
@aguluman 5 дней назад
@@Gr3gB311 whats the full meaning of FIA?
@KarenTazayan
@KarenTazayan 19 дней назад
Interesting, thank you!
@chewbaccarampage
@chewbaccarampage 25 дней назад
If you're considering FP, I would recommend Richard Feldman's 2021 talk called Functional Programming for Pragmatists over this talk. These OOP vs. FP talks aren't very helpful because they don't address the software qualities that each tool (i.e. programming language) produces over time. It's like arguing that a sledge hammer is better than a ball peen hammer. They both are useful under certain situations.
@aguluman
@aguluman 19 дней назад
Just downloaded it will watch soon.
@slyredbeard
@slyredbeard 27 дней назад
What was the exception handling library that Max mentioned?
@talwald1680
@talwald1680 27 дней назад
Polly - only for http error handling
@slyredbeard
@slyredbeard 26 дней назад
@@talwald1680 Ah, i know that one ). Thank you very much!
@anreton
@anreton 26 дней назад
​@@talwald1680Polly not only http error, btw
@GlibVideo
@GlibVideo 25 дней назад
Really??? People is afraid of computation expressions? Unfortunate
@thomasbittner1009
@thomasbittner1009 25 дней назад
I'm almost afraid to bring this up, but here it goes: For me, the biggest disadvantage of F# is that it forces me to use spaces for indention. I don't want to start a tabs vs. spaces flame war here, but at least, I'd like to have the choice. Especially for visually impaired developers, this is a game changer, and forcing spaces for indention borders on discrimination. (Yes, I know there is an option in F# to use tabs if you really want to, but it comes with so much baggage that it's almost unusable.)
@chewbaccarampage
@chewbaccarampage 25 дней назад
I use to hate this, but then we use to struggle to get the team to be consistent with C#. Even with a .editconfig, the team had to manually structure the code in order to get consistency, but over time things would end up inconsistent. F#, although a bit heavy-handed, forced the team to use a consistent style. We don't think about it anymore and the code is guaranteed to be formatted consistently otherwise the compiler will bark at you. The biggest feature of only being able to call code defined above has been amazing. We spend more time solving the problem at hand and less time on formatting consistency. I use to unfairly argue that the team wasn't discipline, but it's human nature to do the "fast" thing and so entropy will eventually take over, but having the compiler force you in one direction, is like a big stick that forces you to be discipline.
@aguluman
@aguluman 19 дней назад
Do you all get employed as C# devs and turn to F# devs or you are all employed as F# devs from the get go?
@aguluman
@aguluman 19 дней назад
​@@chewbaccarampageI love your comment.
@chewbaccarampage
@chewbaccarampage 19 дней назад
@@aguluman C# dev shop, but had support from leadership to switch to F# after making a business case for it. Mutability was abused too much and state management bugs became an issue, so basically suggested we remove mutability too see how it would go. After a year, things have improved dramatically, but on-boarding is a big challenge. Getting the team to use data and composition has been a mental shift over mutable objects.
@aguluman
@aguluman 19 дней назад
@@chewbaccarampage Can I join your team. Pretty Please. I know how to think, when using F#.
@diegoX6Turbo
@diegoX6Turbo 27 дней назад
C# rules forever
@TheStickofWar
@TheStickofWar 27 дней назад
It’s weird to even compare. An OOP language with a syntax that everyone can be easily comfortable with. And F#, a functional language which is great for domain modelling and well.. functional programming. I would use both.
@obinnaokafor6252
@obinnaokafor6252 26 дней назад
@@TheStickofWar C# is a multipurpose and multi-domain programming language, with a great blend of OOP and FP capabilities. C# is also fantastic for domain modelling. What the authors were trying to do is just sell f#, instead of focusing on educating upcoming programmers. lol
@KurtMueller
@KurtMueller 26 дней назад
@@TheStickofWar you can call any c# code from f# and even define classes and use inheritance in f#.
@WillEhrendreich
@WillEhrendreich 23 дня назад
Have you written non-trivial software in fsharp? Have you talked to people who have written in a good amount of both, and asked them which they prefer? Honestly I have asked this question a lot, and I've heard of only 1 person who someone from twitter knew from working with him in the past, who genuinely preferred csharp after writing fsharp. Why did he prefer it? Because he liked a more verbose language. That was it, that was his self reported selling point, that in the grand scheme of things he liked writing more code to do the same thing... in which case, sure.. yep.. in that exact instance, csharp surely wins. However, as far as literally everyone else I've talked to who has done both in earnest, fsharp is named to be the clear winner, in their mind. Don't knock it till you tried it.
Далее
skibidi toilet multiverse 038
06:38
Просмотров 6 млн
Creepy Teacher Kidnapped My Girlfriend?!
00:42
Просмотров 4,6 млн
What’s new in C# 13 | BRK186
46:27
Просмотров 32 тыс.
Joscha at Microsoft
48:46
Просмотров 2,8 тыс.
Ryan Dahl introduces JSR at DevWorld 2024
29:13
Просмотров 94 тыс.
What’s the Result Type Everyone Is Using in .NET?
14:47
Delivering Safe C++ - Bjarne Stroustrup - CppCon 2023
1:29:16
Новая материнка без USB!!
0:39
Просмотров 37 тыс.
Nvidia Titan
0:48
Просмотров 159 тыс.
POPVIBE V5000 setup ASMR
0:26
Просмотров 331 тыс.