12 ms·
Update to the .NET language strategy
- clouddrover 4y agoSounds like Visual Basic will be a second-class citizen going forward.
- lockhouse 4y agoHonestly, most people still using Visual Basic at this point probably aren’t itching for new features. Stability is a feature itself when it comes to legacy code.
- ricksmith1962 4y agoAbsolutely. Saying this as someone who codes 100% in VB supporting applications that are 25+ years old. Honestly, I couldn't be happier with the language strategy as I was wholly expecting VB to be discontinued.
- starik36 4y ago.NET itself is about 20 years old. How are you supporting VB apps that are 25+?
- lolinder 4y agoThey probably migrated some VB6 apps to VB.NET.
- SquareWheel 4y agoI don't see the contradiction. Visual Basic existed before .NET did.
- jp0d 4y agoVisual Basic is more than 40 years old. The .Net version of the language was released somewhere around 2002, if I recall correctly.
- ripley12 4y agoIt has been for a very long time, and that's a reasonable approach IMO. I say this as someone without most of the usual prejudice against VB; I used to work in a large codebase that was half VB.NET and half C#, and didn't mind VB. VB was a little more verbose for some things, but after getting used to the syntax the developer experience was basically the same in each language (yes, with a few small exceptions like XML literals). Ultimately, that's the problem with VB; it's not different enough from C# to really justify significant investments in 2023. There are some die-hards who really like the VB syntax but they're growing ever rarer.
- marssaxman 4y agoVisual Basic had already become a second-class citizen fifteen years ago, when I worked on its compiler team. All the actual design work happened in the C# world, and our job was just to tag along and mimic whatever they had come up with. I had taken the talk of "co-evolution" at face value before going to work there, but after seeing where devdiv actually put its time and attention, that was clearly just a PR story meant to keep VB users comfortable while their language faded away.
- shawnz 4y ago> All the actual design work happened in the C# world, and our job was just to tag along and mimic whatever they had come up with. What's the unique guiding philosophy or use case of VB that would justify developing bleeding edge new language features in VB first? Maybe I am just being overly critical here but I just don't see how the use cases which VB accommodates would benefit from getting new features before C# gets them, and the divergence would create unnecessary pain across the whole ecosystem
- marssaxman 4y agoI always saw Basic as the language for non-professionals who wanted to create their own software: hobbyists, amateurs, small business owners, people who have an idea and want to automate whatever it is they're doing, but aren't trying to write code for a living. C#, by contrast, is a proper mainstream language for professional programmers.
- adra 4y agoReplace basic with Lua and read your line back. Just because a language is simple doesn't mean it can't have industrial purposes by whatever gauge you measure things. Theres a bunch of things I wouldn't use basic for just the same with C# and "popular-language-here". Probably the most used programming language is VBA or maybe the Excel macro if you consider that a language.
- 4y ago
- rqtwteye 4y agoVB.NET should never have happened. It has only superficial similarity with VB6. It was sold as upgrade path from VB6 but that never worked.
- paranoidrobot 4y agoPerhaps, but I think it offered people who didn't have exposure to C-like language syntax, an easier upgrade path for their own skills. I was writing stuff in VBA and a little VB6. The move to VB.NET was made easier because of the synax similarities. My move from VB.NET to C# was made easier because by then I understood the framework, and it was just a matter of learning the syntax differences. Maybe that's not such a big deal with a lot more people having exposure to C-like syntax languages like Javascript.
- cm2187 4y agoI followed the same path. Muscle memory is a big deal. Muscle memory is what makes you productive. It’s why those syntactic things actually matter.
- cm2187 4y agoI disagree. It only broke backward compatibility with VB6 when VB6 didn’t make any sense. Like byref arguments by default, or the useless “set” keyword, or collections being inconsistently 0 or 1 based, stupid constraints on what types you can expose as a field or property in a class, or no way to distinguish empty strings and null. Having done the transition from VB6 to VB.net, yes there were a few things to learn but that was the only way to move on from legacy design choices.
- pjmlp 4y agoI am more radical, .NET should never have happened, rather the original Ext-VOS idea with COM instead of trying to build on top of Java ideas. VB6 was AOT compiled and used COM as its component model, C# should have been similar but for C++ folks, basically what .NET Native came to be. However they really botched UWP execution, when it could have been the proper .NET reboot back to Ext-VOS roots.
- mkozlows 4y agoTLDR: C# is our real language. F# is a thing that gets supported to the extent that unpaid volunteers do the work. VB is in back-compat legacy support mode.
- jjtheblunt 4y agoHuh? F# has Microsoft Research building it and its libraries and optimizing compilers, no?
- eyegor 4y agoLast time I talked to them, the entire f# team at Microsoft was still fewer than 10 people. Language features, lsp modules, visual studio support, etc. They do technically exist but it's far from a focus at ms.
- unclad5968 4y agoI think GP gave a cynical, but fairly accurate summary. If F# is worked on by MS research, they certainly didn't communicate that in the strategy they just published. C# >We will keep evolving C# to meet the changing needs of developers and remain a state-of-the-art programming language. We will innovate eagerly and broadly in collaboration with the teams responsible for .NET libraries, developer tools, and workload support, while being careful to stay within the spirit of the language. F# > We will drive F# evolution and support the F# ecosystem with language leadership and governance. We will encourage community contributions to improve the F# language and developer experience.
- curiousgal 4y ago2022 I started a new job where we mainly use C# and I have to say, this is my favorite language now, especially with Visual Studio and Reshaper. I've never felt so productive and at ease while coding!
- Someone1234 4y agoI, too, like C#. What language did you come from? Java?
- curiousgal 4y agoR actually haha Used to be a statistician!
- mythz 4y agoIf you like R#, you'll love JetBrains Rider.
- Kwpolska 4y agoRider is even cooler, with all the magic from ReSharper, and the much saner IntelliJ user interface.
- madeofpalk 4y agoMicrosoft should be embarrsed at how good Rider is.
- deleted 4y ago[deleted]
- BenGosub 4y agoHow well are F# and C# supported on the Linux platform?
- rqtwteye 4y agoWe have been running .NET Core C# on Linux servers for quite a while now. Works great.
- kcb 4y agoFirst class. I would wager that most new .NET projects are primarily targetting Linux for deployment.
- viraptor 4y ago* for serverside
- kcb 4y agoYea I'm guessing there's not a ton of fresh WPF or forms desktop apps being created. We've mostly moved to ASP.Net backends with React frontends wherever possible.
- viraptor 4y agoOh, there's definitely a huge amount of wpf and winforms created every day. That's what I meant. Those people just don't visit HN that often. (Then again, I created 4 windows specific wpf apps last year...)
- jameshart 4y agoUnity3D is probably one of the most widely used cross platform native app development platforms, and it’s taking c# .net code to Linux, macOS, android, iOS and browsers via wasm.
- mythz 4y ago
- jimbob45 4y agoDon’t they offer C++ on .NET to some degree? I know it’s not supported on the same level as C# but it’s still there, is it not?
- JonathonW 4y agoThat's C++/CLI; it's still around but isn't really a priority nor is it considered a "core" .NET language these days (it's an optional install in VS2022): https://learn.microsoft.com/en-us/cpp/dotnet/dotnet-programming-with-cpp-cli-visual-cpp https://learn.microsoft.com/en-us/cpp/dotnet/dotnet-programm...
- malkia 4y agoAFAIK, it relies on MSVC and OS specifics, hence may never see the light beyond MSVC/Windows. There were several big github issues of folks converting from C++/CLI to other ways.. Actually this survey from 2020 - https://github.com/dotnet/runtime/issues/40484 https://github.com/dotnet/runtime/issues/40484
- pjmlp 4y agoIt belongs to WinDev, not DevDiv, hence the difference.
- zengid 4y agoHot take but I wish they’d start a new lang in the spirit of what’s happening in swift/Kotlin instead of evolving C#. I use it everyday. I love the new pattern matching, it simplifies a lot of gnarly reflective type checks and feels good. Records are nice too. I see discriminant unions are coming soon. But they’re painting themselves into the corner in terms of syntax and overcoming OOP defaults. A fresh start would be incredibly expensive and risky, but it would bring in a lot of excitement and fresh faces. /rant
- Arnavion 4y ago.Net itself is fundamentally OOP. Lambdas are implemented as classes with an Invoke method, F# enums are implemented as classes with variants as subclasses, etc. So if "overcoming OOP defaults" is the goal then making a new .Net lang that isn't OOP doesn't achieve much. So it would have to be either be a new native language, or a new managed language that also comes with a whole new managed runtime. For the former, Rust is already satisfying that need within Microsoft. For the latter, there's even less demand both inside and outside.
- zengid 4y agoYeah I argree, making a new lang for a vm runtime doesn’t make as much sense when rust is right there, because the vm itself has a lot of baggage and limitations (OOP baked in, start up time,etc). The dotnet team seems to be moving mountains to squeeze more performance out of the VM, which is awesome, but how much further can it go?
- andsoitis 4y agoproductivity on the CLR and JVM is light years ahead of that in Rust. Rust has its niche, but it isn’t superior to broad surface that the managed runtimes provide leverage for.
- BenGosub 4y agoHow come classes are being used in a functional language?
- bmitc 4y ago> F# explores new language possibilities and the community provides a rich experience across platforms. There are several interesting observations to be had here. For one, F# already explored (past tense) new language features and has long been essentially feature complete. It gets little features here and there, which are generally quality of life type of things (like anonymous records, for example). Another interpretation is that F# is just viewed as a .NET/CLR playground and prototype lab to bring features into C#. This is already a common sentiment, but it looks like Microsoft just came out and said it here. I'll need to read their full strategy, but the blog post is just the same old story: C# is everything, we'll limp along F# with the community doing most of the work, and, oh yea, Visual Basic. I read through the F# strategy documents, and there's not really anything of substance there. I'm also not sure it's in F#'s best interest to be forced to comply with new C# features (of course F# needs to adopt new .NET features though). F# already does not support several C# features, for good reason, maintaining only what it needs for interoperability purposes. This just furthers the idea that F# is C#'s playtoy. It's all unfortunate. F# is one of the best designed modern languages around. I wish people would embrace it like Elixir has been embraced. F# could truly be one of the more popular languages and doesn't have to be used at just ".NET shops".
- BenGosub 4y agoThey should release a roadmap, instead of this bland talk about strategy.
- mastax 4y agohttps://themesof.net/ https://themesof.net/
- justin66 4y ago> I wish people would embrace it like Elixir has been embraced. F# is a lot more popular than Elixir.
- bmitc 4y agoI'm not sure about that given the amount of jobs I have had and found in Elixir, which also has a more vibrant ecosystem. I have strong confidence that I could get another Elixir job. I would be surprised if I could even locate an F# job.
- debacle 4y agoI read the whole thing and the linked update and I still feel like I need a tl;dr.
- lacker 4y agoTLDR no changes. Of the .net languages, Microsoft will continue mostly caring about C# but also supporting Visual Basic and F#.
- deleted 4y ago[deleted]
- hakanderyal 4y agoTo everyone not closely following .NET and think it’s some enterprise thing focused on Windows: It’s fully cross platform now and works flawlessly on Mac/Linux for backend work. Entity Framework Core has become a great ORM that’s getting better every year. It’s in a great place to develop your next startup/project in. I’ve switched from Python to C# last year and couldn’t be happier.
- hardware2win 4y agoThere are more important things like: You get consistent ecosystem with top tooling, strong standard base class libs and good UX.
- andromaton 4y agoI think the update basically announces VB is frozen, long live VB.
- culopatin 4y agoDoes anyone have any good resources to learn C# and the new net ways for someone who’s self taught and primarily codes simple tools in python? I need it for work and I get by refactoring old code, but I don’t really know how to make things better here