4 ms·
I have been programming with c# since 2000 i think. But I do not like where the languages is going. It is becoming way to loose in a sense and it seems that it
by danielovichdk 6y ago
I have been programming with c# since 2000 i think. But I do not like where the languages is going.
It is becoming way to loose in a sense and it seems that it wants more than it should.
If you want to do functional programming, pick a fp language.
If you want to do dynamic typed programming pick a dp language.
Sure you can mix some things in, but c# is becoming way to scattered imo. And it's not pretty i think.
- thrower123 6y agoI think I'm going to get diabetes from all the syntax sugar... On the more substantive changes, it feels a little like the language designers have been looting F#. Combined with how fast Dotnet Core is moving and how many breaking changes there are there, it does feel like things are getting very fragmented. Stasis isn't good either; just witness the decade or so of stagnation after Java 1.6 as the Sun -> Oracle transition happened. But you can go too far in the other direction.
- emodendroket 6y agoI don’t think they’re just randomly throwing stuff at the wall. These are all things they’ve been talking about for years.
- int_19h 6y agoThe C# language design process is very much in the open, so anybody can go and take a look at the rationale etc. https://github.com/dotnet/csharplang https://github.com/dotnet/csharplang
- lostmsu 6y agoI think it suffers from the design by a self-selected committee now. Very little of recent changes have long-term vision behind them now, and seem to be quick patches. Specifically, I just tried disabling 7.0+ features in an open source project I run, and we only actively used pattern matching for "is MyType inst", ref structs (hi Rust!, that one is really fundamental), and natively sized integers (which are still poorly supported by runtime). Other sugar changes have uses across codebase you can count by fingers of one hand. We also use unmanaged function pointers, but the feature appears ugly in many ways. For our purpose, I'd prefer a tiny bit more flexible DllImport (a hook to give it the dll path at runtime) over function pointers.
- int_19h 6y agoYou don't consider the more advanced pattern matching stuff to be "long-term vision"? And it's not surprising that an existing large C# codebase wouldn't use many of those features. But for new projects, they are very nice.
- emodendroket 6y agoYeah, it seems clear to me that the long-term vision is importing a lot of functional features to make using functional patterns/immutable data easier. Which I think is an excellent choice because that stuff is super useful.
- twodave 6y agoFor contrast, I'm looking at the old C#7 and C#8 release notes--I can say our team frequently uses: C# 7 - value tuples - local functions - throw expressions - default literals - out variables C# 8 - switch expressions - using declarations - static local functions - asynchronous streams - null-coalescing assignment - enhance string interpolation e.g. via @$ prefix
- emodendroket 6y agoPeople have been saying this all the way back to when Linq came out, and who could imagine C# without Linq today?
- spaetzleesser 6y agoI think for a lot of devs having a multiparadigm language is the only way to explore new things. For the stuff I am working on it’s not really feasible to add new languages but you can add FP concepts slowly because C# supports it. That would also explain the popularity of C++ because it allows gradual transition.
- sumnole 6y agoPersonally, I enjoy C# becoming a multi-paradigms language like Common Lisp. Multiple inheritance and a good macro system would help close the gap. I don't need safety guards in my language, I'm looking for the right options when I need them.
- int_19h 6y agoWith default methods in interfaces, we already have multiple inheritance of behavior, which is really the interesting part (data can always be aggregated and wrapped).
- ducharmdev 6y agoIf you have the time, I would be curious what your thoughts are on this talk by Bill Wagner. Gives a lot of insight into where C# is headed: https://www.youtube.com/watch?v=aUbXGs7YTGo https://www.youtube.com/watch?v=aUbXGs7YTGo
- JakeStone 6y agoWhen LINQ first came out, I personally remember creating some long rants at the bar with my drinking buddies that we didn't need no stinking FP in our OOP. I now find myself writing half my data processing in LINQ and find myself thankful that I can chain together a few methods on a collection with possible transformation in a line or two rather than having to write 2 or 3 nested loops with all sorts of conditionals. I'm taking the new things that come up in C# as they come, and even the ones I don't care for, I generally end up using to some extent. Go with the flow, or pick another language, would be my suggestion.